pcap文件介紹

1、簡介

        pcap  (packet capture)  是一種數據報的存儲格式,裏面是按照特定的格式進行存儲的,打開也需要特定的工具,普通文本編輯工具打開會出現亂碼的情況,wireshaek可以打開該類型的文件,並且wireshark可以生成該文件

2、文件格式

1.Pcap Header

    文件頭,每一個pcap文件只有一個文件頭,總共佔24(B)字節,以下是總共7個字段的含義。

    Magic(4B):標記文件開始,並用來識別文件和字節順序。值可以爲0xa1b2c3d4或者0xd4c3b2a1,如果是0xa1b2c3d4表示是大端模式,按照原來的順序一個字節一個字節的讀,如果是0xd4c3b2a1表示小端模式,下面的字節都要交換順序。現在的電腦大部分是小端模式。

    Major(2B):當前文件的主要版本號,一般爲0x0200

    Minor(2B):當前文件的次要版本號,一般爲0x0400

    ThisZone(4B):當地的標準事件,如果用的是GMT則全零,一般全零

    SigFigs(4B):時間戳的精度,一般爲全零

    SnapLen(4B):最大的存儲長度,設置所抓獲的數據包的最大長度,如果所有數據包都要抓獲,將值設置爲65535

    LinkType(4B):鏈路類型。解析數據包首先要判斷它的LinkType,所以這個值很重要。一般的值爲1,即以太網

    常用的LinkType(鏈路類型):

   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

2.Packet Header

 數據包頭可以有多個,每個數據包頭後面都跟着真正的數據包。以下是Packet Header的4個字段含義

 Timestamp(4B):時間戳高位,精確到seconds,這是Unix時間戳。捕獲數據包的時間一般是根據這個值

 Timestamp(4B):時間戳低位,能夠精確到microseconds

 Caplen(4B):當前數據區的長度,即抓取到的數據幀長度,由此可以得到下一個數據幀的位置。

 Len(4B):離線數據長度,網路中實際數據幀的長度,一般不大於Caplen,多數情況下和Caplen值一樣

3.Packet Data   

 Packet是鏈路層的數據幀,長度就是Packet Header中定義的Caplen值,所以每個Packet Header後面都跟着Caplen長度的Packet Data。也就是說pcap文件並沒有規定捕獲的數據幀之間有什麼間隔字符串。Packet數據幀部分的格式就是標準的網絡協議格式了。

最後來個實例,pcap文件的16進制格式

紅色部分是Pcap Header,藍色部分是Packet Header,當然這是從pcap文件的起始部分開始的。希望別嫌棄這扭曲的線條

Pcap Header的Magic:d4 c3 b2 a1,表示是小端模式,後面的字節從後往前讀。

Pcap Header的Major:02 00,計算機讀的應該是00 02。最大存儲長度SnapLen:ff ff 00 00 ,同理計算機讀的應該是00 00 ff ff,所以是2的16次方減一,是65535個字節。LinkType:01 00 00 00 ,實際是00 00 00 01,是以太網類型。

藍色部分的Packet Header我就不一一說了,重點關注Caplen:c5 01 00 00,計算機讀的是00 00 01 c5,轉換成十進制就是453,所以後面的453個字節都是一個數據幀。之後就又是一個Pcap Header,如此循環。

同樣的文件用wireshark打開看一下:

 可以看到第一個數據幀,就是453個字節。還可以看底下的數據幀的16進制原始數據和上面藍色部分之後的數據是不是一樣。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章