2018年8月9日 星期四

pcap file format

pcap 是廣泛用來儲存封包的檔案格式,內容包括 1 個 Global Header 加上 0 個以上封包。每個封包有 Record Header 放時間和長度,以及 Record Data 放封包本身。封包可能任何長度,存放時不管位元組對齊 (byte alignment):

Global Header
24-byte
Record Header
16-byte
Record Data
Record Header
16-byte
Record Data
...

Global Header 有 24-byte:
  • 32-bit magic_number:用來偵測檔案格式和位元組順序,用原生位元組順序寫入 0xa1b2c3d4 或 0xa1b23c4d (奈秒精度)。讀取時如果位元組有調換 (swap),接下來的欄位也需要調換。
  • 16-bit version_major, 16-bit version_minor:格式版本,目前是 2.4。
  • 32-bit thiszone:Record Header 的 ts_sec 調整成 GMT 時間要加的秒數。實際上,ts_sec 都用 GMT,所以 thiszone 都是 0。
  • 32-bit sigfigs:是要放 time stamp 的 accuracy,但實際上都設為 0。
  • 32-bit snaplen (snapshot length): 最多只擷取封包前面的 byte 數。
  • 32-bit network: 封包一開始的 header type,例如 1 是 Ethernet,還有 802.11、PPP、LAPD 等。
16-byte Record Header
  • 32-bit ts_sec:擷取時的 Epoch 秒數。如果不是 GMT 時間,用 thiszone 調整。
  • 32-bit ts_usec:秒下的微秒或奈秒 (由不同 magic_number 決定)。
  • 32-bit incl_len:封包擷取的長度,最大應該是 orig_len 或 snaplen。
  • 32-bit orig_len:封包原始長度。
限制:
  • 無處放其它資訊,例如註解 (如:哪個封包後開始斷線)、界面資訊 (如:界面編號、方向、網卡製造商等)、計數值 (如 packet drop count) 等。

參考

  1. https://wiki.wireshark.org/Development/LibpcapFileFormat
  • libpcap
  • pcapng 檔案格式
  • 取出語音:https://stackoverflow.com/questions/6073868/how-to-stream-pcap-file-to-rtp-rtcp-stream
  • 串流語音:http://sipp.sourceforge.net/doc/reference.html#PCAP+Play
  • http://www.signal11.us/oss/playcap/
  • http://www.cs.columbia.edu/irt/software/rtptools/
  • wireshark

沒有留言:

張貼留言

SIP header Via

所有 SIP 訊息 都要有 Via,縮寫 v。一開始的 UAC 和後續途經的每個 proxy 都會疊加一個 Via 放傳送的位址,依序作為回應的路徑。 格式 sent-protocol sent-by [ ;branch= branch ][ ; 參數 ...] s...