文件共享势力无法档 9行代码写出P2P程序

王朝other·作者佚名  2006-01-09
宽屏版  字体: |||超大  

TinyP2P是一个实用的点对点文件共享应用程序,由Ed Felten博士用Python语言编写而成。而它令人称奇之处,是它仅仅包含了15行代码!作者称,他写TinyP2P只是为了阐明编写点对点应用程序的难度罢了。P2P程序可以非常简单,一个熟练的程序员随便都可以写出来,所以,任何阻止他们创作的行为都将是徒劳无功的。

(每一行都多只有80个字母。第一行不算--它只起注释之用,计算机在读入的时候会忽略它)

当然,作者编写这一程序并非为了方便别人侵犯版权,他自己也不能宽恕侵犯他人版权的举动。这一程序的设计初衷并没有协助文件共享之意,它存在价值主要在于它是一个概念的实现。一个更为实用的程序速度必须更快,更安全,对连接失败的处理机制更为完善,但那一目标的实现需要更多行代码。(TinyP2P的源代码可以由下面的链接处下载)

工作原理:程序创建了一个小型的网络,可以用于一群朋友或者商业伙伴之间共享文件。它不适用于非常大的网络;相反,许多小型网络可以共存。每一个网络由一个密码保护;只有知道网络密码的人才可以访问它。(但是网络对于窃听信息的攻击者而言是毫无安全性可言的。)

程序使用标准的通讯协议:HTTP和XML-RPC。HTTP就是在网页浏览器中普遍使用的协议,XML-RPC则在提供网页服务方面被广泛应用。

程序可作为服务端,也可作为客户端。当作为服务端运行时,程序与一个网络中的其他服务端联接,共享当前目录中的所有文件,以供网络用户下载。

尽管如此,TinyP2P毕竟还使用了一个现成的XML-RPC服务端类库。另一个文件共享程序--MoleSter更令人吃惊:它仅仅由9行Perl代码构成,而且只应用了TCP协议。新版本MoleSter0.0.2以最小的形式发布:仍然是9行,但字节数少了,只有543个字节(0.0.1版为625)。

源代码:

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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有