P2P协议识别.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
P2P协议识别

P2P协议识别 技术方案 报告人: 时间: Gnutella 0.4协议 端口特征识别 缺省端口:6346/6347/6348 流量特征识别 IPP2P识别方案: gnutella tcp 检查gnutella 的get 命令 如果tcp payload的最初9个字节的内容为GET /get/ ,或最初的13个字节为GET /uri-res/即为gnutella 检查gnutella 的get 命令和其他特定字段 如果tcp payload的最初17个字节的内容为GNUTELLA CONNECT/,或者最初的9个字节的内容为GNUTELLA/。 即为gnutella 如果tcp payload的最初9个字节的内容为GET /get/ ,或最初的13个字节为GET /uri-res/ 若ip payload长度大于tcp头部长度+30,此时如果指针自tcp payload右移8个字节,指针所指的内容中第一个字节为0x0d,第二个字节为0x0a,匹配X-Gnutella-,或X-Queue:,匹配成功则为 gnutella,(详情参看代码) Gnutella udp 如果udp payload的最初3个字节的内容为GND,或者最初的9个字节的内容为GNUTELLA/。 即为gnutella L7Filter识别方案: ^(gnd[\x01\x02]?.?.?\x01|gnutella connect/[012]\.[0-9]\x0d\x0a|get /uri-res/n2r\?urn:sha1:|get /.*user-agent: (gtk-gnutella|bearshare|mactella|gnucleus|gnotella|limewire|imesh)|get /.*content-type: application/x-gnutella-packets|giv [0-9]*:[0-9a-f]*/|queue [0-9a-f]* [1-9][0-9]?[0-9]?\.[1-9][0-9]?[0-9]?\.[1-9][0-9]?[0-9]?\.[1-9][0-9]?[0-9]?:[1-9][0-9]?[0-9]?[0-9]?|gnutella.*content-type: application/x-gnutella|..................lime) 我们的识别方案: 连接查询过程:Payload的第17个字节是命令ID,其值为:0x00, 0x01, 0x80, 0x81, 0x40, (扩展:0x02, 0x10, 0x30, 0x31, 0x32), 从第20到23这4个字节,是其后的Payload长度,即(Payload长度-23)。与IP中的报文长度(3-4字节)相比,中间应该相差IP头(20B)、TCP/UDP头(8B/20B)、Gnutella头23B 下载过程:下载遵守HTTP协议。下载请求的以GET /get/fileid/filename/ HTTP开头,后面匹配User-Agent: 的内容以Gnutella/开头。返回文件数据时,以HTTP /x.x 200 OK \r\n开头,后面匹配Server: 的内容是Gnutella/y.y\r\n. 协议特征提取 连接阶段 如果Client A向SuperNode B发起Gnutella连接,将进行以下通讯: 1.首先进行TCP三次握手。 2.连接成功后,A通过TCP发送:GNUTELLA CONNECT/x30/x2e/x36/0x0d/0x0a…… ……可以匹配的有用的字段: Listen-IP: 7:6346 (这个具体是什么还不清楚) 以下分为两种响应情况: 成功Gnutella连接: 3.成功响应为,B发送响应消息:GNUTELLA/0.6 200 OK/0x0d/0x0a…… 4.A接到响应消息后,发送响应:GNUTELLA/0.6 200 OK/0x0d/0x0a…… ……没有什么对检测有意义的字段: 不成功Gnutella连接: 5.如果连接失败,B会发送消息:GNUTELLA/0.6 ??? /0x0d/0x0a…… 6.终止TCP连接,B会发起Fin包 *上面的过程是普通节点和超级节点之间建立连接的过程;它可以推广到普通节点和普通节点之间,超级节点和超级节点之间的连接建立。 Ping/Pong过程 检测到Ping消息: 从IP头中得到源IP 从TCP头中得到源Port 从Payload中得到描述ID 写一条网络节点发现日志,sip=源IP, sport=TCP端口, snodeid=描述ID, snodetype=1(normal) 检测到Pong消息: 从IP头中得到源IP 从TCP头中得到源

文档评论(0)

almm118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档