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
是抓包逻辑的核心,每次捕到一个包都会进来一趟。结构上清晰,修改也好改。
如果你对 结构体 比较感兴趣,下面这几个链接可以顺手点开看看:
嗯,还有一点要注意,包长度、偏移大小那些,尽量别写死,免得协议变一变就炸了。如果你是搞网络安全、流量方向的,这套代码可以当个不错的起点。
420.5KB
文件大小:
评论区