一种用于eMule网络的文件资源信息采集方法转让专利

申请号 : CN201310204527.1

文献号 : CN103354554B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 程学旗冯凯刘备田红志王元卓陈雷刘悦

申请人 : 中国科学院计算技术研究所

摘要 :

本发明提供一种用于eMule网络的文件资源信息采集方法,包括下列步骤:1)初始化文件集合;2)遍历所述文件集合,对于每个文件,搜索共享过该文件的活跃客户端的地址信息,得到活跃客户端集合;3)对于活跃客户端集合中的每个活跃客户端,探测该活跃客户端所共享的文件列表;4)根据所探测的活跃客户端所共享的文件列表,更新所述文件集合,返回执行步骤2);重复执行所述步骤2)~4),得到文件索引表,该文件索引表中记录出现在所述文件集合中的每个文件及其对应的活跃客户端地址信息。本发明能够全面获取eMule网络上所有文件的索引;能够获得eMule网络中各个文件资源的活跃度信息,从而为进一步的监控提供依据。

权利要求 :

1.一种用于eMule网络的文件资源信息采集方法,包括下列步骤:

1)初始化文件集合;

2)遍历所述文件集合,对于每个文件,搜索共享过该文件的活跃客户端的地址信息,得到活跃客户端集合;将出现在所述文件集合中的每个文件及其对应的活跃客户端地址信息加入文件索引表中;

3)对于活跃客户端集合中的每个活跃客户端,探测该活跃客户端所共享的文件列表;

4)根据所探测的活跃客户端所共享的文件列表,更新所述文件集合,返回执行步骤2)。

2.根据权利要求1所述的用于eMule网络的文件资源信息采集方法,其特征在于,所述步骤2)中,遍历过程包括下列子步骤:

21)取出文件集合中的一个资源文件作为当前文件,获取当前文件的哈希值;

22)使用文件哈希值在eMule网络中进行搜索,得到共享过该当前文件的客户端的地址信息;

23)判断步骤22)所得到的共享过该当前文件的客户端是否为活跃客户端。

3.根据权利要求2所述的用于eMule网络的文件资源信息采集方法,其特征在于,所述步骤22)还包括,在使用文件哈希值在eMule网络中进行搜索,得到共享过该当前文件的客户端的地址信息的同时,获得该客户端的其它节点信息。

4.根据权利要求2所述的用于eMule网络的文件资源信息采集方法,其特征在于,所述步骤22)中,所述客户端的地址信息包括IP地址、UDP端口号和TCP端口号。

5.根据权利要求3所述的用于eMule网络的文件资源信息采集方法,其特征在于,所述步骤22)中,所述客户端的其它节点信息包括节点哈希值。

6.根据权利要求2所述的用于eMule网络的文件资源信息采集方法,其特征在于,所述步骤23)包括下列子步骤:

231)基于步骤22)所获得的地址信息,对共享过所述当前文件的客户端进行监听;

232)模拟eMule客户端,向共享过当前文件的节点发送PING消息;

233)判断是否收到共享过当前文件的节点返回的PONG消息,若收到,则记录返回PONG消息的节点的地址信息并将相应的客户端标记为活跃客户端;否则,判断相应的客户端为非活跃客户端。

7.根据权利要求2所述的用于eMule网络的文件资源信息采集方法,其特征在于,所述步骤3)中,探测该活跃客户端所共享的文件列表的过程包括下列子步骤:

31)获取活跃客户端的地址信息,将其作为目的地址;

32)获取该活跃客户端的共享文件目录并将其作为目标目录;

33)基于当前的目标目录,模拟eMule客户端向目的地址发送ASKSHAREDFILES消息;

34)监听ASKSHAREDFILESANSWER消息,并记录所有共享文件列表及文件哈希值;

35)模拟eMule客户端向目的地址发送ASKSHAREDDIRS消息;

36)监听ASKSHAREDDIRSANSWER消息,如果收到ASKSHAREDDIRSANSWER消息,则执行步骤

37);否则退出,输出共享文件列表;

37)根据所收到的ASKSHAREDDIRSANSWER消息,更新当前的目标目录,返回执行步骤

33)。

说明书 :

一种用于eMule网络的文件资源信息采集方法

技术领域

[0001] 本发明涉及计算机网络技术领域,具体地说,本发明涉及一种用于eMule网络的文件资源信息采集方法。

背景技术

[0002] eMule网络是一种典型的P2P网络,其特点是每个客户都可以与网络中其他客户共享自己的文件资源。eMule网络中的节点数量巨大,同时传播的资源数量更是数以亿计,大大方便了人们共享和获取资源。
[0003] 当前,Kademlia协议已成为eMule网络中实现资源共享的一项重要协议,它是美国纽约大学Petar Maymounkov和David Mezieres在2002年发表的一项研究成果。Kademlia是一种分布式哈希表(Distributed Hash Table,DHT)技术,通过独特的异或(XOR)算法为距离度量基础,建立了一种全新的DHT拓扑结构,与其他算法相比大大提高了路由查询速度。在KAD网络(支持Kademlia协议的eMule网络)中,任何一个KAD节点都可以方便地进行资源发布,所发布的数据存放在其它KAD节点上,并可以被需要获取该资源的节点按照一定规律查找得到,从而大大方便了人与人之间的资源共享。但与此同时,庞大的eMule网络也不可避免地传播着一些不良信息和非法资源,而由于索引信息被分散存储于全网的客户端中,监管者往往难以全面掌握整个eMule网络的文件资源信息和文件资源的传播状况,这样就难以发现和有效干预不良信息和非法资源的传播,导致监管出现较大的漏洞。
[0004] 目前尚没有对eMule网络全网范围的文件资源信息采集方面的研究被公开,因此,当前迫切需要一种能够全面掌握eMule网络的文件资源信息的解决方案。

发明内容

[0005] 本发明的目的是提供一种能够全面掌握eMule网络的文件资源信息以便于对eMule网络进行监管的解决方案。
[0006] 为了实现上述发明目的,本发明提供了一种用于eMule网络的文件资源信息采集方法,包括下列步骤:
[0007] 1)初始化文件集合;
[0008] 2)遍历所述文件集合,对于每个文件,搜索共享过该文件的活跃客户端的地址信息,得到活跃客户端集合;
[0009] 3)对于活跃客户端集合中的每个活跃客户端,探测该活跃客户端所共享的文件列表;
[0010] 4)根据所探测的活跃客户端所共享的文件列表,更新所述文件集合,返回执行步骤2);
[0011] 重复执行所述步骤2)~4),得到文件索引表,该文件索引表中记录出现在所述文件集合中的每个文件及其对应的活跃客户端地址信息。
[0012] 其中,所述步骤2)中,遍历过程包括下列子步骤:
[0013] 21)取出文件集合中的一个资源文件作为当前文件,获取当前文件的哈希值;
[0014] 22)使用文件哈希值在eMule网络中进行搜索,得到共享过该当前文件的客户端的地址信息;
[0015] 23)判断步骤22)所得到的共享过该当前文件的客户端是否为活跃客户端。
[0016] 其中,所述步骤22)还包括,在使用文件哈希值在eMule网络中进行搜索,得到共享过该当前文件的客户端的地址信息的同时,获得该客户端的其它节点信息。
[0017] 其中,所述步骤22)中,所述客户端的地址信息包括IP地址、UDP端口号和TCP端口号。
[0018] 其中,所述步骤22)中,所述客户端的其它节点信息包括节点哈希值。
[0019] 其中,所述步骤23)包括下列子步骤:
[0020] 231)基于步骤22)所获得的地址信息,对共享过所述当前文件的客户端进行监听;
[0021] 232)模拟eMule客户端,向共享过当前文件的节点发送PING消息;
[0022] 233)判断是否收到共享过当前文件的节点返回的PONG消息,若收到,则记录返回PONG消息的节点的地址信息并将相应的客户端标记为活跃客户端;否则,判断相应的客户端为非活跃客户端。
[0023] 其中,所述步骤3)中,探测该活跃客户端所共享的文件列表的过程包括下列子步骤:
[0024] 31)获取活跃客户端的地址信息,将其作为目的地址;
[0025] 32)获取该活跃客户端的共享文件目录并将其作为目标目录;
[0026] 33)基于当前的目标目录,模拟eMule客户端向目的地址发送ASKSHAREDFILES消息;
[0027] 34)监听ASKSHAREDFILESANSWER消息,并记录所有共享文件列表及文件哈希值;
[0028] 35)模拟eMule客户端向目的地址发送ASKSHAREDDIRS消息;
[0029] 36)监听ASKSHAREDDIRSANSWER消息,如果收到ASKSHAREDDIRSANSWER消息,则执行步骤37);否则退出,输出共享文件列表;
[0030] 37)根据所收到的ASKSHAREDDIRSANSWER消息,更新当前的目标目录,返回执行步骤33)。
[0031] 与现有技术相比,本发明具有下列技术效果:
[0032] 1、本发明能够全面获取eMule网络上所有文件的索引,以便对eMule网络中资源信息的监控与管理进行积累。
[0033] 2、本发明能够获得eMule网络中各个文件资源的活跃度信息,从而为进一步的监控提供依据。
[0034] 3、不需要人工干预。

附图说明

[0035] 图1示出了本发明一个实施例的用于eMule网络的文件资源信息采集方法的流程图;
[0036] 图2示出了本发明一个优选实施例的用于eMule网络的文件资源信息采集方法中的关键词列表更新过程的流程图;
[0037] 图3示出了本发明一个优选实施例中实现步骤103的流程图。

具体实施方式

[0038] 以下,结合附图和实施例对本发明做进一步地描述。
[0039] 根据本发明的一个实施例,提供了一种用于eMule网络的文件资源信息采集方法,该方法能够全面获取eMule网络上所有文件的索引,以便对eMule网络中资源信息的监控与管理进行积累。
[0040] 图1示出了本实施例的文件资源信息采集方法的流程图,该文件资源信息采集方法包括下列步骤:
[0041] S101:初始化文件集合。
[0042] 具体地,先建立一个空的文件集合,然后在其中添加几个eMule网络中传播的初始文件,这些初始文件可以是eMule网络中的一些热门文件。
[0043] S102:遍历文件集合,对每一个文件,进行下载客户端探测,得到活跃客户端集合。
[0044] 本步骤是eMule网络上客户端的地址信息发现过程。对于文件集合,先计算所有文件的哈希值,得到哈希列表,然后根据文件哈希值在eMule网络中搜索,监听文件共享用户的地址信息,进而得到其中活跃客户端的地址,从而得到活跃客户端集合。对于已完成下载客户端探测的文件,将其从文件集合中删除。
[0045] 在本步骤中,可以将文件集合中每个文件的文件名、文件哈希值、该文件所对应的活跃客户端的个数和活跃客户端的地址和端口加入一张总的索引表中。
[0046] S103:对活跃客户端集合中的每个客户端,进行共享文件探测,得到该客户端提供给eMule网络共享的文件。
[0047] 本步骤是对客户端的共享文件夹以及共享文件资源的探测过程。本步骤中,根据活跃客户端集合,模拟eMule客户端,向每个活跃客户端发送查询消息,即可得到每个活跃客户端的共享文件列表。
[0048] S104:将所探测到的客户端提供给eMule网络共享的文件加入文件集合,对更新后的文件集合,重新执行步骤S102。
[0049] 这样,不断循环执行步骤S102至S104,即可不断地获取新的文件,并将该文件的文件名、文件哈希值、该文件所对应的活跃客户端的个数和活跃客户端的地址和端口加入到总的索引表中。在一定时间的积累后,该索引表即可基本覆盖eMule全网的所有文件资源,并且可以进一步分析文件资源的活跃度。
[0050] 上述步骤S102和S103可以并行执行,这样可以提高信息采集的效率,这是本领域技术人员易于理解的。
[0051] 进一步地,在一个优选实施例中,可以利用Kademlia协议处理框架,在消息处理过程前监听到客户端的地址信息并做记录。该优选实施例中,所述步骤S102的遍历过程包括下列子步骤:
[0052] S201:取出文件集合中的一个资源文件作为当前文件,计算其哈希值;
[0053] S202:使用文件哈希值在eMule网络中进行搜索,得到共享过该文件的一些节点信息,包括节点哈希值、IP地址、UDP端口号、TCP端口号等信息;
[0054] S203:基于步骤202所获得的节点信息,对共享过所述当前文件的节点进行监听;
[0055] S204:模拟eMule客户端,向共享过当前文件的节点发送eMule的PING消息(见表7);
[0056] 其中,模拟eMule客户端可以基于Kademlia协议与目标客户端进行初次握手来实现。初次握手的时候双方向对方发送同样的消息。两个客户端之间交换彼此的标识,版本和接受能力信息。这里有两种消息,即欢迎消息和eMule信息消息。两个eMule客户端之间的握手包含了一些额外的信息,如:UDP消息交换,安全识别和资源交换能力。
[0057] S205:判断是否收到共享过当前文件的节点返回的PONG消息,若收到,则进行步骤S206;否则,判断相应的共享过当前文件的节点为非活跃节点(此种情形,节点可能处于内网中,而地址信息可能是网关地址信息,因此可以不记录该地址信息),返回步骤S203,继续进行监听;
[0058] S206:记录返回PONG消息的节点的地址信息,该地址信息即eMule客户端的地址信息,该Mule客户端为活跃客户端。
[0059] 进一步地,在另一个优选实施例中,步骤S103包括下列子步骤:
[0060] S301:首先设置有效的eMule客户端(即活跃客户端)的地址信息;
[0061] S302:获取该客户端的共享文件目录,将共享文件目录作为待探测的目标目录;一般eMule客户端有默认的共享文件目录,即incoming目录,该目录就是初始的目标目录;
[0062] S303:基于当前的目标目录,模拟eMule客户端向目的地址发送ASKSHAREDFILES消息,以获取目标目录所代表的共享文件夹中的内容(即文件列表);模拟eMule客户端的方法与前文步骤S204的方法一致,此处不再赘述;
[0063] S304:监听ASKSHAREDFILESANSWER消息,并记录所有共享文件列表及文件哈希值;
[0064] S305:模拟eMule客户端向目的地址发送ASKSHAREDDIRS消息;
[0065] S306:监听ASKSHAREDDIRSANSWER消息。若收到,则进行步骤307;否则退出,输出共享文件列表;
[0066] S307:根据所接收的ASKSHAREDDIRSANSWER消息,更新当前的目标目录,并返回到步骤S303。
[0067] 以下进一步给出一个对活跃客户端集合客户端进行共享文件探测的具体实现方式。eMule协议中有两个消息用来浏览客户端节点的共享文件和共享文件夹。第一个是浏览共享文件消息,即ASKSHAREDFILES消息(见表1),它将在建立完第一次握手之后立即被发送。目标客户端会有一个应答浏览共享文件的消息(见表2)来回复这个消息。第二个消息是浏览共享文件夹列表消息(见表3),目标客户端会返回应答浏览共享文件夹列表消息(见表4),在收到应答浏览共享文件夹列表消息后,为每一个共享文件夹发送一个查看共享文件夹内容消息(见表5),进而收到目标客户端返回的应答查看共享文件夹内容消息(见表6)。
[0068] 表1
[0069]名称 占用字节数 默认值 说明
Protocol 1 0xE3  
Size 4   不包括标题和size字段的信息
Type 1 0x4A OP_ASKSHAREDFILES opcode
[0070] 表2
[0071]名称 占用字节数 默认值 说明
Protocol 1 0XE3  
Size 4   不包括标题和size字段的信息大小
Type 1 0X4B OP_ASKSHAREDFILESANSWER opcode
Result Count 4 NA 消息中文件名的个数
Result List 不定 NA 和服务器搜索结果编码一样
[0072] 表3
[0073]名称 占用字节数 默认值 说明
Protocol 1 0xE3  
Size 4   不包括标题和size字段的信息
[0074]Type 1 0x5D OP_ASKSHAREDDIRS opcode
[0075] 表4
[0076]名称 占用字节数 默认值 说明
Protocol 1 0XE3  
Size 4   不包括标题和size字段的信息大小
Type 1 0X5F OP_ASKSHAREDDIRSANS opcode
Folder Count 4 NA 消息中文件夹的个数
Folder List 不定 NA 一个文件夹信息描述
[0077] 表5
[0078]名称 占用字节数 默认值 说明
Protocol 1 0XE3  
Size 4   不包括标题和size字段的信息大小
Type 1 0X5E OP_ASKSHAREDFILESDIR opcode
Name length 2 NA 下一个文件夹名字的长度
Directory name 不定 NA 共享文件夹名字
[0079] 表6
[0080]名称 占用字节数 默认值 说明
Protocol 1 0XE3  
Size 4   不包括标题和size字段的信息大小
Type 1 0X60 OP_ASKSHAREDFILESDIRANS opcode
Name length 2 NA 下一个文件夹名字的长度
Directory name 不定 NA 下一个共享文件夹名字
File count 4 NA 共享文件的个数
File list 不定 NA 一个名字列表
[0081] 表7
[0082]名称 占用字节数 默认值 说明
Protocol 1 0xE3  
[0083]Size 4   不包括标题和size字段的信息
Type 1   OP_PING opcode
[0084] 在一个初期实验中,使用上述基于资源共享探测技术的资源发现方法,在不到432分钟时间内,对已掌握的2164个客户端进行共享探测,采集到1460个活跃节点的文件列表,共61710个文件,这61710个文件基本涵盖了2164个客户端的文件。因此,上述基于资源共享探测技术的资源发现方法能够全面掌握eMule网络的文件资源信息,从而便于对eMule网络进行监管。
[0085] 最后应说明的是,以上实施例仅用以描述本发明的技术方案而不是对本技术方法进行限制,本发明在应用上可以延伸为其它的修改、变化、应用和实施例,并且因此认为所有这样的修改、变化、应用、实施例都在本发明的精神和教导范围内。