1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

パケットファイル(.pcap)の生データ

1
Last updated at Posted at 2025-05-15

きっかけ

CTFのハリネズミ本を読んでいると、.pcapの生データに関する記述がありました。
最近はアセンブリ命令しか見ていないので、機械語の方にも目を向けてもいいかなと…

.pcapファイル

libpcap(Packet Capture Library)は、wireshakeなどのlibpcapというライブラリを使用したパケットを保存するためのファイルフォーマットです。

構成

  1. libpcap header
  2. packet header
  3. pakcet data

の3段構造になっている。

libpcap header

スクリーンショット 2025-05-15 211745.png

libpcap headerはpcapファイルの情報を格納する場所です。
ファイル先頭の4バイトはD4 C3 B2 A1となっており、.pcapファイルと判別することができる。
(リトルエンディアンになっていることに注意)

補足

16進数は1文字に4ビット使用します(0001(1)~1111(F))。
画像からわかるように2文字8ビット(=1バイト)毎に区切られています。

  • libpcapファイルフォーマットのバージョン
    • majour version:2バイト
    • minor version:2バイト
    • 最新バージョンは2.4
  • タイムゾーン情報
    • timezone:4バイト
    • 基本値は0x00000000
  • タイムスタンプの精度
    • sigfigs:4バイト
    • 基本値は0x00000000

ここまでが画像の一行目にあたります。


  • キャプチャできる最大パケット長
    • snaplen:4バイト
    • 基本値は0x0000FFFF
    • 画像では0x00400000
  • データリンク層のヘッダタイプ
    • linktype:4バイト
    • Ethernetの場合、0x00000001

packet header

  • パケットがキャプチャされた時の日付
    • 前4バイトはUNIX時刻型式の日付
    • 後ろ4バイトはマイクロ秒
    • 前4バイトは46 D8 25 69となっている

UNIX時刻型式

1970年1月1日午前0時からの経過秒数で表します。
今回は、6925D846秒つまり、1747310662秒経過したことになります。
計算すると、2025年5月15日 21:04:22のパケットファイルだという事がわかります。

余談ですが、2038年にシステムのエラーが多発すると言われている原因がこれにあります。
C言語では、UNIX時刻型式が32ビット符号付整数型(最大21億4748万3647)で表現されている。最大値を日付に変換すると2038年1月19日3次14分7秒となります。


  • パケットの長さ
    • caplen:4バイト(記録されているパケット長)
    • len:4バイト(実際のパケット長)
    • 基本的に同じ値
    • 画像では見切れているが、4E 00 00 00 4E 00 00 00となっている

まとめ

先頭4ビットによってファイル形式が特定でき、それ以降のデータに意味が生まれます。
他ファイルではどのように定義されているのか気になりました。

参考

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?