pcap_datalink

2023-12-01 18:58
文章标签 pcap datalink

本文主要是介绍pcap_datalink,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

返回链路层的类型,链路层的类型包括:

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,

int                              optimize,

bpf_u_int32                netmask)

    编译一个数据包过滤器,将一个能被核心态(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头的位置,我们可以取出源端口和目的端口。

这篇关于pcap_datalink的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/442317

相关文章

pypcap、libpcap和pcap-ct的区别是什么

pypcap、libpcap 和 pcap-ct 均与网络数据包处理相关,但它们存在一些区别。 pypcap 是对 C libpcap 的封装,提供了更具 Python 风格的 API 接口,方便在 Python 中使用。然而,其在 Windows 10 上可能存在安装问题。 libpcap 是一个基于 ctypes 库的轻量级 Python 包,完全兼容原始 C libpcap 从 1.0.

python使用 pcap 库捕获网络数据包,附示例

以下为您提供使用 Python 的 pcap 库捕获网络数据包的示例及相关信息: 在 Python 中,可以使用 pcap 库来实现网络数据包的捕获。例如: import pcap# 创建 pcap 实例pc = pcap.pcap()# 设置过滤条件,例如捕获 TCP 端口为 80 的数据包pc.setfilter('tcp port 80')# 开始抓包for timestamp,

VeloView操作:pcap数据转csv数据

1、pcap 数据参数查看 读取 pcap 数据时,需要其对应的 yaml 参数文件进行坐标转换配置,其中会用到的参数信息如下图所示: 2、pcap 数据导入 在 VeloView 软件主界面,点击 File-Open-Capture File,在弹出的对话框中选择要导入的 pcap 文件,弹出如下图所示的参数配置文件; 依据上节中的 yaml 参数文件,对下图中的参数文件进行

Pyshark——安装、解析pcap文件

1、简介 PyShark是一个用于网络数据包捕获和分析的Python库,基于著名的网络协议分析工具Wireshark和其背后的libpcap/tshark库。它提供了一种便捷的方式来处理网络流量,适用于需要进行网络监控、调试和研究的场景。以下是PyShark的一些关键特性和使用方法的介绍:主要特性 捕获网络流量:可以捕获实时的网络流量,也可以读取已经捕获的pcap文件。协议解码:能够解析多种网络

将单条十六进制字符串转换为单个 pcap 文件

第一步:将字符串转换为 hex 格式文件 echo 01005e00000ac20173fe0000080045c0003c000000000258cd9f0a000001e000000a0205ee68000000000000000000000000000000640001000c010001000000000f000400080c040102 | xxd -r -p | od -Ax -tx

第十篇红队笔记-百靶精讲之Tr0ll-FTP-wireshark(pcap)

主机发现 nmap扫描 FTP渗透 匿名登陆 查看pcap文件 wireshark strings Web渗透 sup3rs3cr3tdirlol roflmao 0x0856BF Crackmapexec密码喷射破解 Crackmapexec密码喷射破解-失败 Crackmapexec密码喷射破解-成功-需要偶然打乱用户表行 Crackmapexec确实

java解析Pcap(io.pkts)

目前解析Pcap的第三方库有Pcap4j、JnetPcap等,这两个库需要调用Native代码,window下运行需要dll文件,linux下需要so包,跨平台特性不是很好,现在推荐使用io.pkts来解析Pcap网络报文,纯java代码就可以实现,使用起来非常方便,跨平台特性非常好。 下面简单介绍下如何使用: 1、新建Gradle工程,在build.gradle文件增加下面依赖

送别PI-DataLink,行列视(RCV)完美替代

行列视(RCV)和 OSI PI 实时数据库自带的 PI-DataLink 报表工具,属于以实时数 据库为主要数据源的报表产品。  PI-DataLink 是专门针对 PI 实时数据库系统开发的一套 Excel 报表插件,功能强大,借助 Excel 自身的强大报表能力,可以解决大部分报表需求,但其缺点也非常明显,那就是缺少自动化,没有报表管理能力,所有报表都以 Excel文件的方式存储在个人电脑

【C语言踩坑】PCAP发送ARP包之 --多出的字节

PCAP发送ARP包之多出的字节 ------------------------------------------------------------------------------------------------------------------- 最近接触了一些计算机网络的底层协议,试着做了一个发送和接收ARP报文的demo,刚开始没注意,后来使用wireshark抓包才发

wireshark数据流分析学习日记day3-从 Pcap 导出对象

从 HTTP 流量导出文件 过滤http请求 发现get请求上传了两个文件 保存即可  也可以保存网页 点击保存  改文件名为html结尾以便于访问 请谨慎使用此方法。如果从 pcap 中提取恶意 HTML 代码并在 Web 浏览器中查看它,则 HTML 可能会调用恶意域,这就是为什么我们建议在隔离的测试环境中执行此操作。 从 SMB 流量导出文件 若从以下环境获取流