winpcap环境部署(VC6.0出现找不到“pcap.h_'”文件解决方法)
- 格式:doc
- 大小:279.50 KB
- 文档页数:7
关于VC6.0(英文版)头文件丢失问题如何解决——李延胜因为我的VC6.0中conin.h头文件曾丢失过,就以此为例给大家介绍一下如何解决此类问题。
具体分三大步。
制作头文件一,首先要知道你的VC6.0 具体是丢失那个文件,以我的为例给大家说吧!无论任何头文件丢失都会报错,如下图:接下来就告诉大家如何解决!步骤如下:一,首先要找到头文件的源代码,可以在百度上找!二,然后打开VC6.0,点击“files”,然后会出现下图。
点击“files”,然后点击“c\c header file”然后输入头文件的名字,如:stdio。
注意不要把带.h,因为系统会自己生成头文件的格式,如果加上会造成失败。
三,命名后点击“OK”会出现一个编程界面,然后把你找到的头文件的源代码粘贴到编程界面上,然后就是保存了。
头文件的保存路径(具体位置)“microsoftvisualc++6.0”文件,打开该文件会看到如下文件打开该文件找到“vc98”文件并打开,如下图:会看到下图,然后打开里面的“INCLUDE ”文件会看到下图:具体路径是C:\microsoftvisualc++6.0\Microsoft Visual C++ 6.0\VC98\INCLUDE,如图:一.打开VC点击“tool”(工具)二.然后点击“options”(选项)后点击“directories”(目录)三.把刚才找到的路径(C:\microsoftvisualc++6.0\Microsoft Visual C++6.0\VC98\INCLUD)添加到该目录中,点击添加图标,然后把该路径粘贴到目录中,如图:然后再运行vc就不会在报错了。
由于个人的情况不同具体的过程可能不同,可以仿照,根据具体情况而定。
Win8.1下安装VC++6.0问题解决方法首先我的操作系统是windows 8.1专业版64位我安装的VC++6.0是从这个链接(/jsj08)下载的安装路径选择了默认安装路径(C:\Program Files (x86)\Microsoft Visual Studio)一.首先按照网友的方法修改MSDEV.EXE和快捷方式,(参考链接/thread-1536954-1-1.html)具体做法:1·右击选择“属性”。
在弹出的属性窗口中,选择“快捷方式”选项卡,点击2.在下图的窗口中修改“MSDEV.EXE”文件名为“MSDEV3.EXE”(需要管理员权限)。
3.同时在VC++属性窗口中修改“目标”。
点击“确定”。
4·再点击便可打开。
(是在后面步骤进行完才会出现)。
二.解决(打开选项)不能用的方法参考链接:/content/13/0616/11/12470673_293218791.shtml解决方法:下载Filetool.exe的工具(上网搜就可以)FileTool.exe使用方法:1. 下载FileTool.exe,并解压(最好放在某磁盘的根目录下,方便查找。
我的就放在D盘根目录下。
)2. 打开VC6.0,点击File-Open Workspace,选择刚解压出来的FileTool.dsw,并确定3. 点击Bulid(组建)-Build FileTool.dll,生成FileTool.dll文件(在D:\FileTool\Debug目录下)4. 在VC6.0中点击Tools(工具)-Customize(定制)5. 在出现的“Customize(定制)”对话框中,点击Add-Ins and Macro Files(附加项和宏文件)标签6. 点击Browse(浏览),在文件类型下选 dll ,定位刚才生成的dll文件(D:\FileTool\Debug),点击确定,然后点击OK保存设置(这里要用管理员身份运行vc)(如果上述过程不顺利则直接跳至步骤24)7. 此时VC中会出现一个上面只有两个图标的工具栏,点击A就是添加文件到工程,点击O就是打开文件8. 还是在VC6.0中点击Tools(工具)-Customize(定制)9. 在Customize(定制)对话框中点击Keboard(键盘)标签10. 从Category(类别)的下拉菜单框中选择File(文件)11.在Commands(命令)窗口中选择FileOpen12.在Current keys(当前键)窗口中选择CTRL+O条目,并点击Remove(移去)(如果有的话)13.从Category(类别)的下拉菜单框中选择Project(工程)14.在Commands(命令)窗口中选择InsertFilesIntoProject,如果之前给它注册了快捷键,则按照上面所说步骤移除之,默认情况下它是没有快捷键的15.从Category(类别)的下拉菜单框中选择Add-Ins16.这时Commands窗口中应该已经多出了AddFileToProject和OpenFile两个条目,可以给它们分配快捷键了,选择 OpenFile条目,然后点击Press New Shortcut Key(按下新快捷键)输入框,按下想设置的快捷键或快捷键组合(直接在键盘上点),如CTRL+O。
首先,如果想试一下自己电脑上WinPcap是否安装成功,可以在VC++6.0中敲入以下代码测试:
当然在VC没有被配置过之后,我们一定会遇到下面的问题:
所以,确定你电脑上存在WinPcap的包,包结构如下图所示:
之后在VC中新建一个工程(WinPcap的配置是相对于每一个工程来说的,所以你每一次要使用这个WinPcap的时候都需要配置一次),配置的过程如下:
1.安装WinPcap的驱动程序,实验室电脑上已经存在
2.在VC中菜单栏进入Project->Setting->C/C++中的Preprocessor Definitions中填入WPCAP
(全部都要大写)
3.在VC中的菜单栏进入Project->Setting->Link中的Object\Library modules中填入
wpcap.lib Packet.lib(注意大小写)
4.在VC中的菜单栏进入Tools->Options,直接进入的是Include Files的Directories,在下
面点击这个按钮,添加WinPcap文件夹中Include文件夹的地址,我的Winpcap文件夹在桌面,所以地址为C:\Documents and Settings\311\桌面\WpdPack_4_1_2\WpdPack\Include,点击确定
5.在VC中的菜单栏进入Tools->Options,进入Library Files的Directories,在下面点击
这个按钮,添加WinPcap文件夹中Lib文件夹的地址,所以地址为C:\Documents and Settings\311\桌面\WpdPack_4_1_2\WpdPack\Lib,点击确定。
6.完成配置。
WinPcap编程WinPcap是一个开源的、运行于Win32平台下的体系结构,它的主要功能是进行数据包捕获和网络分析。
它允许应用程序通过协议栈捕获和传输网络数据包,也包括内核级别的数据包过滤、网络静态引擎和支持远程数据包捕获等有用的功能。
WinPcap由两部分组成:1. 驱动程序: 扩展操作系统功能提供低层次的网络访问2. 动态链接库:运行在Win32平台上的应用程序可以非常方便地访问网络低层次的数据。
Ethereal是大名鼎鼎的捕获数据包专业软件,它的运行是在WinPcap的支持之下的,如果没有安装WinPcap,Ethereal也无法正常捕获数据包。
在正式WinPcap编程之前,要配置运行环境。
Win32 平台下WinPcap应用程序需要以下四个动态链接库才能正常运行:wpcap.dllPacket.dllWanPacket.dllpthreadVC.dll这四个动态链接库在WinPcap驱动程序里。
如果没有这个驱动程序,需要到WinPcap官方网站上下载,下载地址为: 如果应用程序出现一下提示,那就是没有安装驱动程序的原因了。
被过滤广告也可以不安装WinPcap驱动程序。
但是需要把上面提到的四个动态链接库文件拷贝到系统分区/WINDOWS/system32目录下或者接下来配置编程环境。
如果一个源文件使用了WinPcap提供的库函数,那么就需要在该文件开始的位置添加pcap.h 包含文件(或者在引用的文件中),即#include “pcap.h”也许会出现下面的错误:fatal error C1083: 无法打开包括文件:“pcap.h”: No such file or directory这个错误表明找不到pcap.h文件这个头文件在驱动程序安装完成后也是没有的,它是开发包里面的一个头文件所以,如果要运行程序还需要到官方网站上去下载WinPcap SDK―WpdPackWinPcap SDk里面包含库文件,头文件,文档文件和一些例子。
客户端常见问题解决方法DrCom 客户端常见问题 提示“其他程序占用端口”解决方法:>>在弹出的dos 提示符下输入 netsh winsock reset 命令,回车1点击开始菜单 ------ >> 点击 0 击此处回JEtiMJt 睥② *P»TW'3-I flMl“ f.2. >>俞入“ cmd'回车3.4 •回车后提示成功地重置Win sock目录。
您必须重新启动计算机才能完成重置。
一、Drcom安装时提示装了老版本Win Pcap1、尝试在添加删除里删除老版本的winpcap,如果没有系统可能中过arp之类的网络,木马,重装系统,如果不想重装系统,看第2条2、请在重启删除Win pcap程序文件夹后,删除下的packet.dll 、pthreadVC.dll 、wpcap.dll ,以及下的npf.sys文件。
(记住先在文件夹选项中选中显示所有隐藏文件”和显示系统文件”),删除这几个文件的时候一般不然删除,可以用Uniocker1.8.5工具删除,如果还是删不掉,建议到安全模式下删除,或者先把这几个文件用Uniocker移动到别的地方,先安装学校Drcom客户端,再进安全模式删除移动后的这几个文件,应该就没问题了。
其实主要是这几个文件被木马安装packet.dll,pthreadVC.dll ,wpcap.dll ,npf.sys删除口可以解决。
二、D rCom 客户端Vista下使用问题解决Vista用户经常出现的问题。
在Vista上安装DrCom的原则一定是:先关闭UAC,再安装DrCom 问题1 :认证通过后不能访问外网,能访问校内资源解决方法:下载附件中的bat文件,然后在文件上点击鼠标右键,选择以管理员身份运行”该脚本即可或者在服务管理项中关闭ip helper服务,并选择该服务启动方式为禁用。
附件:vista客户端补丁.bat问题2 :客户端找不到网卡。
因为项目需要,而且以前从没用过Winpcap,所以不得不从头学起。
以前虽然看过winsocket,但是,Winpcap的第一个程序,我花了很长时间才编译通过。
对于初学者来说,不太好做的可能是编译程序之前应该做什么事。
我就大体说一下我的过程。
首先先大体介绍下Winpcap。
winpcap(windows packet capture)windows平台下一个免费,公共的网络访问系统。
开发winpcap这个项目的目的在于为win32应用程序提供访问网络底层的能力。
它提供了以下的各项功能:1> 捕获原始数据包,包括在共享网络上各主机发送/接收的以及相互之间交换的数据包;2> 在数据包发往应用程序之前,按照自定义的规则将某些特殊的数据包过滤掉;3> 在网络上发送原始的数据包;4> 收集网络通信过程中的统计信息。
具体介绍参见/view/696423.htm这里有Winpcap的详细介绍。
下面说一下你在编译Winpcap之前要做的事情。
1 下载Winpcap安装包,地址/install/default.htm。
2 然后到/devel.htm下载WinPcap developer's pack包,解压,里面有配置好的例子和include library。
3 在VC6.0菜单中,点Tolls->Options->Directories中的include files 和library files中添加包里面的include和library。
然后我们就来编写一个最简单的Winpcap程序——获取已连接的网络适配器列表。
首先新建一个工程,选择Win32 Console Application,工程名我们设为winpcap.然后这这个工程中新建一个C++源文件,名字winpcap。
在里面填写如下代码:#include <pcap.h>main( )pcap_if_t *alldevs;pcap_if_t *d;int i=0;char errbuf[PCAP_ERRBUF_SIZE];if (pcap_findalldevs(&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);elseprintf(" (No description available)\n");}if (i == 0){printf("\nNo interfaces found! Make sure WinPcap is installed.\n");return -1;}pcap_freealldevs(alldevs);return 0;}运行之前我们要手动给它添加一个动态链接库wpcap.lib,方法是在菜单Project中点Settings,然后在选项中选Link,在library modules 后面填上wpcap.lib,注意和前面的要有空格隔开。
!Error!VC6.0应用OpenCV出现的错误及解决办法王琼西安交大控制工程研究所eagle-sky@1.OpenCV2.2也添加了相关路径。
(P267<<Visual C++数字图象处理开发入门与编程实践>>)未通过编译,程序运行时报错fatal error C1083: Cannot open include file: 'cv.h': No such file or directory。
解决办法:由于编程软件使用的是VC6.0,建议用OpenCV1.0。
2.安装OpenCV1.0,进行相关的全局设置。
不要忘了添加<OpenCV安装目录>\lib,否则连接时报错“LINK : fatal error LNK1181: cannot open input file "..\..\Program Files\OpenCV\lib\highgui.lib" 执行link.exe 时出错.”3. 问题描述:编译没问题,但运行时出现如下警告对话框。
Could not execute: invalid directory (Win32 error 267)解决办法:造成这个错误的原因主要是运行别人的程序时,设置不正确.,工程—>设置,问题出在右边“调试”标签的“工作目录”和你现在运行工程的目录不一致。
把工作目录中的路径去掉即可。
4. pCapture = cvCaptureFromFile(szVideoFileName);不能打开A VI视频文件,解决办法:网上下载一个“K-Lite Codec Pack Full 3.9.3 Beta”(常用视频播放插件合集),安装以后,程序能顺利打开视频文件。
5. 新建工程后,程序编译时报错Linking...LoadImage01Dlg.obj : error LNK2001: unresolved external symbol _cvReleaseImageLoadImage01Dlg.obj : error LNK2001: unresolved external symbol _cvDestroyWindowLoadImage01Dlg.obj : error LNK2001: unresolved external symbol _cvWaitKey LoadImage01Dlg.obj : error LNK2001: unresolved external symbol _cvShowImageLoadImage01Dlg.obj : error LNK2001: unresolved external symbol _cvNamedWindowLoadImage01Dlg.obj : error LNK2001: unresolved external symbol _cvLoadImageDebug/LoadImage01.exe : fatal error LNK1120: 6 unresolved externals执行link.exe 时出错.解决办法:工程-》设置-》连接中,添加对象/库模块cxcore.lib cv.lib ml.libcvaux.lib highgui.lib cvcam.lib即可,如下图(需要用到即可加载几个)。
Winpcap的安装使用方法winpcap的安装包,然后到2.执行安装包,这样你的机子就能运行winpcap 程序了。
3.解压开发包,在VC6.0的Tools-->Option-->Directories的Include fils 和library files加入winpcap的include和lib目录。
4.开始编写wpcap程序。
vs2005:第一步:下载WinPcap的安装包;有不同操作系统环境下的包,我下的是win32版本的。
下载地址:高的版本一般是Beta的。
这个安装包主要是注册一个wpcap.dll的库到操作系统中。
必须安装,如果不安装,在运行例子的时候会弹出窗口提示,找不到wpcap.dll文件;第二步:到上面的网站下载它的开发包,包括一些头文件和库文件;解压到自己指定的目录中;目录中还有HTML格式的说明文档,用于自己学习比较方便;第三步:设置VS2005;1)设置环境目录;在菜单:工具->选项;弹出的选项窗体左边点击:项目和解决方案->VC++目录;在右边:“显示以下内容的目录”标签下面的下拉框中找到“包含文件”,然后对应到第二步下载开发包的Include目录;在同一下拉框中找到“库文件”,然后对应到第二步下载开发包的lib目录;2)设置编译条件;在项目属性页中:配置属性->C/C++->预处理器->预处理器定义,增加;WPCAP;HAVE_REMOTE;每一个预定义符用";"隔开;在项目属性页中:配置属性->链接器->命令行->附加选项对应的文本框中增加:“wpcap.libws2_32.lib”;第四步:非必要步骤;有的时候可能会有些意外错误;比如找不到u_char类型等;我的解决办法是加上#ifndef WIN32#include <sys/socket.h>#include <netinet/in.h>#else#include <winsock.h>#endif============================================= ====================================winpcap开发包使用中的问题总结这里主要讨论一下winpcap开发中可能遇到的问题。
在VC++6.0中编译出错时解决方法汇总【1】missing function header (old-style formal list?)#SinaEditor_Temp_FontName 解决方法该函数的函数头后边加了分号去掉即可例如:void fun();{}就会出现那种情况【2】在编译VC++6.0是,出现fatal error C1010: unexpected end of file while looking for precompiled header directive的错误.解决方法:1、如果发生错误的文件是由其他的C代码文件添加进入当前工程而引起的,则Alt+F7进入当前工程的Settings,选择C/C++选项卡,从Category组合框中选中Precompiled Headers,选择Not Using Precompiled headers。
确定。
2、在文件开头添加:#include "stdafx.h"对预编译头文件说明如下:所谓头文件预编译,就是把一个工程(Project)中使用的一些MFC标准头文件(如Windows.H、Afxwin.H)预先编译,以后该工程编译时,不再编译这部分头文件,仅仅使用预编译的结果。
这样可以加快编译速度,节省时间。
预编译头文件通过编译stdafx.cpp生成,以工程名命名,由于预编译的头文件的后缀是“pch”,所以编译结果文件是projectname.pch。
编译器通过一个头文件stdafx.h来使用预编译头文件。
stdafx.h这个头文件名是可以在project的编译设置里指定的。
编译器认为,所有在指令#include "stdafx.h"前的代码都是预编译的,它跳过#include "stdafx. h"指令,使用projectname.pch编译这条指令之后的所有代码。
WinPcap编程WinPcap是一个开源的、运行于Win32平台下的体系结构,它的主要功能是进行数据包捕获和网络分析。
它允许应用程序通过协议栈捕获和传输网络数据包,也包括内核级别的数据包过滤、网络静态引擎和支持远程数据包捕获等有用的功能。
WinPcap由两部分组成:1. 驱动程序: 扩展操作系统功能提供低层次的网络访问2. 动态链接库:运行在Win32平台上的应用程序可以非常方便地访问网络低层次的数据。
Ethereal是大名鼎鼎的捕获数据包专业软件,它的运行是在WinPcap的支持之下的,如果没有安装WinPcap,Ethereal也无法正常捕获数据包。
在正式WinPcap编程之前,要配置运行环境。
Win32 平台下WinPcap应用程序需要以下四个动态链接库才能正常运行:wpcap.dllPacket.dllWanPacket.dllpthreadVC.dll这四个动态链接库在WinPcap驱动程序里。
如果应用程序出现一下提示,那就是没有安装驱动程序的原因了。
被过滤广告也可以不安装WinPcap驱动程序。
但是需要把上面提到的四个动态链接库文件拷贝到系统分区/WINDOWS/system32目录下或者接下来配置编程环境。
如果一个源文件使用了WinPcap提供的库函数,那么就需要在该文件开始的位置添加pcap.h包含文件(或者在引用的文件中),即#include “pcap.h”也许会出现下面的错误:fatal error C1083: 无法打开包括文件:“pcap.h”: No such file or directory这个错误表明找不到pcap.h文件这个头文件在驱动程序安装完成后也是没有的,它是开发包里面的一个头文件所以,如果要运行程序还需要到官方网站上去下载WinPcap SDK―WpdPackWinPcap SDk里面包含库文件,头文件,文档文件和一些例子。
解压缩后把Include目录添加到IDE的包含文件中(VC6.0 Tools->Option->Directory; VS 2003/2005 工具->选项->项目和解决方案/项目->VC++目录)error LNK2019: 无法解析的外部符号_pcap_findalldevs_ex,该符号在函数XXX 中被引用如果发生上面的错误就表明缺少库文件,需要添加wpcap.lib到工程中(VC6.0 Project->Settings->Link->Object/library modules; VS 2003/2005 项目->添加现有项->所有文件)error C2065: “PCAP_SRC_IF_STRING”: 未声明的标识符error C3861: “pcap_findalldevs_ex”: 找不到标识符error C2065: “PCAP_OPENFLAG_PROMISCUOUS”: 未声明的标识符error C3861: “pcap_open”: 找不到标识符新的版本里WinPcap支持远程数据包获取,发生上面的错误很有可能是新的版本导致不兼容的问题,所以还应当添加一个头文件remote-ext.h ,即#include "remote-ext.h"如果还有问题,可以到WinPcaP官方网站上找FAQ。
VC安装失败的一些解决方案VC(Visual C++)是一种编程语言,用于开发Windows平台上的应用程序。
在进行VC安装过程中,可能会出现各种失败的情况。
以下是一些解决VC安装失败的常见问题和解决方案。
1.安装程序无法启动或一直停留在启动页面:- 确保系统已经完成所有的更新:打开Windows更新,检查并安装所有可用的更新。
-关闭临时停用任何防火墙或杀毒软件:有时,安全软件可能会阻止安装程序运行。
暂时关闭安全软件,然后尝试重新运行安装程序。
2.安装程序报告错误代码:-在错误代码上:将错误代码输入引擎,找到相关的解决方案并跟随指示进行修复。
- 运行Windows安装程序故障排除工具:Windows提供了一套用于识别和解决安装问题的工具。
在Windows设置中并运行“故障排除”,然后选择“修复Windows程序包安装”。
3.安装程序卡在其中一步骤上无法继续:-检查硬件兼容性:一些VC版本可能对硬件有特定的要求。
确保计算机的硬件满足VC版本的要求。
- 清理临时文件夹:在Windows资源管理器中,选择计算机的主驱动器,然后右键单击并选择“属性”。
在“常规”选项卡上,单击“磁盘清理”,然后选择您想要清理的文件类型。
然后,单击“确定”并等待清理完成。
4.安装程序在安装过程中崩溃或突然停止运行:- 更新操作系统:确保计算机上的Windows操作系统已更新到最新版本,以获取最新的安全修复和错误修复。
-禁用非必要的启动项目:运行MSCONFIG并在“启动”选项卡上禁用所有非系统必需的启动项目。
然后,重新启动计算机并尝试重新运行安装程序。
- 运行SFC扫描:在命令提示符中,键入“sfc /scannow”并按Enter键。
该命令将扫描并修复操作系统文件中的任何损坏。
基于WinPcap的程序开发一、WinPcap介绍1、WinPcap简介大多数Unix操作系统提供了一套允许应用程序直接与网络相互联系的系统调用。
这些指令对于那些需要通过网络捕获连续的包数据而不用内核进行过多的干预的包捕获应用程序非常有用。
在Windows 环境下,WinPcap就是这样一类工具。
WinPcap是一个在Windows操作系统下的免费、公开的用于直接访问网络的开发工具包(编程API)。
大多数Windows网络应用程序都是通过Winsock API(Windows套接口)这类高级编程接口访问网络的。
这种方法允许在网络上进行简单的数据传送,因为操作系统的TCP/IP协议栈实现软件会处理底层细节(协议操作、流程重组等等),并提供一个类似于读写文件的函数接口。
然而,有时候“简便方法”并不能满足实际需要。
有些程序希望绕过TCP/IP协议栈,直接处理底层网络中的通信数据,它们需要对网络进行底层进行直接访问,即在没有类似协议栈(TCP/IP协议栈)的实体介入条件下对网络进行原始访问。
基于Winsock API编程,应用程序是通过调用操作系统提供的编程接口访问TCP/IP协议栈实现网络通信的。
基于WinPcap编程,网络程序实际上是绕开操作系统的TCP/IP协议栈直接通过底层网络发送数据,因此,网络程序可以实现一些更低级、更灵活的功能。
2、WinPcap的目的和用途开发WinPcap的目的是为Win32应用程序提供一种直接访问底层网络的能力。
通过WinPcap,网络应用程序可以实现如下功能:1)捕获原始数据包,包括发送到本主机以及在共享网络上的数据包。
2)数据过滤。
在将数据包发送给应用程序之前按照用户的规定对捕获的数据包进行过滤。
3)发送原始数据包。
向网络发送原始数据包。
4)数据包统计。
对网络通信进行统计。
上述功能都通过一个设备驱动(这个驱动程序安装在Win32内核的网络部分)和一组动态连接库(DLL)获得。
实际上这个问题很多情况下是由于路径设置的问题引起的,“CL.exe”是VC使用真正的编译器(编译程序),其路径在“VC根目录\VC98\Bin”下面,你可以到相应的路径下找到这个应用程序。
因此问题可以按照以下方法解决:打开vc界面点击VC“TOOLS(工具)”—>“Option(选择)” —>“Directories(目录)”重新设置“Excutable Fils、Include Files、Library Files、Source Files”的路径。
很多情况可能就一个盘符的不同(例如你的VC装在C,但是这些路径全部在D),改过来就OK了。
如果你是按照初始路径安装vc6.0的,路径应为:executatble files:C:\Program Files\Microsoft Visual Studio\Common\MSDev98\BinC:\Program Files\Microsoft Visual Studio\VC98\BINC:\Program Files\Microsoft Visual Studio\Common\TOOLSC:\Program Files\Microsoft Visual Studio\Common\TOOLS\WINNTinclude files:C:\Program Files\Microsoft Visual Studio\VC98\INCLUDEC:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDEC:\Program Files\Microsoft Visual Studio\VC98\ATL\INCLUDElibrary files:C:\Program Files\Microsoft Visual Studio\VC98\LIBC:\Program Files\Microsoft Visual Studio\VC98\MFC\LIBsource files:C:\Program Files\Microsoft Visual Studio\VC98\MFC\SRCC:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDEC:\Program Files\Microsoft Visual Studio\VC98\ATL\INCLUDEC:\Program Files\Microsoft Visual Studio\VC98\CRT\SRC如果你装在其他盘里,则仿照其路径变通就行。
实验6 利用WinPcap技术捕获数据包实验目的:通过掌握WinPcap函数库的结构和功能,实现在windows环境下对网卡进行编程,进行网络数据包的捕获。
实验准备:(1)winpcap简介WinPcap 是由伯克利分组捕获库派生而来的分组捕获库,它是在Windows 操作平台上来实现对底层包的截取过滤。
WinPcap 为用户级的数据包提供了Windows 下的一个平台。
WinPcap 是 BPF 模型和 Libpcap 函数库在Windows 平台下网络数据包捕获和网络状态分析的一种体系结构,这个体系结构是由一个核心的包过滤驱动程序,一个底层的动态连接库 Packet.dll 和一个高层的独立于系统的函数库 Libpcap 组成。
底层的包捕获驱动程序实际为一个协议网络驱动程序,通过对 NDIS 中函数的调用为 Win95、Win98、WinNT、和 Win2000 提供一类似于 UNIX 系统下 Berkeley Packet Filter 的捕获和发送原始数据包的能力。
Packet.dll 是对这个 BPF 驱动程序进行访问的 API 接口,同时它有一套符合 Libpcap 接口(UNIX 下的捕获函数库)的函数库。
WinPcap的结构图如图1。
WinPcap 包括三个部分:第一个模块NPF(Netgroup Packet Filter),是一个虚拟设备驱动程序文件。
它的功能是过滤数据包,并把这些数据包原封不动地传给用户态模块,这个过程中包括了一些操作系统特有的代码。
第二个模块packet.dll为win32平台提供了一个公共的接口。
不同版本的Windows系统都有自己的内核模块和用户层模块。
Packet.dll用于解决这些不同。
调用Packet.dll的程序可以运行在不同版本的Windows平台上,而无需重新编译。
第三个模块 Wpcap.dll是不依赖于操作系统的。
它提供了更加高层、抽象的函数。
说明:本系列文章是我阅读winpcap手册后整理的一个学习笔记。
文章中出现的所有代码是我根据winpcap手册中的示例代码进行了学习,并调试通过,其中对部分代码作了修改,关于代码的版权我尊重winpcap手册中的版权说明,如果你使用了本系列文章中的代码而引起任何的版权或造成安全威胁等问题,我将不负任何责任。
下载好了WpdPack_3_2_alpha1.zip(下载地址:/install/bin/WpdPack_3_2_alpha1.zip),解压后除了有文档,例子外还有Include和lib,于是想用TC2来做开发环境,但是编译的时候老是出问题,于是放弃。
后来阅读了Winpcap手册后才知道因为是在windows上开发,所以它推荐用VC++6.0,于是改用VC。
第一个试验是:#include#includeint main() {pcap_if_t *alldevs;pcap_if_t *d;int i = 0;char errbuf[PCAP_ERRBUF_SIZE];/* Retrieve the device list from the local machine*/if (pcap_findalldevs_ex(PCAP_SRC_IF_STRING, NULL /* auth is not needed */, &alldevs, errbuf) == -1){printf("Error in pcap_findalldevs_ex: %s\n", errbuf);exit(1);}/* Print the list */for (d = alldevs; d != NULL; d = d->next){/* Print the device’s name */printf("%d. %s", ++ i, d->name);/* Print the device’s dscription */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 0;}/* We don’t need any more the device list. Free it */pcap_freealldevs(alldevs);return 1;}编译的时候又遇到问题——“无法打开pcap.h”。
WinPcap网络程序开发包下载及安装说明也可以自己去[url][/url]网上去下载。
附件中包含开发包的驱动程序,开发包和源代码。
安装说明解压后,直接运行exe文件,将会自动安装开发包的驱动程序。
把WpdPack_4_0_beta2.zip解压到合适的目录。
打开VC,点Tools---Options----Directories,在include files中添加......\wpdpack\include(解压WpdPack_4_0_beta2.zip包后得到的目录),同样,在library files 中添加......\wpdpack\lib目录。
在开发程序的过程中要用到这个开发包的时候,在VC中点击Projects---settings----Link,在Object/library modules中添加wpcap.lib 。
WinpCAP开发包使用中的问题:winpcap开发包在使用中还是会有一些容易被忽略的问题的,由于这些问题可能让您在开发中产生一些莫名奇妙的结果。
首先,我们从winpcap的环境配置中可能出现的错误开始。
winpcap开发环境需要是windows操作系统,而且必须安装winpcap驱动才可以调试您的程序。
如果您的程序调试出现类式如下问题:can't find wpcap.dll.............等找不到动态链接库的毛病,请先下载安装winpcap /install/bin/WinPcap_3_1.exe如果编译的时候出现Cannot open include file: 'pcap.h': No such file or directory等类式找不到文件的错误,请察看是否加入了winpcap开发包的include文件夹。
VC6下的加入方法是Tools-> options->Directories里面加入下载的winpcap开发包解压以后的include文件夹.如果链接的时候出现fatal error LNK1104: cannot open file "wpcap.lib"等问题,请察看是否加入了winpcap开发包的lib文件夹.VC6下的加入方法是Tools->options- >Directories的lib里面加入下载的winpcap开发包解压以后的lib文件夹.如果链接的时候出现error LNK2001: unresolved external symbol_pcap_findalldevs等问题,请察看link中是否加入了wpcap.lib.VC6下的加入方法是Project-> Settings->Link的Objects/library modules里面加入wpcap.lib。