WinPcap的安装配置与初步使用

时间:2024-02-18 07:25:27

配置环境

  • Windows 10
  • Visual Studio 2017

配置步骤

  1. 安装winpcap
  2. 下载wpdpack
  3. 启动vs2017
  4. 新建visual C++空项目
  5. 项目->属性->左侧配置属性->VC++目录,修改包含目录和库目录到wpdpack的include和lib
  6. 项目->属性->C/C++->预处理器->预处理器定义,添加_XKEYCHECK_H; HAVE_REMOTE;WPCAP;WIN32
  7. 项目->属性->链接器->输入->附加依赖项,添加Packet.lib;wpcap.lib;ws2_32.lib

报错:无法打开源文件sys/time.h和u_int
原因:这些都是unix系统的东西,需要在主文件中指明是windows系统
解决方法:#define WIN32(若预处理器定义中已有WIN32则不会出现问题)

报错:找不到源文件stdafx.h
原因:已经再预编译头中定义,不需要多余include

报错:const char 与char *不兼容
解决方法:属性 -> C/C++ -> 语言 -> 符合模式 -> 否

报错:一些带有define建议的Unsafe报错,比如建议将strcpy改为strcpy_s或屏蔽报错
原因:在新版本的VS中使用了一些比较古老的函数
解决方法:在预处理器定义中添加_WINSOCK_DEPRECATED_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS

Demo

#include "pcap.h"
#include "windows.h"
#include <iostream>

using namespace std;

#pragma comment(lib, "wpcap.lib")
int main()
{
	pcap_if_t *alldevs;
	pcap_if_t *d;
	int i = 0;
	char errbuf[PCAP_ERRBUF_SIZE];

	/*获取本地机器设备列表*/
	if (pcap_findalldevs_ex(PCAP_SRC_IF_STRING, NULL /* auth is not needed */, &alldevs, errbuf) == -1)
	{
		fprintf(stderr, "Error in pcap_findalldevs_ex: %s\n", errbuf);
		exit(1);
	}

	/*打印列表*/
	for (d = alldevs; d != NULL; d = d->next)
	{
		printf("%d.%s", ++i, d->name);
		if (d->description)
			printf("(%s)\n", d->description);
		else
			printf("(No description available)\n");
	}

	int a; cin >> a;//卡一下输出
	if (i == 0)
	{
		printf("\nNo interfaces found!Make sure WinPcap is installed.\n");
		return 0;
	}

	pcap_freealldevs(alldevs);
}

参考资料:

详细安装配置
补充说明1
补充说明2