Winpcap学习笔记

本文介绍了如何在Windows 10上搭建Winpcap 64位开发环境,包括安装Winpcap驱动,编译packet.lib和packet.dll,以及编译wpcap.lib和wpcap.dll。此外,还展示了创建第一个Winpcap程序的步骤,该程序用于测试开发环境是否正确设置。

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

Winpcap学习笔记

Author: kagula

Date: 2018-9-1

Preface:

  介绍如何成功搭建winpcap程序的开发环境,这里假设你已经安装了Visual Studio 2017 Community Edition。

Environment:

Windows 10 Pro 64bits,   VS 2017 Community,   winpcap 4.1.3

Content

Part1 搭建winpcap 64位开发环境

Step1  安装winpap虚拟驱动

Version 4.1.3 Installer for Windows
https://www.winpcap.org/install/bin/WinPcap_4_1_3.exe
安装成功后,你会找到带数字签名的

C:\Windows\System32\drivers\npf.sys

Step2 下载winpcap源码包

下载
https://www.winpcap.org/install/bin/WpcapSrc_4_1_3.zip
解压缩到
D:\workspace

Step3 编译packet.lib packet.dll

打开

D:\workspace\winpcap\packetNtx\Dll\Project\Packet.sln

[a]build方式设为Debug No NetMonX64

[b]Output directory默认是带空格的,改为"$(ProjectDir)\DebugNoNetMon\x64\"

否则,其它项目会找不到你编译好的lib文件

[c]Packet32.h第51行,插入
#undef HAVE_AIRPCAP_API

否则 会提示找不到airpcap.h

[d]删除project中的资源文件version.rc,否则会提示找不到afxres.h

编译好后,会在

D:\workspace\winpcap\packetNtx\Dll\Project\DebugNoNetMon\x64

目录下,生成packet.lib   packet.dll两个文件,编译wpcap需要packet.lib。 

Step4 编译wpcap.lib wpcap.dll

打开

D:\workspace\winpcap\wpcap\PRJ\wpcap.sln

文件。

[a]build模式设为No Air Pcapx64 

[b]添加库文件search路径为

D:\workspace\winpcap\packetNtx\Dll\Project\Debug_No_NetMon\x64;

[c]删除不需要资源文件version.rc

build成功后在

D:\workspace\winpcap\wpcap\PRJ\DebugNoAirPcap\x64

路径下,生成wpcap.lib  wpcap.dll文件,编译wpcap程序需要wpcap.lib。

 

Part2 第一个winpcap程序

列出所有的网络driver后程序返回,仅用于测试winpcap开发环境是不是已经搭建起来了。

新建win32 console solution,build选项设置为Debug, X64

添加WIN32;MSDOS;宏定义

添加头文件search path

D:\workspace\winpcap\wpcap\Win32-Extensions;D:\workspace\winpcap\wpcap\libpcap\Win32\Include;D:\workspace\winpcap\wpcap\libpcap;

添加库文件library path

D:\workspace\winpcap\wpcap\PRJ\DebugNoAirPcap\x64;

添加库文件引用

wpcap.lib

我们的第一个winpcap程序只有一个源文件,下面是源文件的内容

#include "pcap.h"
void main()
{
	pcap_if_t *alldevs;
	/*struct pcap_if_t{
	pcap_if_t *next;
	char *name;
	char *description;
	pcap_addr *addresses;
	U_int falgs;
	}
	*/
	pcap_if_t *d;
	int i = 0;
	char errbuf[PCAP_ERRBUF_SIZE];
	/* Retrieve the device list */
	if (pcap_findalldevs(&alldevs, errbuf) == -1)//返回网卡列表,alldevs指向表头
	{
		fprintf(stderr, "Error in pcap_findalldevs: %s\n", errbuf);
		exit(1);
	}
	/* Print the list */
	for (d = alldevs; d; d = d->next)
	{
		printf("%d. %s", ++i, d->name);
		if (d->description)
			printf(" (%s)\n", d->description);
		else printf(" (No description available)\n");
	}
	if (i == 0)
	{
		printf("\nNo interfaces found! Make sure WinPcap is installed.\n");
		return;
	}
	/* We don't need any more the device list. Free it */
	pcap_freealldevs(alldevs);
}

build成功后,运行,会列出当前计算机上已经安装的所有网络通讯设备。

Reference

[1]《How to compile WinPcap》

https://www.winpcap.org/docs/docs_40_2/html/group__compilation.html

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kagula086

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值