`
isiqi
  • 浏览: 16705485 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论
阅读更多

函数1:

int pcap_datalink(pcap_t* p)

返回链路层上的一个适配器。返回链路层的类型,链路层的类型包括:

DLT_NULL: BSD回路封装;链路层协议头是一个4字节的域,以主机字节顺序(host byte order),包含一个从socket.h来的PF_value。主机字节顺序(host byte order)是捕获数据包的机器的字节顺序,而PF_value是捕获数据包的机器的OS。如果一个读取一个文件,字节顺序和PF_value不一定是抓取文件的那些机器。

DLT_EN10MB: 以太网(10Mb, 100Mb, 1000Mb, 或者更高)。

DLT_IEEE802: IEEE802.5令牌环网。

DLT_ARCNET:ARCNET。

DLT_SLIP:SLIP。

DLT_PPP:PPP;如果第一个字节是0xff或0x03,它是类HDLC帧上的PPP。

DLT_FDDI:FDDI

DLT_ATM_RFC1483:RFC1483LLC/SNAP ATM;数据包以IEEE802.2 LLC头开始。

DLT_RAW:原始IP(raw IP);数据包以IP头开始。

DLT_PPP_SERIAL:按照RFC1662,基于类HDLC帧的PPP,或者按照RFC1547的4.3.1,基于HDLC帧的Cisco PPP;前者的第一个字节是0xFF,后者的第一个字节是0x0F或0x8F。

DLT_PPP_ETHER:按照RFC2516,PPPoE;数据包以PPPoE头开始。

DLT_C_HDLC:按照RFC1547的4.3.1,基于HDLC帧的Cisco PPP。

DLT_IEEE802_11:IEEE 802.11无线局域网。

DLT_FRELAY:帧中继(Frame Relay)。

DLT_LOOP:OpenBSD回路封装。

DLT_LINUX_SLL:Linux抓包封装。

DLT_LTALK:苹果的LocalTalk,数据包以AppleTalk LLAP头开始。

DLT_PFLOG:OpenBSD pflog。

DLT_PRISM_HEADER:后接802.11头的棱镜监视器模式(Prism monitor mode)信息。

DLT_IP_OVER_FC:RFC2625 IP-over-Fiber 频道,以RFC2625中定义的Network_Header开始。

DLT_SUNATM:SunATM设备。

DLT_IEEE802_11_RADIO:后接802.11头的链路层信息。

DLT_ARCNET_LINUX:没有异常帧的ARCNET。

DLT_LINUX_IRDA:Linux-IrDA数据包,DLT_LINUX_SLL头后接IrLAP头。

函数2:

int pcap_compile(pcap_t*p,

struct bpf_program*fp,

char*str,

intoptimize,

bpf_u_int32netmask)

编译一个数据包过滤器,将一个能被核心态(kernel-level)过滤器引擎解释的程序中的高层过滤表达式(filtering expression)进行转化。pcap_compile()被用来将字符串str编译进过滤器程序(fp),程序(fp)是一个指向bpf_program结构体并被pcap_compile()赋值的指针。optimize控制是否对目标代码(resulting code)的性能进行优化。Netmask表明IPv4掩码,它仅在检查过滤器程序中的IPv4广播地址的时候被使用。如果网络掩码对于程序是不可知的或者数据包是在Linux的”任何(any)”伪接口上被捕获的,则赋值0;IPv4广播地址的测试将不被正确进行,但过滤器程序中的其他所有的测试都不会有问题。返回-1表示发生了错误,此时,pcap_geterr()将被用来显示错误信息。

函数3:

int pcap_setfilter(pcap_t*p,

struct bpf_program* fp)

把一个过滤器同一次抓包关联起来。pcap_setfilter被用来指定一个过滤器程序。fp是一个指向bpf_program结构体的指针,通常是pcap_compile()执行的结果。当失败时返回-1,此时,pcap_geterr()被用来显示错误信息;返回0表示成功。

首先,首先我们设置过滤器为“ip and udp”。用这个方法我们可以确保packet_handler()仅接收IPv4上的UDP数据包:这就简化了解析过程并且提高了程序的效率。

我们还创建了IP和UDP两个结构体,这些结构体被packet_handler()用来定位不同的头域。

packet_handler()展现了像tcpdump/WinDump这些复杂的嗅探器(sniffer)如何解析网络数据包。因为我们不关心MAC头,所以我们跳过它。为了简便起见,抓包前我们用pcap_datalink()检查MAC层,以确保我们处理的是以太网。该方法可以确保MAC头是14字节。

IP头的定位在MAC头定位之后。我们从IP包头中取出源IP地址和目标IP地址。

展开UDP包头有点复杂,因为IP包头不是定长的。因此,我们使用IP包头的长度域来获得它的大小。一旦我们知道了UDP头的位置,我们可以取出源端口和目的端口。

分享到:
评论

相关推荐

    winpcap函数集合(附代码实例)

    WinPcap 函数集合 WinPcap 是一个跨平台的网络嗅探器库,提供了一个通用的 API 来捕获网络数据包。下面是 WinPcap 函数集合的详细说明: 结构体介绍 WinPcap 中定义了多个结构体,用于描述网络接口、数据包和捕获...

    基于winpcap网络嗅探器 VC++源码+说明文档资料.zip

    2、捕获所有流经网卡的数据包,并利用 WinPcap 函数库设置过滤规则。 3、分析捕获到的数据包的包头和数据,按照各种协议的格式进行格式化显 示。 4、将所开发工具的捕获和分析结果与常用的嗅探器,如 Wireshark,...

    winpcap 中文技术文档

    - Packet.dll动态链接库:包含主要的WinPCAP函数实现。 - pcap.dll动态链接库:用于数据包捕获和分析,是libpcap库的Windows版本。 3. **WinPCAP的主要功能** - 实时数据包捕获:记录网络接口上的所有传输数据。...

    WinPcap数据包捕获程序

    2. **包含头文件**:在C++代码中包含`#include <pcap.h>`,引入必要的WinPcap函数和结构体。 3. **初始化**:使用`pcap_open_live()`函数打开网络接口,并设置捕获参数。 4. **设置过滤器**:利用`pcap_compile()`和...

    基于Winpcap的网络抓包工具

    2. **导入库函数**:在项目中,你需要包含Winpcap的头文件,如`<winpcap.h>`,这将提供访问Winpcap函数的接口。 3. **初始化**:使用`wpcap_init()`函数初始化Winpcap库,这将允许你访问网络接口。 4. **打开网络...

    VC_实现基于Winpcap的网络数据包捕获与分析

    #### 三、基于WinPcap函数库的VC++设计 在使用VC++进行基于WinPcap的网络数据包捕获时,需要定义几个关键的数据结构,例如描述网络适配器和数据包结构的变量。此外,还需要遵循一定的步骤来实现数据包的捕获: 1. ...

    带有MFC图形界面的winpcap抓包

    2. **集成WinPCap库**:将WinPCap库添加到项目中,并配置编译环境以正确链接和使用WinPCap函数。 3. **编写捕获逻辑**:在MFC事件处理函数中,编写代码来初始化WinPCap设备,设置过滤器,启动捕获,以及处理捕获到...

    基于WinPcap端口扫描器的设计和实现.pdf

    ### 基于WinPcap端口扫描器的设计与实现 #### 技术背景与重要性 在当今高度互联的世界中,网络安全已成为企业和个人不可忽视的关键议题。随着网络攻击手段的日益复杂化,确保网络环境的安全变得尤为重要。端口扫描...

    winpcap抓包软件

    3. **启动抓包**:调用WinPcap函数开始捕获网络数据包。 4. **处理数据包**:接收到数据包后,程序可以进行分析、存储或进一步处理。 5. **停止抓包**:完成任务后,调用相关函数停止数据包捕获。 总的来说,...

    基于winpcap网络嗅探器 Visual C++ 语言源码+说明文档资料.zip

    2、捕获所有流经网卡的数据包,并利用 WinPcap 函数库设置过滤规则。 3、分析捕获到的数据包的包头和数据,按照各种协议的格式进行格式化显 示。 4、将所开发工具的捕获和分析结果与常用的嗅探器,如 Wireshark,...

    Winpcap常用函数

    Winpcap库包含了多个函数,用于实现不同功能,如网络设备的枚举、数据包的捕获和处理等。以下将详细介绍标题和描述中提到的几个常用函数。 1. `pcap_findalldevs(pcap_if_t **, char *)` 这个函数用于获取系统中...

    winpcap在vc6下配置环境

    winpcap在vc6下配置环境,winpcap函数 四步骤捕获报文.

    用VC_实现基于Winpcap的网络数据包捕获与分析

    #### 三、基于WinPcap函数库的VC++设计 为了实现基于WinPcap的网络数据包捕获,需要定义一些必要的数据结构,并按照一定的流程进行操作。 ##### 1. 设备数据定义 - `LADAPTER lpadapter`:描述一个网络适配器。 - ...

    winpcap教程 函数 用法

    WinPcap教程:深入理解函数用法与关键数据结构 WinPcap是Windows平台上一个强大的网络数据包捕获和网络分析工具。它为应用程序提供了一个底层接口,允许它们访问网络接口层的数据包,并进行捕获、过滤、发送等操作...

    网络编程底层函数库WinPCAP资料.rar

    这篇文档将详细介绍WinPCAP的基础知识,包括其功能、工作原理、主要结构体和函数,以及如何进行程序开发。 1. **WinPCAP的功能** WinPCAP的核心功能包括数据包的捕获、网络数据包过滤、网络数据的发送以及网络接口...

    基于WinPcap和MFC实现的网络嗅探器

    基于WinPcap和MFC实现的网络嗅探器 ,捕获所有流经网卡的数据包,并利用 WinPcap 函数库设置过滤规则, 分析捕获到的数据包的包头和数据,按照各种协议的格式进行格式化显示 winPcap+MFC实现网络嗅探器

    基于C语言实现网络Sniffer(嗅探器)【100011972】

    捕获所有流经网卡的数据包,并利用WinPcap函数库设置过滤规则; 分析捕获到的数据包的包头和数据,按照各种协议的格式进行格式化显示; 支持协议:TCP、UDP、ARP、ICMP、HTTP、IPv4、IPv6 可以本地文件的形式来保存...

    WinPcap+中文技术文档

    WinPcap用户指南 定义 输出函数 过滤串表达式的语法 使用WinPcap编程 WinPcap教程: 循序渐进教您... 对于提供远程捕获的函数引用, 请参阅WinPcap 输出函数 章节的 "Windows-specific Extensions" . 核心数据结构与定义

    嗅探工具_探针_

    捕获所有流经网卡的数据包,并利用WinPcap函数库设置过滤规则。 ? 分析捕获到的数据包的包头和数据,按照各种协议的格式进行格式化显示。 ? 将所开发工具的捕获和分析结果与常用的Sniffer进行比较,完善程序代码。

Global site tag (gtag.js) - Google Analytics