专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »p2p技术 » 无法阻挡:共享势力无法阻挡 9行代码能写小型P2P(点对点)程序 »正文

无法阻挡:共享势力无法阻挡 9行代码能写小型P2P(点对点)程序

来源: 发布时间:星期三, 2008年12月17日 浏览:2次 评论:0
  TinyP2P是个实用点对点文件共享应用由Ed Felten博士用Python语言编写而成而它令人称奇的处是它仅仅包含了15行代码!作者称他写TinyP2P只是为了阐明编写点对点应用难度罢了P2P可以非常简单个熟练员随便都可以写出来所以任何阻止他们创作行为都将是徒劳无功

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

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

  TinyP2P源代码可以由下面链接处下载:http://www.freedom-to-tinker.com/tinyp2p.py

源码如下:
# 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.(sys.argv[1],u).hexdigest,re.search)
pxy,xs = (xmlrpclib.ServerProxy,SimpleXMLRPCServer.SimpleXMLRPCServer)
def ls(p=""): filter(lambda n:(p"")or res(p,n),os.listdir(os.getcwd))
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=): ([(y in prs) or prs.append(y) for y in x] or 1) and prs
  def c(n): ((lambda f: (f.read, f.close))(file(n)))[0]
  f=lambda p,n,a:(ppw(myU))and(((n0)and pr(a))or((n1)and [ls(a)])or c(a))
  def aug(u): ((umyU) 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],(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"))


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

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

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

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

相关文章

读者评论

  • 共0条 分0页

发表评论

  • 昵称:
  • 内容: