Pcap文件格式解析

一、24字节pcap文件头(一个文件只有一个),linktype为链路层类型,决定数据帧头结构,其他没啥用

	typedef struct PcapFileHeader
	{
		unsigned long magic;       /* 0xa1b2c3d4 */
		unsigned short version_major;   /* magjor Version 2 */
		unsigned short version_minor;   /* magjor Version 4 */
		unsigned long thiszone;      /* gmt to local correction */
		unsigned long sigfigs;     /* accuracy of timestamps */
		unsigned long snaplen;     /* max length saved portion of each pkt */
		unsigned long linktype;    /* data link type (LINKTYPE_*) */
	}PcapFileHeader_t;

二、Pcap包头(一个文件可以有很多个包),

	//时间戳
	typedef struct PcapTime_val
	{
		long tv_sec;         /* seconds 含义同 time_t 对象的值 */
		long tv_usec;        /* and microseconds */
	}PcapTime_val_t;
	//pcap数据包头结构体
	typedef struct PcapPackageHeader
	{
		struct PcapTime_val ts;  /* time stamp */
		unsigned long caplen; /* length of portion present *///标识所抓获的数据包保存在pcap文件中的实际长度,以字节为单位
		unsigned long len;    /* length this packet (off wire) *///所抓获的数据包的真实长度,如果文件中保存不是完整的数据包,那么这个值可能要比前面的数据包长度的值大
	}PcapPackageHeader_t;

三、数据帧头

链路层决定结构(看客自己找吧,本人遇到的那一种就不说了),内有Protocal记录IPv4或IPv6

四、IPv4数据报头,Protocal记录为TCP还是UDP或其他

	typedef struct PcapIPv4Header	//20字节
	{ //IP数据报头
		unsigned char Ver_HLen;       //版本+报头长度
		unsigned char TOS;            //服务类型
		unsigned short TotalLen;       //总长度
		unsigned short ID; //标识
		unsigned short Flag_Segment;   //标志+片偏移
		unsigned char TTL;            //生存周期
		unsigned char Protocol;       //协议类型
		unsigned short Checksum;       //头部校验和
		unsigned long SrcIP; //源IP地址
		unsigned long DstIP; //目的IP地址
	}PcapIPv4Header_t;

IPv6数据报头

	typedef struct PcapIPv6Header	//40字节
	{ 
		unsigned long FlowLabel;
		unsigned short PayloadLength;
		unsigned char NextHeader;
		unsigned char HopLimit;
		unsigned char Source[16];
		unsigned char Destination[16];
	}PcapIPv6Header_t;

五、常用协议头,TCP头为公有部分,后面还有可选项部分,需要通过IP头的报头长度与公有部分长度计算

	//TCP数据报头
	typedef struct PcapTCP_PublicHeader
	{ //TCP数据报头
		unsigned short SrcPort; //源端口
		unsigned short DstPort; //目的端口
		unsigned long SeqNO; //序号
		unsigned long AckNO; //确认号
		unsigned char HeaderLen; //数据报头的长度(4 bit) + 保留(4 bit)
		unsigned char Flags; //标识TCP不同的控制消息
		unsigned short Window; //窗口大小
		unsigned short Checksum; //校验和
		unsigned short UrgentPointer;  //紧急指针
	}PcapTCP_PublicHeader_t;
	//UDP数据头
	typedef struct PcapUDPHeader
	{
		unsigned short SrcPort;     // 源端口号16bit
		unsigned short DstPort;    // 目的端口号16bit
		unsigned short len;        // 数据包长度16bit
		unsigned short checkSum;   // 校验和16bit
	}PcapUDPHeader_t;
	//ICMP数据头
	typedef struct PcapICMPHeader
	{
		unsigned char type;			//类型8位
		unsigned char code;			//代码8位
		unsigned short checkSum;	//校验和16bit
	}PcapICMPHeader_t;

六、以上为所有头结构,后面部分为payload,Pcap包头记录的长度与头长度计算可得到

参考:1、网络资料一些整理,不单我说很多资料有问题

           2、使用Wireshark解析实验验证

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Wireshark是一个流行的网络协议分析工具,它允许用户捕获和分析网络数据包PCAP文件是Wireshark使用的一种数据格式,用于存储捕获到的网络数据包PCAP文件格式具体说明了文件的结构和存储方式,以便于其他工具或程序能够正确地解析和处理这些文件。 PCAP文件由全局文件(Global Header)和数据包(Packet Header)组成。全局文件记录了文件的版本信息、网络接口类型等元数据。每个数据包都由数据包数据包负载组成。数据包包含了数据包的时间戳、数据包长度等信息。 要解析PCAP文件,可以借助Wireshark软件本身或者使用编程语言中的相关库,如libpcap或WinPcap。在Java程序中,可以使用WireShark库进行解析,并在后台查看PCAP包的内容。 PCAP文件解析的过程包括读取PCAP文件的全局文件,然后逐个读取数据包数据包负载,以提取所需的信息。例如,可以通过解析数据包中的时间戳和源/目的IP地址来分析网络流量的来源和目标。 总结起来,Wireshark可以使用PCAP文件解析网络数据包PCAP文件的结构和格式可以通过参考了解。在Java程序中,可以使用WireShark库进行解析,并在后台查看PCAP包的内容。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Wireshark文件pcap的格式详细解析有实例(Global Header、Packet Header)](https://blog.csdn.net/Hollake/article/details/90108950)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [借助WireShark解析PCAP包](https://blog.csdn.net/q35222806/article/details/78817811)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值