本帖最后由 天空之城 于 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;
} |