petitebanx.jpgion.jpgescolar.jpgbiblioteca1.jpg

Diciembre 26, 2004

Tiny p2p

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...]

El quinto Elastico
Comentarios

!!!
Ahora falta probarlo...

Puesto por ColdWind a las 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 a las 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 a las Diciembre 27, 2004 05:21 PM





copyfight_thumb.gif




Más Proyectos Elásticos
free_culture-thumb.jpg
Free Culture en español


GET CREATIVE
getcreativesmall.gif
Un vídeo CC
sobre el Copyleft




Patrocinador



Especiales y Agenda
artfutura04.jpg
artFutura 04

ars2004_thumb.jpg
ARS electronica 04

artfutura.jpg
artFutura 03

arslectronica.jpg
ARS electronica 03

entrevistas-thumb.jpg
entrevistas


Categorías

Archivos


Enero 2006
D L M X J V S
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        


Creative Commons License
Este blog es copyleft y se acoge a la licencia Creative Commons.


XML

Creado con
Movable Type 3.15
Estadí­sticas