天天看点

090820项目进展:了解内网p2p软件共享机制

1,实验了一下,如果要下载一个资源,需要在得知这个资源的类似URL字串(私下告知,BBS发布,邮件发布等等),一个例子:

xp2p:192.168.0.2:5000:filename.avi:someidbyMD5dad

如例子所示字串由五部分组成,分别是:

xp2p:             192.168.0.2:5000:filename.avi:someidbyMD5dad

自定义协议头:   ip                :port : filename     :client程序生成的MD5串。

通过wireshark抓包分析:

a,发出udp包,携带了另一个应用层协议,拷,内网不能上外网当时没有马上查资料,居然把这么重要的一个东西给忘了。

b,这个应用层协议携带一个body,wireshark可以看见其中包含本机的hostname,另外一个是MD5串,还有一些<nums>5</nums>字样的信息。

c,没有迹象表面我的client去链接了某一个特定的服务器,client活动期间localhost只向外发生了一个包,desIP是串中的ip,desPort是串中的Port,这说明这种协议没有一个处理交换list的服务器,下载连接的方式完全依靠串进行。

d,基于c的描述,又是怎么样实现多点网络状的下载模式呢?A公布了他的 xp2p串,B,C,D都使用这个串去下载,B是怎么连到C的呢?猜想A在这个时候就是一个server,这个问题是需要好好分析的。

2,实验共享一个文件。

wireshark根本没发现有包发出去。

a,说明共享的时候也根本没有我猜想的去服务器注册告知的步骤。

b,共享一个文件后,完全依靠在BBS处公开自己的串,让别人来主动下载。这样就是说,谁提供共享文件,谁就提供串号,谁就完全被动被链接,谁就在分布p2p下载的时候作为其他client相互连接分块管理的server。

c,综合第一项基本可以肯定本机上的这个小exe文件既是server有是client了。

3,使用自己先共享一个文件,得到串码后,自己再下载。

wireshark没有发现任何包。

程序检测出是自己的时候可能就去走回环地址,我所探测的网卡上就看不见包了。

4,内网p2p下载工具和eMule的不同

内网p2p的优点:

y1,完全不依赖list server作为peer的寻址途径,彻底没有固定可被攻击(技术或法律)的server了;

y2,完全可以在任何内网使用。

内网p2p的缺点:

q1,不便于搜索;

5,我想实现的搜索功能该怎么实现呢?

a,在集中发布信息的BBS上搜索。目前不太可行,一则现在在BBS上公布的资源不多;二则时效性特别差。总之是现在用的人太少,发布的信息也太少。

b,探测网段的特定Port。目前我在共享一个文件时,Port一般是不做修改的,默认是5000,80%都会这样操作,但是还有两个问题需要解决:

q1,如果不是5000怎么办?候选方案:搜索其他不变的属性,比如应用层的那个协议特征,这个比较难啊,我不是netgate我怎样探到A的包?;

q2,即使搜索到是打开的,如果获取A上共享的资源呢?-->获取活动包的文件名?但是文件名是根本不在网上传播的,网上传播的只有MD5码。

总之,很难搜索。

6,今后几天可以做些实验

t1,不同ip之间A和B的下载码流信息。

t2,A共享,B连A,之后C连A,B和C是如何交流的。

t3,继续t2,关掉A,B和C是如何继续的。

继续阅读