PCAP详解:抓包(Packet Capture)是一种网络分析工具,PCAP是一个数据包抓取库

一、PCAP抓包

抓包(Packet Capture)是一种网络分析工具,而PCAP是一个数据包抓取库, 很多软件都是用它来作为数据包抓取工具的,比如WireShark也是用PCAP库来抓取数据包的。PCAP抓取出来的数据包并不是原始的网络字节流,而是对其进行从新组装,形成一种新的数据格式。它可以记录网络数据包的详细信息,包括源地址、目标地址、协议类型、数据内容等。

在 Linux 中,可以使用工具如 tcpdump 或 Wireshark 来进行抓包操作。以下是一些常见的抓包工具和示例用法:

tcpdump:

安装 tcpdump:如果系统未安装 tcpdump,可以使用包管理工具进行安装。例如,在 Debian/Ubuntu 系统中可以使用 sudo apt install tcpdump 命令安装。

抓取数据包:可以使用以下命令抓取指定网络接口的数据包,并将结果保存到文件中:

sudo tcpdump -i eth0 -w capture.pcap

其中 -i eth0 指定抓取的网络接口为 eth0,-w capture.pcap 指定将抓取的数据包保存到 capture.pcap 文件中。

查看抓包结果:可以使用 Wireshark 或 tcpdump 自带的命令行工具(例如 tcpdump -r capture.pcap)来查看抓取的数据包内容。

Wireshark:

安装 Wireshark:可以从 Wireshark 官网下载安装包,并根据系统进行安装。
使用 Wireshark 图形界面进行抓包操作:打开 Wireshark 图形界面,在菜单栏选择相应的网络接口(如 eth0),然后点击“开始捕获”按钮进行抓包。抓包结束后,可以保存捕获的数据包到 PCAP 文件中。

Tips:在使用抓包工具时需要管理员权限或 root 权限,以便访问网络接口并进行数据包捕获操作。另外,抓包操作会捕获网络上的所有数据包,包括敏感信息,请在合法授权和合规的情况下使用抓包工具。

PCAP详解:抓包(Packet Capture)是一种网络分析工具,PCAP是一个数据包抓取库

二、PCAP格式

pcap文件格式是bpf保存原始数据包的格式,很多软件都在使用,比如tcpdump、wireshark等等,
了解pcap格式可以加深对原始数据包的了解,自己也可以手工构造任意的数据包进行测试。pcap文件的格式为:

文件头header:24字节

数据包头 + 数据包 :数据包头为16字节,后面紧跟数据包

数据包头 + 数据包 …:一个用PCAP抓取的数据包的文件格式如下:

Pcap文件头24B各字段说明:

pcap.h里定义了文件头的格式

struct pcap_file_header {
	bpf_u_int32 magic;
	u_short version_major;
	u_short version_minor;
	bpf_int32 thiszone; 
	bpf_u_int32 sigfigs; 
	bpf_u_int32 snaplen; 
	bpf_u_int32 linktype; 
};

| magic |major | minor | thiszone | sigfigs | snaplen | linktype |

| d4 c3 b2 a1 | 02 00 | 04 00 | 00 00 00 00 | 00 00 00 00 | ff ff 00 00 | 01 00 00 00 |

Magic: 4B:0x1A 2B 3C 4D :用来标示文件的开始

Major: 2B,0x02 00 :当前文件主要的版本号

Minor: 2B,0x04 00 当前文件次要的版本号

ThisZone: 4B 当地的标准时间;全零

SigFigs: 4B 时间戳的精度;全零

SnapLen: 4B 最大的存储长度,4字节抓包最大长度如果要抓全,设为0x0000ffff

(65535),tcpdump -s 0就是设置这个参数,缺省为68字节

LinkType: 4B 链路类型

常用类型:

0 BSD loopback devices, except for later OpenBSD

1 Ethernet, and Linux loopback devices

6 802.5 Token Ring

7 ARCnet

8 SLIP

9 PPP

10 FDDI

100 LLC/SNAP-encapsulated ATM

101 “raw IP”, with no link

102 BSD/OS SLIP

103 BSD/OS PPP

104 Cisco HDLC

105 802.11

108 later OpenBSD loopback devices (with the AF_value in network byte order)

113 special Linux “cooked” capture

114 LocalTalk

其中我们最为常见的类型就是1,以太网链路。

Pcap数据包头各字段说明:

struct pcap_pkthdr {
	struct timeval ts; 
	bpf_u_int32 caplen; 
	bpf_u_int32 len; 
};
struct timeval {
	long tv_sec; 
	suseconds_t tv_usec; 
};

Timestamp:时间戳高位,精确到seconds;时间戳低位,精确到microseconds;8字节的抓包时间 ,4字节表示秒数,4字节表示微秒数;

Caplen:4字节 保存下来的包长度(最多是snaplen,比如68字节),即抓取到的数据帧长度,由此可以得到下一个数据帧的位置。

Len:4字节数据包的真实长度,即离线数据长度:网络中实际数据帧的长度,一般不大于caplen,多数情况下和Caplen数值相等。

Packet 数据:即 Packet(通常就是链路层的数据帧去掉前面用于同步和标识帧开始的8字节和最后用于CRC校验的4字节)具体内容,长度就是Caplen,这个长度的 后面,就是当前PCAP文件中存放的下一个Packet数据包,也就是说:PCAP文件里面并没有规定捕获的Packet数据包之间有什么间隔字符串,我 们需要靠第一个Packet包确定下一组数据在文件中的起始位置,向后以此类推。

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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/qq_61636702/article/details/137571766

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

 

广告也精彩
 
老罗爱折腾
  • 本文由 老罗爱折腾 发表于2024 年 4 月 25 日 05:35:00
  • 转载请务必保留本文链接:https://www.130510.com/1428.html
匿名

发表评论

匿名网友
:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:
确定

拖动滑块以完成验证