【说明】
本项目是一个代码复现项目,旨在学习如何利用 WinPcap 和 MFC 编写 Sniffer
参考文档:https://blog.csdn.net/litingli/article/details/5950962
GitHub:https://github.com/Alex-McAvoy/Sniffer-based-on-WinPcap-and-MFC
程序运行图:
【概述】
Sniffer(嗅探器),是一种利用以太网特性将网络适配卡置为混杂模式状态的工具,一旦将网卡设置为混杂模式,其就能接收传输在网络上的每一个信息包,因此利用 Sniffer 可以监听网络状态、获取数据流动情况、得到网络上传输的信息等
本项目将复现一个基于 WinPcap 与 MFC 结合的软件的 Sniffer,实现的功能包括:
- 列出监测主机的所有网卡,选择一个网卡,在混杂模式下进行监听;
- 捕获所有流经网卡的数据包,并利用WinPcap函数库设置过滤规则;
- 分析捕获到的数据包的包头和数据,按照各种协议的格式进行格式化显示;
支持协议:TCP、UDP、ARP、ICMP、HTTP、IPv4、IPv6 - 可以本地文件的形式来保存、读取已捕获的数据包信息
所需工具:
- Microsoft Visual Studio 2017
- WinPcap V4.1.2
Windows Packet Capture,WinPcap 是 Windows 平台下的数据链路层的网络访问工具,其目的在于为 Windows 应用程序提供访问网络底层的能力,其只能将数据包从网络中抓取过来,并不能修改数据
要使用 WinPcap,要安装其 dll 文件,此外还要下载相关的开发者工具包,包含库文件、头文件、简单示例程序与帮助文件
WinPcap V4.1.2 dll:http://www.winpcap.org/install/bin/WinPcap_4_1_2.exe
WinPcap V4.1.2 Developer’s Pack:http://www.winpcap.org/install/bin/WpdPack_4_1_2.zip
【环境配置】
将 WinPcap 的开发者工具包解压后,放到合适位置,然后打开 VS2017,新建一个MFC项目
在新建项目的项目->属性->VC++目录中,配置包含目录,即将 WinPcap 开发包中的 Include 目录添加进去:
配置完包含目录后,再配置库目录,即将 WinPcap 开发包的 Lib 目录添加进去
然后设置与 WinPcap 有关的预处理定义:在项目->项目属性->配置属性->C/C++->预处理器页面的预处理器定义中,添加 WPCAP 与 HAVE_REMOTE
最后添加 wpcap.lib 库文件:在项目->项目属性->配置属性->链接器->命令行页面中的其他选项,添加 wpcap.lib