查看: 3319|回复: 2

高手帮忙,分析eDonkey DHT 网络下载时数据包的具体格式

[复制链接]
发表于 2009-11-16 16:16:50 | 显示全部楼层 |阅读模式
暂时没有发现很明显的特征,客户端A向B申请一个块,B收到后返回这个块的内容,具体分成1000多的数据包,这个交互过程均是UDP交互。目的是想找到里面的特殊标志,能够识别出这个数据包是eDonkey的数据包。貌似有点难度,高手给个想法啊。

头一次在这个论坛发帖子啊,呵呵  希望大家支持一下
回复

使用道具 举报

发表于 2009-11-16 16:56:46 | 显示全部楼层
本帖最后由 天空之城 于 2009-11-17 10:51 编辑

我并没有用eDonKey进行下载过,只是在netfilter的ipt_ipp2p.c中看到了关于eDonKey的数据特征,本身并没有验证过。以下说明都是跳过TCP/UDP头而直接到数据部分,你可以参考一下,也可以共同探讨一下。
case 0xe3:
  { /*edonkey*/
   switch (t[1])
   {
    /* client -> server status request */
    case 0x96:
     if (packet_len == 14) return ((IPP2P_EDK * 100) + 50);
     break;
    /* server -> client status request */
    case 0x97: if (packet_len == 42) return ((IPP2P_EDK * 100) + 51);
     break;
      /* server description request */
      /* e3 2a ff f0 .. | size == 6 */
    case 0xa2: if ( (packet_len == 14) && ( get_u16(t,2) == __constant_htons(0xfff0) ) ) return ((IPP2P_EDK * 100) + 52);
     break;
      /* server description response */
      /* e3 a3 ff f0 ..  | size > 40 && size < 200 */
    //case 0xa3: return ((IPP2P_EDK * 100) + 53);
    // break;
    case 0x9a: if (packet_len==26) return ((IPP2P_EDK * 100) + 54);
     break;
    case 0x92: if (packet_len==18) return ((IPP2P_EDK * 100) + 55);
     break;
   }
   break;
  }
回复

使用道具 举报

 楼主| 发表于 2009-11-16 17:15:21 | 显示全部楼层
2# 天空之城

不太明白……
您说的直接是应用层的数据包对吧,跳过了UDP的头部

第一字节 |  第二字节 |  第三字节 |   其他字节 |  UDP长度 | 类型
0xe3      | 0x9a      |   any       |   any       |   26         | edonkey
0xe3      | 0x96      |   any       |   any       |    14        | edonkey

我并没有抓到这样的包啊,这个数据包是在哪个过程的呢?传输数据之前?还是之中一直有?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | CSNA会员注册

本版积分规则

快速回复 返回顶部 返回列表