Java之Pcap文件解析(一:Pcap格式分析)(转)

原文地址:https://blog.csdn.net/gulu_gulu_jp/article/details/50494909

前言

需求

本系列文章主要完成以下功能: 
1. 对Pcap文件进行解析,并从中提取TCP和UDP会话 
2. 从TCP会话中提取出其数据负载信息

软件最终结果

[主界面] 
Java之Pcap文件解析(一:Pcap格式分析)(转) 
[File 菜单] 
Java之Pcap文件解析(一:Pcap格式分析)(转) 
[Help 的 About 菜单项,版权声明] 
Java之Pcap文件解析(一:Pcap格式分析)(转) 
[选择Pcap文件] 
Java之Pcap文件解析(一:Pcap格式分析)(转) 
[选择输出目录] 
Java之Pcap文件解析(一:Pcap格式分析)(转) 
[正在解析] 
Java之Pcap文件解析(一:Pcap格式分析)(转) 
[解析测试1:对pcap1.pcap进行解析] 
Java之Pcap文件解析(一:Pcap格式分析)(转)
Java之Pcap文件解析(一:Pcap格式分析)(转) 
Java之Pcap文件解析(一:Pcap格式分析)(转) 
Java之Pcap文件解析(一:Pcap格式分析)(转) 
Java之Pcap文件解析(一:Pcap格式分析)(转) 
[解析测试2:对music.pcap进行解析,这是一首音乐] 
Java之Pcap文件解析(一:Pcap格式分析)(转)
Java之Pcap文件解析(一:Pcap格式分析)(转)
Java之Pcap文件解析(一:Pcap格式分析)(转)
Java之Pcap文件解析(一:Pcap格式分析)(转) 
我们拿其中的一个数据负载信息的txt文件改掉其后缀名,变为.mp3,看看是否能播放音乐 
Java之Pcap文件解析(一:Pcap格式分析)(转) 
Java之Pcap文件解析(一:Pcap格式分析)(转)

Pcap文件分析

1.Pcap文件结构说明

Pcap文件是wireshark配置脚本文件。可以用Wireshark软件打开。其内容的格式为“Pcap文件头 数据包头数据包数据包头数据包……”,其中Pcap 文件头占24个字节且唯一,即一个Pcap文件中只有一个Pcap文件头。Pcap 数据包头占16字节,其后面紧跟这数据包。数据包中又分为三层,即以太网数据帧(占据14个字节)、IP包头(一般为20字节)、TCP/UDP。 
[图1 Pcap文件结构]: 
Java之Pcap文件解析(一:Pcap格式分析)(转)

[图2 Pcap文件详细结构图]: 
Java之Pcap文件解析(一:Pcap格式分析)(转)

2.TCP 包头

根据上方的结构图,可以知道 TCP 的包头结构,如下:

  • Source Port:源端口,16位。 Destination Port:目的端口,16位。 Sequence
  • Number:发送数据包中的第一个字节的***,32
  • Acknowledgment Number:确认***,32位。 Data
  • Offset:数据偏移,4位,该字段的值是TCP首部(包括选项)长度除以4。
  • Flag:标志位,标识TCP不同的控制消息,8 位
  • Window:接收缓冲区的空闲空间,16位,用来告诉TCP连接对端自己能够接收的最大数据长度。
  • Checksum:校验和,16位。
  • Urgent Pointers:紧急指针,16位,只有URG标志位被设置时该字段才有意义,表示紧急数据相对***(Sequence Number字段的值)的偏移 
    [TCP详细结构图] 
    Java之Pcap文件解析(一:Pcap格式分析)(转)

3.UDP 包头

UDP报头由4个域组成,其中每个域各占用2个字节,具体如下:

  • 源端口号
  • 目标端口号
  • 数据报长度:指包括报头和数据部分在内的总字节数
  • 校验值 
    [UDP详细结构图] 
    Java之Pcap文件解析(一:Pcap格式分析)(转)