抓包回调函数packet_handler由pcap_loop调用,当启用抓包后若句柄返回数据则会通过回调函数通知用户,用户获取到数据包header后,通过逐层解析即可得到所需要的字段,若要实现SYN快速探测则需要判断tcph标志,若标志被返回则可通过RST断开会话,并以此节约扫描时间。
如下代码,定义了一个网络数据包回调函数 packet_handler,用于处理惩罚通过 pcap 库捕捉的网络数据包。函数首先打印数据包的长度,然后解析以太网头部以检查其类型是否为 IP(0x0800)。如果是 IP 数据包,进一步解析 IP 头部并打印相关信息,包罗 IP 版本、头长度、源 IP 地址和目标 IP 地址。随后检查 IP 数据包的协议字段是否为 TCP(6),若是,则解析 TCP 头部并打印源端口、目标端口、序列号、确认号、头部长度、标志、窗口大小、校验和及告急指针等信息。