Tiny p2p

2612.04


Y cito:

# 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"))

Ed Felten ha escrito Tiny p2p, la aplicación para intercambiar ficheros más pequeña del mundo: quince líneas de código en Python de menos de 80 caracteres cada una. La primera que ven aquí es para el ser humano que la lea pero no cuenta para la máquina. El objetivo es demostrar la imposibilidad de controlar las aplicaciones p2p: son fáciles de crear, están al alcance de programadores de nivel medio, y cualquier intento de prohibirlas no dará ningún fruto duradero. Via The Technology Liberation Front.

[Según nos cuenta jwhn en comentarios, en respuesta a la aplicación de Felten hay quien ha producido una aún más corta, Molester, que consiste solamente en seis líneas de Perl:

$/=$_;$,=shift;$w=$a=shift;$k{+shift}=1;socket S,2,1,6;bind S,&a;for(listen
S,5;$SIG{ALRM}=\&i;m! (\S+) ([e-i])([^/]*)/!s&&($k{$w=$1}=$,eq$`)&&&$2){alarm
3;(accept(C,S),alarm 0)?read C,$_,1e6:($_="$, $a f".shift)}sub i{}sub t{socket
C,2,1,6;$k{$w}&&=(connect C,&a)?print C"$, ".pop:0;close C}sub h{t"$_ i/"for
keys%k}sub a{$w=~/:/;pack'CxnC4x8',2,$',split'\.',$`}sub f{$w=$_,t"$1 $3/"for
keys%k}sub e{open C,'>',$3;print C $'}sub g{open(C,'<',$3)&&t"$a e$3/".;&h}

A este paso la cosa quedará simplemente en "42". Más, mañana...]

  |  Del.icio.us me  |  Menéame



Comentarios:

!!!
Ahora falta probarlo...

Puesto por ColdWind en Diciembre 26, 2004 02:46 PM

Hmmm, creo que MoleSter con sus 6 líneas de código de Perl le ha ganado :P

Salud.

Puesto por jhwn en Diciembre 26, 2004 08:07 PM

No se ustedes pero, para mí, Molester es ilegible. Por lo menos entiendo lo que se quiso hacer en con TinyP2P en Python, pero en Perl no paso de la primera línea.

Puesto por Carlos en Diciembre 27, 2004 05:21 PM

elastico_recomienda.jpg
neural.jpg


minielastico.jpg


CopyFight Files: nuestro proyecto paso a paso

  

  

  



especiales_de_la_casa.jpg
POR FAVOR, ¡PIRATEEN MIS CANCIONES!
Por qué son más rentables 100.000 fans piratas que llenen mis conciertos a 10.000 originales.

CUANDO LA SGAE DESPERTÓ, LA TECNOLOGÍA TODAVÍA ESTABA ALLÍ
que la música sea gratis para ustedes, los consumidores, no significa que los artistas no podamos ganar dinero con ella

POLITICAL GAMES: DE ESCAPE FROM WOOMERA A UNDERASH
La industria del entretenimiento ha desviado la propaganda de guerra del cine a la consola.

EL MERCADO DE LAS IDEAS
Las buenas ideas estan en todas partes. Patentarlas es la mejor manera de evitar su materializacion.

LA MUERTE DEL PERIODISMO Y OTROS CUENTOS APOCALÍPTICOS
Es verdad, el periodismo está en crisis. Pero es una crisis que debemos celebrar.