这篇博客主要记录如何通过winpcap实现网络抓包。首先我们简单介绍一下这次主要用到的函数:
pcap_t *pcap_open(const char *source, int snaplen, int flags, int read_timeout, struct pcap_rmtauth *auth, char *errbuf);
该方法打开一个网络适配器,三个参数的解释如下:
第一个参数:适配器名称,是数据的来源
第二个参数:制定要捕获数据包中的哪些部分。技术文档中介绍说,在一些操作系统中,驱动可以被配置成只捕获数据包的初始化部分,它的好处就是可以减少应用程序间
复制数量的量,从而提高捕获效率。下面将要给出的实例程序中设为65535。我们知道对于使用以太网的局域网来说,最大传输单元为1500字节,那么设为65535则能保证
收到完整的数据包。
第三个参数是最重要的一个值,它用来指示适配器是否需要设置成混杂模式,简单的说,就是所有流经这个网卡的数据都会被捕获,无论是不是发给这个网卡的,大多数捕获程序都会选择混杂