VS2017 WinPcap的配置及简单的使用demo

本文介绍如何使用WinPcap在Windows环境下进行网络抓包,包括安装配置过程及基本代码实现。通过实例演示了如何检测网络设备并监听网络数据包。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一般涉及到网络编程,我们会用上层的socket相关API进行,但有些时候我们需要从底层进行抓包,在Windows上,我们可以用WinPcap来做这件事。

官网地址:https://www.winpcap.org/install/default.htm
在这里插入图片描述
首先在上面圈中的两个地方分别下载安装包和开发包。
在这里插入图片描述
然后先安装(注意这个是必须先做的,不然哪怕运行代码也会失败),安装一路next就行了,里面有一个勾选项是问要不要自动打开WinPcap驱动的,记得勾选上(默认就是这样的),不要手贱点掉,不然要自己去开(不知道怎么开),否则运行代码会找不到网络设备。

做完这些解压开发包,会看到里面自带有例子工程,直接用VS2017升级后打开即可(可能需要换Windows的sdk版本)。

比如检测网络设备的代码存放在“E:\winpcap\WpdPack_4_1_2\WpdPack\Examples-pcap\basic_dump_ex”这个路径下,用VS打开之后将其设置为启动项编译就能看到自己的网络设备,并进行监听。比如本人有两张网卡则会看到如下的设备列表:
在这里插入图片描述
如果只有一张网卡则会直接输出监听的结果。

具体的代码实现参照示例就行了,写的很好,才100左右行,无需要本人再冗述。

//忽视老接口安全警告
#ifdef _MSC_VER
#define _CRT_SECURE_NO_WARNINGS
#endif

#include "pcap.h"

int main()
{
	pcap_t *adhandle;//传感器对象句柄
	int res;//返回值
	char errbuf[PCAP_ERRBUF_SIZE];//错误信息
	struct tm *ltime;
	char timestr[16];
	struct pcap_pkthdr *header;
	const u_char *pkt_data;
	time_t local_tv_sec;
	char drivename[100] = "\\Device\\NPF_{5279D3EA-C863-485E-A1EA-5D1A18A85734}";
	//打开抓包器
	if ((adhandle = pcap_open_live(drivename,65536,1,1000,errbuf)) == NULL)
	{
		printf("网络打开错误!请用专用软件查看\n");
		return -1;
	}
	//获得包数据
	while ((res = pcap_next_ex(adhandle, &header, &pkt_data)) >= 0) 
	{
		if (res == 0)
			continue;
	}
	if (res == -1) 
	{
		printf("Error reading the packets: %s\n", pcap_geterr(adhandle));
		return -1;
	}
	pcap_close(adhandle);
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值