WinPcap基于回调的抓包程序

基于 WinPcap 的包捕获,用起来还挺顺的,尤其适合刚上手网络抓包的朋友。直接拿 pcap_loop 配合回调函数就能开始嗅探,不用太多配置,基本一贴即用。

以太网头、IP 头、TCP 头的偏移计算也蛮清晰,像:

ethernet = (struct sniff_ethernet*)(packet);
ip = (struct sniff_ip*)(packet + size_ethernet);
tcp = (struct sniff_tcp*)(packet + size_ethernet + size_ip);

看上去有点绕,其实就是按协议层层往下偏移,payload 直接拿来也方便。

另外,回调函数 handler_packet 是抓包逻辑的核心,每次捕到一个包都会进来一趟。结构上清晰,修改也好改。

如果你对 结构体 比较感兴趣,下面这几个链接可以顺手点开看看:

嗯,还有一点要注意,包长度、偏移大小那些,尽量别写死,免得协议变一变就炸了。如果你是搞网络安全、流量方向的,这套代码可以当个不错的起点。

ppt 文件大小:420.5KB