环境说明:10.1.1.170是iptables防火墙,10.1.1.111是服务器。客户端以10.1.1.170做网关与10.1.1.111进行通讯。
封包过滤源代码(C)如下:
if ( (plen == 4 && get_u32(payload,0) == __constant_htonl(0x291c3201)) || (plen == 61 && get_u32(payload,0) == __constant_htonl(0x291c3201) && get_u32(payload,4) == __constant_htonl(0x39000000))) return (IPP2P_PP * 100 + 7);
如上代码过滤的数据包如下:(在10.1.1.170上tcpdump下来的;用以上代码进行过滤时,客户端没有收到服务器发出的下面的数据包)
17:47:08.913799 ip 71: 10.1.1.111.7215 > 10.1.1.170.1169: P [tcp sum ok] 1:18(17) ack 1 win 65535 (DF) (ttl 128, id 1782, len 57)
0x0000 4500 0039 06f6 4000 8006 66ed 3b6c 45c5 E..9.. @ ...f.;lE.
0x0010 0a01 01aa 1847 0491 e6a1 9f18 c1a9 5cda .....G........\.
0x0020 5018 ffff 49b0 0000 0d00 0000 0e00 0000 P...I...........
0x0030 d718 0244 3950 e86b 02 ...D9P.k.
17:47:11.833637 ip 71: 10.1.1.111.7215 > 10.1.1.170.1169: P [tcp sum ok] 1:18(17) ack 1 win 65535 (DF) (ttl 128, id 1857, len 57)
0x0000 4500 0039 0741 4000 8006 66a2 3b6c 45c5 E..9.A @ ...f.;lE.
0x0010 0a01 01aa 1847 0491 e6a1 9f18 c1a9 5cda .....G........\.
0x0020 5018 ffff 49b0 0000 0d00 0000 0e00 0000 P...I...........
0x0030 d718 0244 3950 e86b 02 ...D9P.k.
17:47:17.863647 ip 71: 10.1.1.111.7215 > 10.1.1.170.1169: P [tcp sum ok] 1:18(17) ack 1 win 65535 (DF) (ttl 128, id 1963, len 57)
0x0000 4500 0039 07ab 4000 8006 6638 3b6c 45c5 E..9.. @ ...f8;lE.
0x0010 0a01 01aa 1847 0491 e6a1 9f18 c1a9 5cda .....G........\.
0x0020 5018 ffff 49b0 0000 0d00 0000 0e00 0000 P...I...........
0x0030 d718 0244 3950 e86b 02 ...D9P.k.
说明:对比服务器端抓包、网关抓包、客户端抓包得出的结果是上面的数据包被过滤掉了。
问题:
1、由此得出该程序的数据流特征码是什么?
2、怎么得出该程序的特征码?
3、__constant_htonl(0x291c3201)进行了什么运算?
4、数据流中那部分和__constant_htonl(0x291c3201)的结果一样?从而导致数据包被过滤?
5、过滤代码执行的是那部分(||的左边还是右边部分)?
6、plen的含义是什么?
-------------------------------------------------------
--------------------next---------------------
阅读(554) | 评论(0) | 转发(0) |