TinyP2P : le plus petit logiciel de P2P du monde

Guillaume Champeau - publié le Jeudi 16 Décembre 2004 à 08h55 - posté dans High-Tech

Le professeur Ed Felten a diffusé mercredi une application P2P qui tient en seulement 15 lignes de code : TinyP2P.

Programmé en Python, TinyP2P fonctionne bien sûr exclusivement en ligne de commande, et selon son inventeur Ed Felten, "le programme est principalement utile pour prouver le concept". "J'ai écrit TinyP2P pour illustrer la difficulté de réguler les applications peer-to-peer", ajoute t-il. "Les applications peer-to-peer peuvent être très simples, et n'importe quel programmeur modérément doué peut en écrire une, donc tenter de bannir leur création serait infructueux".

Le professeur Felten s'était fait connaître en cassant l'initiative SDMI, un projet de DRM uniformisé entre toutes les industries, depuis abandonné. Le groupe avait lancé un défi aux hackers qui parviendraient à casser leur système qu'ils pensaient inviolables. Edward Felten, professeur à l'université de Princeton, avait alors non seulement relevé le défi, mais en plus annoncé qu'il publierait les résultats de ses travaux. Dans sa grande bonté, la SDMI et la RIAA avaient décidé de porter plainte contre le chercheur, avant que l'affaire ne se règle finalement hors tribunal, sous la pression médiatique.

Ci-dessous, le code-source de TinyP2P :


# tinyp2p.py 1.0 (documentation at http://freedom-to-tinker.com/tinyp2p.html)
import sys, os, SimpleXMLRPCServer, xmlrpclib, re, hmac # (C) 2004, E.W. Felten
ar,pw,res = (sys.argv,lambda u:hmac.new(sys.argv[1],u).hexdigest(),re.search)
pxy,xs = (xmlrpclib.ServerProxy,SimpleXMLRPCServer.SimpleXMLRPCServer)
def ls(p=""):return filter(lambda n:(p=="")or res(p,n),os.listdir(os.getcwd()))
if ar[2]!="client": # license: http://creativecommons.org/licenses/by-nc-sa/2.0
myU,prs,srv = ("http://"+ar[3]+":"+ar[4], ar[5:],lambda x:x.serve_forever())
def pr(x=[]): return ([(y in prs) or prs.append(y) for y in x] or 1) and prs
def c(n): return ((lambda f: (f.read(), f.close()))(file(n)))[0]
f=lambda p,n,a:(p==pw(myU))and(((n==0)and pr(a))or((n==1)and [ls(a)])or c(a))
def aug(u): return ((u==myU) and pr()) or pr(pxy(u).f(pw(u),0,pr([myU])))
pr() and [aug(s) for s in aug(pr()[0])]
(lambda sv:sv.register_function(f,"f") or srv(sv))(xs((ar[3],int(ar[4]))))
for url in pxy(ar[3]).f(pw(ar[3]),0,[]):
for fn in filter(lambda n:not n in ls(), (pxy(url).f(pw(url),1,ar[4]))[0]):
(lambda fi:fi.write(pxy(url).f(pw(url),2,fn)) or fi.close())(file(fn,"wc"))


En savoir plus sur TinyP2P :

http://www.freedom-to-tinker.com/tinyp2p.html
 
Publié par Guillaume Champeau, le 16 Décembre 2004 à 08h55
 
 
2
Commentaires à propos de «TinyP2P : le plus petit logiciel de P2P du monde»
 
mais je n'arrive pas a comprendre se que fais ce logiciel dite moi voici mon adrrese 19.pepe@live.fr sa me ferrai plaisir d'echanger avec un expert dans cette matierre
Convenons que l'intérêt reste très limité, ça reste juste un cas d'école.
Télécharger
Stinger
Antivirus - Antivirus de secours
 
Orb
P2P Privé (entre amis) - Accèder à vos fichiers à distance
 
DVD fx
Lecteur audio et vidéo - Lecteur de DVD avec options de catalogue
 
Microworld Antivirus Toolkit Utility
 
Décembre 2004
 
Lu Ma Me Je Ve Sa Di
29 30 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 1 2
3 4 5 6 7 8 9
Matoumba
EntrepreNantes
Numerama est un site du réseau PressTIC