codeblocks配置winpcap开发环境
转载请注明出处,谢谢_ (:з」∠)_
起因
最近作业要用Winpcap开发包分析.pcap文件实现报文字段的识别…本来打算用Visual Studio写,不过想起以前打OJ的时候都用Code::Blocks写C语言的代码…在好奇心的驱使下研究了一下…还踩了个坑_(:з」∠)_
1.下载Winpcap安装包与开发库
(1)资源链接:winpcap安装包、winpcap开发库
(2)如果已经安装过 Wireshark (一般在wireshake安装的时候会在安装途中跳出winpcap的安装程序)且确认安装了Winpcap环境,可以暂时不用重新安装Winpcap安装包。但可能会出现(3)中的情况
(3)在配完环境运行demo程序时,发现demo程序运行错误 —— 无法正确输出结果且return -12。原因为:wireshark[Version 3.0.0 (v3.0.0-0-g937e33de)]默认安装的winpcap存在问题;重新安装winpcap安装包即可
2.配置winpcap开发环境
2.0 环境介绍
- Code::Blcok 13.12
- winpcap Developer Pack 4.1.2(WpdPack_4_1_2,推荐解压到纯英文路径)
- winpcap 4.1.3
2.1 配置编译环境
-
打开Codeblock,选择【Settings】->【Complier】
-
在【Compilersettings】->【#defines】下输入
WPCAP HAVE_REMOTE
其中,
WPCAP
为使用Winpcap win32下特有的的函数所需要的宏定义,HAVE_REMOTE
为使用远程捕获功能所需要的宏定义,等价于在编码时定义#define WPCAP #define HAVE_REMOTE
-
在【Linker settings】中添加Winpcap开发库中Packet.lib与wpcap.lib的位置及WS2_32.dll的位置
- 对于Packet.lib与wpcap.lib,可根据系统架构选择32位(位于
WpdPack\Lib
)或64位(位于WpdPack\Lib\x64
)的函数库文件 - 对于WS2_32.dll,64位的windows系统一般位于
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib
路径下,32位的windows系统一般位于C:\Program Files\Microsoft SDKs\Windows\v7.1A\Lib
路径下 - 利用下方【Add】添加绝对路径
- 在【Search directories】添加开发包的头文件位置
WpdPack\Include
,同样为利用【Add】添加绝对路径
3.测试程序
可新建文件或者工程,将下方代码拷入进行测试demo.c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <pcap/pcap.h>
/* pcap_if_t 数据结构
struct pcap_if_t{
pcap_if_t *next;
char *name;
char *description;
pcap_addr *addresses;
u_int falgs;
}
*/
int demo()
{
printf("Get the device list\n");
pcap_if_t *alldevs;//记录所有设备信息
pcap_if_t *d;//遍历的指针
int i=0;
char errbuf[PCAP_ERRBUF_SIZE];
/* 获取本地机器设备列表 */
if (pcap_findalldevs(&alldevs, errbuf) == -1)//pcap_findalldevs -- 返回网卡列表,alldevs指向表头
{
fprintf(stderr,"error in pcap_findalldevs: %s\n", errbuf);
exit(1);
}
/* 打印列表 */
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("\no interfaces found! make sure winpcap is installed.\n");
return 0;
}
/* 不再需要设备列表了,释放它 */
pcap_freealldevs(alldevs);
return 0;
}
之后会上传demo.c
的测试工程,方便大家进行测试,同时也包含部分推荐资料与示例代码
4. 学习与使用
若仍存在问题,可在下方留言_(:з」∠)_
如果您觉得阅读后有启发,可否点个 赞 呢~Thanks♪(・ω・)ノ
参考
https://blog.****.net/baikaishui525/article/details/7421074
【其他的找不到了…不好意思…】