我正在使用 pcap 来捕获我想为其解析有效负载的 TCP 数据包。我的策略如下:
- 获取以太网标头并检查它是否具有类型
ETHERTYPE_IP
(IP 数据包) - 检查IP包是否有协议
IPPROTO_TCP
(TCP包) 检查有效载荷大小 > 0
(size = ntohs(ip_header->total_length - ip->header_length*4 - sizeof(struct tcp_header))
。解析有效载荷(获取主机 url)
我还没有开始解析有效载荷,因为我得到了差异。下面是使用 filter 捕获的 10 个 TCP 数据包的有效负载的打印输出"host = www.google.com"
。
数据包编号:3:TCP 数据包:源端口:80 目标端口:58723 数据包中没有数据
数据包编号:4:TCP 数据包:源端口:58723 目标端口:80 数据包中没有数据
数据包编号:5:TCP 数据包:源端口:58723 目标端口:80负载: GET / HTTP/1.1 主机:www.google.com 用户代理:Mozilla/5.0(Macintosh;U;Intel Mac OS X 10_6_5;en- us) AppleWebKit/533.19.4 (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4 Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8 ,image/png, / ;q=0.5 Accept-Language: en-us Accept-Encoding: gzip, deflate Cookie: THICNT=25; SID=DQAAAKIAAAB2ktMrEftADifGm05WkZmlHQsiy1Z2v-连接:保持活动
数据包编号:6:TCP 数据包:源端口:80 目标端口:58723 数据包中没有数据
数据包编号:7:TCP 数据包:源端口:80 目标端口:58723有效负载: \272نu\243\255\375\375}\336H\221\227\206\312~\322\317N\236\255A\343 #\226\370֤\245[\327`\306ըnE\263\204\313\356\3268 )p\344\301_Y\255\267\240\222x\364
数据包编号:8:TCP 数据包:源端口:58723 目标端口:80 数据包中没有数据
数据包号:9:TCP 数据包:源端口:80 目标端口:58723有效负载: HTTP/1.1 200 OK 日期:星期一,2010 年 11 月 29 日 10:11:36 GMT 过期:-1 缓存控制:私有,max-age= 0 内容类型:文本/html;charset=UTF-8 内容编码:gzip 服务器:gws 内容长度:8806 X-XSS-Protection:1;模式=块 \213
为什么有效载荷和端口存在差异?理想情况下,我只想解析像数据包 5 这样的数据包。如何忽略像 7 和 9 这样的数据包?