WinPcap学习笔记

科研小tip1| winpcap的win11安装教程 解决Win11上winpcap库的使用问题 阅读详情
2008年05月09日 星期五 下午 05:33
这是上学期上的《网络编程实践》课上,老师提供的学习文档。基本上算比较基础的内容了。第三部分有一些源代码,发过来的时候我删掉了,都是WinPcap官方提供的文档里面的例子,官方文档的内容其实已经非常完整了,如果英文看不懂的话,网上搜索一下也有中文的版本。把官方文档的教程看完了也就能掌握基本的了。

——————————————————————————————————————————————————————

一、什么是WINPCAP
winpcap(windows packet capture)是windows平台下一个免费、开源、公共的网络访问系统。开发winpcap这个项目的目的在于为win32应用程序提供访问网络底层的能力。它的主要功能是进行数据包捕获和网络分析。它允许应用程序通过协议栈捕获和传输网络数据包,也包括内核级别的数据包过滤、网络静态引擎和支持远程数据包捕获等有用的功能。它提供了以下的各项功能:
1> 捕获原始数据报,包括在共享网络上各主机发送/接收的以及相互之间交换的数据报;
2> 在数据报发往应用程序之前,按照自定义的规则将某些特殊的数据报过滤掉;
3> 在网络上发送原始的数据报;
4> 收集网络通信过程中的统计信息。
winpcap的主要功能在于独立于主机协议(如TCP-IP)而发送和接收原始数据报。也就是说,winpcap不能阻塞,过滤或控制其他应用程序数据报的发收,它仅仅只是监听共享网络上传送的数据报。因此,它不能用于QoS调度程序或个人防火墙。
目前,winpcap开发的主要对象是windows NT/2000/XP,这主要是因为在使用winpcap的用户中只有一小部分是仅使用windows 95/98/Me,并且M$也已经放弃了对win9x的开发。因此本文相关的程序T-ARP也是面向NT/2000/XP用户的。其实winpcap中的面向9x系统的概念和NT系统的非常相似,只是在某些实现上有点差异,比如说9x只支持ANSI编码,而NT系统则提倡使用Unicode编码。
WinPcap由两部分组成:
驱动程序: 扩展操作系统功能提供低层次的网络访问
动态链接库:运行在Win32平台上的应用程序可以非常方便地访问网络低层次的数据。
Ethereal是大名鼎鼎的捕获数据包专业软件,它的运行是在WinPcap的支持之下的,如果没有安装WinPcap,Ethereal也无法正常捕获数据包。

二、WINPCAP编程环境设置

在正式WinPcap编程之前,要配置运行环境。
1、运行环境设置
Win32 平台下WinPcap应用程序需要以下四个动态链接库才能正常运行:wpcap.dll Packet.dll WanPacket.dll pthreadVC.dll
这四个动态链接库在WinPcap驱动程序里。
如果没有这个驱动程序,需要到WinPcap官方网站上下载,下载地址为:www.WinPcap.org
如果应用程序出现一下提示,那就是没有安装驱动程序的原因了。
也可以不安装WinPcap驱动程序。但是需要把上面提到的四个动态链接库文件拷贝到系统分区/WINDOWS/system32目录下。(似乎有些问题)

2、配置编程环境。
1> 从WWW.WINPCAP.ORG上下载WINPCAP SDK -WpdPack,WinPcap SDk里面包含库文件,头文件,文档文件和一些例子。解压到一个指定的目录。解压缩后把Include目录添加到IDE的包含文件中(VC6.0 Tools->Option->Directory; VS 2003/2005 工具->选项->项目和解决方案/项目->VC++目录); lib目录添加为新的库文件目录(VC6.0 Tools->Option->Directory; VS 2003/2005 工具->选项->项目和解决方案/项目->VC++目录)如下图所示。

2> 如果一个源文件使用了WinPcap提供的库函数,那么就需要在该文件开始的位置添加pcap.h包含文件(或者在引用的文件中),即#include “pcap.h”
也许会出现下面的错误:
fatal error C1083: 无法打开包括文件:“pcap.h”: No such file or directory
这个错误表明找不到pcap.h文件,这个头文件在驱动程序安装完成后也是没有的,它是开发包里面的一个头文件,所以,如果要运行程序还需要到官方网站上去下载WinPcap SDK,并按步骤1添加到项目中。

3> 在程序中添加wpcap.lib。如果出现下面错误
error LNK2019: 无法解析的外部符号_pcap_findalldevs_ex,该符号在函数XXX 中被引用,如果发生上面的错误就表明缺少库文件,需要添加wpcap.lib到工程中(VC6.0 Project->Settings->Link->Object/library modules; VS 2003/2005 项目->添加现有项->所有文件)如下图所示:

4> 新的版本里WinPcap支持远程数据包获取,所以还应当添加一个头文件remote-ext.h ,即#include "remote-ext.h"(记住这条语句要放在#include “pcap.h”之后,否则会出错!)
否则会发生下面的错误
error C2065: “PCAP_SRC_IF_STRING”: 未声明的标识符
error C3861: “pcap_findalldevs_ex”: 找不到标识符
error C2065: “PCAP_OPENFLAG_PROMISCUOUS”: 未声明的标识符
error C3861: “pcap_open”: 找不到标识符

5> 或者不用添加#include "remote-ext.h".在VC.NET提供的IDE环境中,可以通过执行“项目”菜单中的的“属性”进入该项目的属性配置页,通过选择“配置属性”树中的“C/C++预处理哭”选项就增加’WPCAP’和’HAVE_REMOTE’两个标号。如下图所示:
6> 如果还有问题,可以到WinPcaP官方网站上找FAQ。

三、WINPCAP编程入门
利用WINPCAP捕获数据包一般要经过以下几个步骤
1、获取网络接口列表
通常, 一个基于WinPcap的应用程序所要做的第一件事, 就是获得适合的网络接口的列表.pcap_findalldevs()(或者pcap_findalldevs_ex())函数就是干这活的: 这个函数返回一个pcap_if结构的列表, 每个元素都记录了一个接口的信息. 其中, name和description以人类可以阅读的形式, 记录了设备的信息.
2、获取设备的高级信息
WinPcap 也可以为我们提供关于接口的更多信息. 由 pcap_findalldevs() 函数返回的 pcap_if 结构也包含了一个 pcap_addr 结构的列表, 它记录了以下信息:
1. 接口的地址列表
2. 接口的掩码列表 (与地址列表一一对应)
3. 接口的广播地址列表 (与地址列表一一对应)
4. 目标地址列表 (与地址列表一一对应)
3、打开一个接口并捕捉流量
现在我们已经知道如何获取一个接口的有关信息了, 我们可以来点真家伙了 -- 打开一个接口并捕捉流量. 接下来我们会编译一个程序, 它将捕捉网络中所有的数据包并输出他们的一些相关信息。我们使用函数 pcap_open_live() 来打开一个捕捉设备. 这里, 我们需要解释一下 snaplen, promisc 和 to_ms 参数.
函数原型: pcap_t * pcap_open_live (char *device, int snaplen, int promisc, int to_ms, char *ebuf)
"snaplen" 参数指定了要捕捉的数据包的部分. 在某些操作系统中 (如 xBSD 和 Win32), 驱动程序提供了只捕捉每个数据包其中一部分的可能性: 这样就降低了要处理的数据的量, 从而提高了捕捉程序的效率. 在例子中, 我们使用一个高出 MTU 最大值的值 (65536) 以确保可以捕捉到成个数据包.
"promisc" =1表明接口将会被设置为混杂模式. 一般情况下, 接口只处理目标地址为自己的数据; 到其他主机的数据包将会被忽略. 然而当一个接口处于混杂模式时, 它将会处理全部的流量: 也就是说, 在共享媒介, 例如非交换型以太网 (比如基于集线器的网络 )中, WinPcap 可以捕捉到所有主机的数据包. 混在模式是多数捕捉程序的默认模式, 所以我们在例子中也采用这种模式.
"to_ms" 用以设置超时, 单位是毫秒. 一个从接口读取 ( Y- 捕捉) 的操作, (例如 pcap_dispatch() 或者 pcap_next_ex()), 如果没有捕捉到数据包, 那么在超过指定的时间以后就会返回. 进一步说, 如果接口处在静态模式中, to_ms 也定义了静态报告的间隔时间 (参阅 "Gathering Statistics on the network traffic " 以获取更多信息). 设置 to_ms 为 0, 则说明永远不会超时, 如果没有数据包到达, 那么捕捉操作将会永远不会返回, 而将其值设置为 -1 则会立刻返回.
winpcap 发包工具 源码较为简单,只有四个文件,详细的实现可以参看工程代码,结合百度,对初学者来说也很容易掌握。在图中指定的网卡上,用wireshark抓包,可以看到该网卡发送的所有的数据包。此下载地址中有多个工程,其中的sendpack即此文中的发包项目。命令行下输入sendpack.exe test.pcap。sendpack.exe:源码编译出来的可执行程序。test.pcap:需要发送的数据包抓包文件。 阅读详情

相关推荐

WinPcap是一款用于网络数据包捕获和分析的开源软件

它是Windows平台上的一个库和驱动程序的组合,提供了一组功能强大的API和工具,允许开发人员编写自定义网络应用程序,以便捕获和处理网络流量。在这个示例中,回调函数只是简单地打印出捕获到的数据包长度,你可以根据自己的需求在这个函数中进行更复杂的处理和分析。总之,WinPcap是一个功能强大的网络数据包捕获和分析工具,通过使用WinPcap库,开发人员可以轻松地编写自定义的网络应用程序,并对网络流量进行实时或离线的捕获和处理。此外,为了能够正确地捕获网络数据包,你可能需要以管理员权限运行程序。

2301_79326588的博客 2371

winpcap开发包使用中的问题总结

winpcap开发包在使用中还是会有一些容易被忽略的问题的,由于这些问题可能让您在开发中产生一些莫名奇妙的结果。     首先,我们从winpcap的环境配置中可能出现的错误开始。     winpcap开发环境需要是windows操作系统,而且必须安装winpcap驱动才可以调试您的程序。 如果您的程序调试出现类式如下问题:can't find wpcap.dll................

weixin_34096182的博客 1895

告别轮询!手把手教你用S32K3的FlexCAN Enhanced FIFO+DMA实现高效CAN FD数据接收

本文详细介绍了如何利用S32K3芯片的FlexCAN Enhanced FIFO与DMA组合方案,实现高效CAN FD数据接收,彻底告别传统轮询和中断模式。通过深度缓冲、智能过滤和DMA联动技术,该方案在5Mbps高负载场景下将CPU占用率从42%降至3%以下,显著提升系统实时性和吞吐量。

weixin_30906185的博客 502

wincap_stdio 2008

 WinPcap学习笔记2008年05月09日 星期五 下午 05:33这是上学期上的《网络编程实践》课上,老师提供的学习文档。基本上算比较基础的内容了。第三部分有一些源代码,发过来的时候我删掉了,都是WinPcap官方提供的文档里面的例子,官方文档的内容其实已经非常完整了,如果英文看不懂的话,网上搜索一下也有中文的版本。把官方文档的教程看完了也就能掌握基本的了。—

技术花园 664

第33次CCF-CSP认证考试 第一题 词频统计 满分题解

本人小白一枚,抱着学习的态度想到网上找一些csp的参考答案,但由于实力有限,大佬的代码大都看不太懂,于是萌生了想用一些简单,基础的语句完成csp前两题的想法并公开,以便与像我这样实力不强的同学交流学习,如有更好的建议,还请斧正,感谢!

qq_75242106的博客 1869

用Spirent Test Center测试交换机Head of Line(HOL)Blocking

测试目的:设备执行拥塞控制,使非阻塞端口不受阻塞端口影响 预设条件:在RFC2889里按以下步骤设置,端口1和端口3同时向端口4发送数据包,端口1向端口2发送数据包 测试步骤:运行设置好的RFC2889 测试结果:所有frame size都显示没有Head of Line(HOL),即非阻塞端口不受阻塞端口所影响 ...

Yuna_的博客 1358

Winpcap学习笔记

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...

lee353086的专栏 1056

frp 内网渗透案例:端口转发 + 二级代理(深入理解 frp 在内网渗透中的技巧)

本文使用 vulnstack7 靶场作为测试环境,解释 frp 内网渗透特殊使用姿势,通过此案例来提高内网渗透能力。接下来的演示环境只做了以下修改。攻击者 vps 的 ip 修改为:192.168.72.162。DMZ 区域的 ubuntu 的 ip1 修改为:192.168.72.129。先引入问题,当我们控制了 DMZ 的 ubuntu 并且拿到第二层网络的 ubuntu 的 rce 后,会出现以下两个问题。如何搭建隧道让 ubuntu 反弹 shell 给攻击者 vps?

anddddoooo的博客 1766

winpcap学习笔记

VC++ 6.0 中使用WinPcap 下载并安装WinPcap,安装之后在目录”C:/WINDOWS/system32“下WinPcap添加了Packet.dll、wpcap.dll。 增加WinPcap的include和lib路径: Tools→Options→Directories,其中include文件的路径增加WinPcap的include路径(其中有pcap.h等头文件

leonard520的专栏 931

BMD101传感器协议解析与STM32实现(LCD显示波形)

1 前言 BMD101传感器是神念科技开发的心电传感器。目前有一些商家开发了BMD101传感器模块,基本上都是利用蓝牙直接传输数据到PC或手机端。而本文介绍通过串口将数据传送给单片机,并在单片机上完成数据解析和心电波形LCD显示的功能。 2 通信协议解读 BMD101 通过 UART 接口通信。这是一个标准的 UART 接口,定义为 1 个起始位,8 个数据位,1 停止位格式,波特率 57600。 串口输出的数据包格式如下: 包括Header(帧头)、data payload(数据有效载荷)、CRC校验

weixin_44509533的博客 9289

你知道吗?其实这些都是AI——农作物监控AI

随着全球人口的不断增长,粮食需求日益增加。为了应对这一挑战,现代农业正在迅速转型,引入了许多先进技术来提高生产效率和作物产量。在这些技术中,人工智能(AI)在农作物监控方面的应用显得尤为重要。通过利用AI技术,农民和农业专家可以更好地管理农作物的生长,预防病虫害,并优化灌溉和施肥方案,从而实现农业生产的智能化和精准化。

AI科研社 367

winpcap 学习笔记(1)

<br />版权信息:<br /><br />本文来自internet,转载这里供网络编程爱好者学习和研究使用,请尊重作者的劳动成果。未经授权而在商业上使用原作者的文章属侵权行为,后果由使用者自负,本人不承担任何法律责任。<br /> <br />说明:本系列文章是我阅读winpcap手册后整理的一个学习笔记。文章中出现的所有代码是我根据winpcap手册中的示例代码进行了学习,并调试通过,其中对部分代码作了修改,关于代码的版权我尊重winpcap手册中的版权说明,如果你使用了本系列文章中的代码而引起任何的

smilestone322的专栏 1148

爆肝5万字❤️Open3D 点云数据处理基础(Python版)

本文为Open3D 点云数据处理基础教程(Python版),小白也能轻松上手!还等什么呢,学起来!

孙悟空 13万+

winpcap学习笔记1

1.pcap_if_t结构体,表示适配器列表中的一项 struct pcap_if { struct pcap_if *next; char *name; /* name to hand to "pcap_open_live()" */ char *description; /* textual description of...

weixin_33735077的博客 180

模型压缩技术:剪枝、量化与知识蒸馏实战

模型压缩技术:剪枝、量化与知识蒸馏实战,在深度学习领域,模型的性能往往与模型的规模紧密相关,更大的模型通常能学习到更复杂的模式,从而在任务中取得更好的效果。然而,随着模型规模的不断增大,其在实际应用中面临着诸多挑战,如内存占用高、计算资源需求大、推理速度慢等问题,这使得在资源受限的设备(如移动设备、嵌入式设备)上部署变得困难重重。模型压缩技术应运而生,它旨在在尽可能保持模型性能的前提下,通过各种方法减少模型的参数数量和计算量,提高模型的效率和可部署性。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 5万+

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Winpcap学习笔记(2)

<br />版权信息:<br /><br />本文来自internet,转载这里供网络编程爱好者学习和研究使用,请尊重作者的劳动成果。未经授权而在商业上使用原作者的文章属侵权行为,后果由使用者自负,本人不承担任何法律责任。<br /> <br />今天在阅读Winpcap Manual的时候发现一句话: <br />       “This means that on shared media (like non-switched Ethernet), WinPcap will be able to cap

smilestone322的专栏 1189

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

winpcap学习笔记--(Sending Packet)

感觉winpcap的发包的函数做得有点呵呵啊,没啥用的感觉。。。

菜逼成长录 2892

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

WinPcap学习笔记一:搭建安装环境

一、下载WinPcap安装包和开发包1.首先是winpcap的安装包,下载地址:http://www.winpcap.org/install/default.htm下载完成后,直接打开安装,一路默认,OK搞定。2.接着下载开发包,下载地址:http://www.winpcap.o

icelemon1314的专栏 1939

Winpcap学习笔记(1)--,Protocol Analysis

说明:本系列文章是我阅读winpcap手册后整理的一个学习笔记。文章中出现的所有代码是我根据winpcap手册中的示例代码进行了学习,并调试通过,其中对部分代码作了修改,关于代码的版权我尊重winpcap手册中的版权说明,如果你使用了本系列文章中的代码而引起任何的版权或造成安全威胁等问题,我将不负任何责任。

hyzshua1230的专栏 1009

winpcap学习笔记系列1------环境的配置

1.什么是winpcap: 官方网站:http://www.winpcap.org/ winpcap(windows packet capture)是windows平台下一个免费,公共的网络访问系统。开发winpcap这个项目的目的在于为win32应用程序提供访问网络底层的能力。 文档手册:http://www.ferrisxu.com/WinPcap/html/index.html 2.

daijope的专栏 1194

winpcap学习笔记--(Handling offline dump files--2)

这个是把dumpfile里面东西全部读出来并以16进制表示

菜逼成长录 833

winpcap学习笔记--(Capturing the packets without the callback)

最近学习winpcap总算走上点道路了,呵呵,继续加油!!! #define WIN32 #define HAVE_REMOTE #include #include "pcap.h" // Function prototypes void ifprint(pcap_if_t *d); char *iptos(u_long in); char* ip6tos(struct sockadd

菜逼成长录 736
上一篇: VS2008 winpcap配置(解决fatal error C1083: Cannot open include file: 'sys/time.h'...
下一篇: 如何破解邮箱密码
clearver
博客等级 码龄17年 119粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值