Programy P2P nie do wykorzenienia
Sam autor najmniejszego programu P2P na świecie potwierdza to, mówiąc „Nie stworzyłem go jako wyrazu poparcia dla łamania praw autorskich. Chodzi mi jedynie o pokazanie jak prosta koncepcja leży u podstaw aplikacji P2P i jak bezsensowne może być zabranianie ich tworzenia”.
Trzy lata temu Edwardowi Feltenowi groził proces, którego wytoczenie zapowiedziała ameryka?ska RIAA. Stało się to po tym, jak organizacja opracowała technologię „znaków wodnych”, która miała chronić muzykę przed nielegalnym rozpowszechnianiem i zachęciła hackerów do prób złamania jej. Felten udowodnił, że technologia nie jest wiele warta, zanim jednak zdołał zaprezentować wyniki swoich bada? zagrożono mu i jego pracownikom procesem sądowym. Projekt technologii zarzucono niedługo później.
Poniżej źródło wspomnianego programu:
# 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"))
?ródło: CDprojekt.info