编译环境:visual studio2019,安装并配置winpcap和pthreads库函数
1 配置环境
1.1 安装vscode
参考微信公众号 软件安装管家。
1.2 安装MinGW-w64
下载地址:添加链接描述
安装参考博客:MinGW-w64安装配置全过程
第一步:安装
第二步:配置环境变量
输入命令gcc -v可以查看版本信息,如下图,
1.3 下载WinPcap
下载地址:添加链接描述
下载解压后的目录:
1.4 Winpcap环境配置
此配置方法针对 2019 Visual Studio。
以获取已连接的网络适配器列表为例,编写一个简单的Winpcap程序。
第一步:点击项目“属性”
第二步:包含目录 和 库目录 分别加入winpcap的include 和 lib/x64目录
winpcap的头文件路径:WpdPack\Include
winpcap的库文件路径:WpdPack\Lib\目录下:wpcap.lib, Packet.lib;如果是开发64位程序,则使用x64包中的相应库
第三步:附加依赖项中分别加入如下三个库文件
ws2_32.lib
wpcap.lib
Packet.lib
第四步:编写获取网络适配器列表的代码main.cpp
参考代码:参考代码
大致过程:
-
首先通过pcap_findalldevs_ex获取网络适配器列表
-
网络适配器列表信息保持在一个pcap_if_t指针中,它是一个经典的C式链表结构,可以通过这个指针遍历所有的网络适配器
-
最后,调用pcap_freealldevs释放资源
运行结果:
【补充:网络适配器】
网络适配器就是网卡,在“设备管理器”中可以查看本机电脑的网络适配器列表,如下图,
1.5 pthreads环境配置
下载地址:pthreads-w32-2-9-1
配置过程:
-
下载pthreads-w32-2-9-1-release.zip文件,解压生成三个文件夹 Pre-built.2、pthreads.2、QueueUserAPCEx
-
项目属性 — vc++目录 — 包含目录 — 添加 xxx\pthreads-w32-2-9-1-release\Pre-built.2\include
-
项目属性 — vc++目录 — 库目录 — 添加xxx\pthreads-w32-2-9-1-release\Pre-built.2\lib\x64
-
项目属性 — 链接器 — 输入 — 附加依赖项 — 添加pthreadVC2.lib
如果代码运行报错:找不到pthreadVC2.dll。解决方法:将pthreadVC2.dll拷贝到项目的源文件夹下,如
包含头文件pthread.h后,运行可能会提示错误 “1 error LNK2019: 无法解析的外部符号 __imp__pthread_create,该符号在函数 _main 中被引用 ” ,则需要在代码中加入#pragma comment(lib, "pthreadVC2.lib")
遇到错误“int pcap_findalldevs_ex(char *,pcap_rmtauth *,pcap_if_t **,char *)”: 无法将参数 1 从“const char [9]”转换为“char *”,依次点击项目->属性->C/C+±>语言->符合模式,将原来的“是”改为“否”即可。
2 实验步骤
实验内容:
设计并实现一个网络流量的分析系统。该系统具有以下功能:
1、实时抓取指定时间间隔中的网络数据。
2、网络协议分析与显示,确认网络协议类型,抓取数据流量大小、方向。
3、将网络数据包聚合成数据流,将源IP、目的IP、源端口、目的端口及协议 等流量数据存储。
4、计算并显示固定时间间隔内网络连接(双向流)的统计量(如上行与下行的数据包数目,上行与下行的数据量大小等)。在这些统计数据的基础上分析不同网络应用的流量特征。
系统流程图:
项目目录结构:
3 运行结果
-
result.data文件内容:
-
vscode运行结果:
-
将traffic.data文件修改后缀名为traffic.pcap,并用wireshark打开,对比vscode流量分析截图,可看出两者捕获内容是一致的,如下图: