capinfosコマンド徹底解説:pcapファイル分析の効率化 🚀

セキュリティツールネットワーク

ネットワークのトラブルシューティングやセキュリティ分析において、パケットキャプチャファイル(pcapファイル)の解析は不可欠な作業です。しかし、巨大なpcapファイルを扱う際、その概要を素早く把握するのは容易ではありません。そこで活躍するのが、Wiresharkスイートに含まれるコマンドラインツール capinfos です。

capinfos を使うと、pcapファイルを開かずに、ファイルの種類、パケット数、キャプチャ時間、平均データレートなどの重要なメタ情報を簡単に取得できます。これにより、分析の初期段階でファイルの内容を効率的に把握し、その後の詳細な分析計画を立てるのに役立ちます。この記事では、capinfos の基本的な使い方から、便利なオプション、実践的な活用例までを詳しく解説していきます。😊

WiresharkのGUIツールは非常に高機能ですが、CUIツールであるcapinfosは、特にスクリプト処理や大量のファイルに対する一括処理において強力な味方となります。さあ、capinfosの世界を探求し、あなたのpcapファイル分析スキルを次のレベルへと引き上げましょう!

capinfos は、Wireshark に同梱されているコマンドラインユーティリティの一つです。その主な目的は、pcap (Packet Capture) や pcapng (PCAP Next Generation) 形式などのキャプチャファイルのメタデータや統計情報を表示することです。

具体的には、以下のような情報を取得できます。

  • ファイルタイプ(pcap, pcapngなど)
  • ファイルのカプセル化タイプ(Ethernet, IEEE 802.11など)
  • 含まれるパケット数
  • ファイルサイズ
  • キャプチャ期間
  • 最初のパケットと最後のパケットのタイムスタンプ
  • 平均データレート(バイト/秒、ビット/秒)
  • 平均パケットサイズ
  • 平均パケットレート(パケット/秒)
  • スナップショット長(パケットごとの最大キャプチャバイト数)
  • ファイルのハッシュ値(SHA1, MD5など)
  • インターフェース情報(pcapngファイルの場合)
  • コメント情報(pcapngファイルの場合)

capinfos は、Wiresharkがサポートするすべてのキャプチャファイル形式を読み取ることができます。ファイル拡張子に依存せず、ファイルの内容から自動的に形式を判別します。また、gzip, zstd, lz4などで圧縮されたファイルも自動的に展開して読み込むことが可能です。

このツールは、特に以下のような場面で役立ちます。

  • 大量のpcapファイルを扱う際に、個々のファイルを開かずに概要を把握したい場合。
  • スクリプトを使って複数のpcapファイルの情報を自動的に収集・集計したい場合。
  • 特定の条件(例: 特定の期間にキャプチャされたファイル、特定のパケット数を持つファイルなど)に合致するファイルを素早く見つけたい場合。
  • ファイルの破損や不整合がないか、基本的な情報を確認したい場合。

capinfos は、Wiresharkのインストールディレクトリに含まれています。通常、Wiresharkをインストールすると、システムのパスに自動的に追加されるため、コマンドプロンプトやターミナルから直接 capinfos コマンドを実行できます。

capinfos の基本的な構文は非常にシンプルです。

capinfos [オプション] <入力ファイル名> ...

複数の入力ファイルを指定することも可能です。その場合、各ファイルの情報が順番に出力されます。

オプションを指定しない場合:

オプションを何も指定せずにファイル名だけを指定すると、デフォルトの動作として、利用可能なすべての情報が「ロングレポート形式 (long report format)」で表示されます。これは人間が読みやすい形式です。

capinfos example.pcapng

出力例 (ロングレポート形式):

File name:           example.pcapng
File type:           Wireshark/... - pcapng
File encapsulation:  Ethernet
File timestamp precision: microseconds (6)
Packet size limit:   file hdr: (not set)
Number of packets:   1234
File size:           567890 bytes
Data size:           550000 bytes
Capture duration:    60.123456 seconds
First packet time:   2025-03-30 10:00:00.123456
Last packet time:    2025-03-30 10:01:00.246912
Data byte rate:      9147.77 bytes/sec
Data bit rate:       73182.18 bits/sec
Average packet size: 445.70 bytes
Average packet rate: 20.52 packets/sec
SHA256:              e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
RIPEMD160:           9c1185a5c5e9fc54612808977ee8f548b2258d31
SHA1:                da39a3ee5e6b4b0d3255bfef95601890afd80709
Strict time order:   True
Capture oper-sys:    Linux 5.15.0-generic
Capture application: Dumpcap 4.0.1
Number of interfaces: 1
Interface #0 info:
                     Name = eth0
                     Description = Ethernet Interface
                     Encapsulation = Ethernet (1 - ether)
                     Capture length = 262144
                     Time precision = microseconds (6)
                     Time ticks per second = 1000000
                     Time resolution = 0x06
                     Operating system = Linux 5.15.0-generic
                     FCS length = -1
                     TSF: Time source = xxx
Number of resolved addresses: 0
Number of decryption secrets: 0
Number of comments:  1
Comment #1:          This is a sample capture file.

このように、ファイルに関する詳細な情報がリスト形式で表示されます。フィールド名とその値がペアになっているため、直感的に理解しやすいでしょう。

テーブル形式での表示

複数のファイルを比較したり、スクリプトで処理したりする場合には、テーブル形式での出力が便利です。-T オプションを使用します。

capinfos -T example1.pcap example2.pcapng

出力例 (テーブル形式):

File name	File type	File encap	Packet size limit	Num packets	File size	Data size	Duration	First packet	Last packet	Data byte rate	Data bit rate	Avg packet size	Avg packet rate	SHA256	RIPEMD160	SHA1	Strict time order	Number of interfaces
example1.pcap	Wireshark/... - pcap	Ethernet	262144	500	120000	115000	30.5	2025-03-30 09:00:00.000	2025-03-30 09:00:30.500	3770.49	30163.93	230.00	16.39	aabbcc...	ddeeff...	001122...	True	-
example2.pcapng	Wireshark/... - pcapng	Ethernet	-	1234	567890	550000	60.12	2025-03-30 10:00:00.123	2025-03-30 10:01:00.246	9147.77	73182.18	445.70	20.52	e3b0c4...	9c1185...	da39a3...	True	1

テーブル形式では、各ファイルの情報が1行で表示され、各フィールドはタブ文字で区切られます(デフォルト)。区切り文字は -m オプション(カンマ区切り)や -Q オプション(ダブルクォートで囲む)などで変更できます。これにより、CSVファイルとして出力して表計算ソフトで扱ったり、他のプログラムで簡単にパースしたりすることが可能です。

注意点として、テーブル形式ではインターフェースの詳細情報やコメントなどは表示されません。

capinfos には、表示する情報を選択したり、出力形式を調整したりするための多くのオプションがあります。ここでは、よく使われる主要なオプションについて解説します。

オプションは基本的に -<文字> の形式で指定します。オプションなしの場合はロングレポート形式ですべての情報が表示されますが、何らかのオプションを指定すると、指定した情報のみが表示されるようになります。

オプション 説明 出力例 備考
-t キャプチャファイルのタイプを表示します。 File type: Wireshark/... - pcapng pcap, pcapng など。
-E キャプチャファイルのカプセル化タイプを表示します。 File encapsulation: Ethernet Ethernet, IEEE 802.11, PPP など、データリンク層のタイプ。
-H ファイルのハッシュ値 (SHA256, RIPEMD160, SHA1, MD5など) を表示します。 SHA256: e3b0...
RIPEMD160: 9c11...
SHA1: da39...
ファイルの同一性確認に利用できます。
-k キャプチャコメントを表示します。 Comment #1: This is a sample capture file. pcapngファイルのみ対応。テーブル形式では表示されません。
-K キャプチャコメントの表示を抑制します。 (コメントが表示されなくなる) デフォルトではコメントは表示されます。
サイズ関連情報
-c ファイルに含まれるパケット数を表示します。 Number of packets: 1234 最も基本的な情報の一つ。
-s ファイルサイズをバイト単位で表示します。 File size: 567890 bytes ディスク上のファイルの大きさ。
-d ファイル内の全パケットのデータ部分の合計長を表示します(バイト単位)。 Data size: 550000 bytes ヘッダ等を除いた実際のデータ量に近い値。スナップショット長の影響を受ける前の本来のパケット長で計算されます。
-l パケットサイズ制限 (スナップショット長) を表示します。 Packet size limit: file hdr: 1514 bytes キャプチャ時に設定された、1パケットあたりの最大キャプチャバイト数。
時間関連情報
-u キャプチャ期間を秒単位で表示します。 Capture duration: 60.123456 seconds 最初のパケットと最後のパケットの時間差。
-a 最初のパケットのタイムスタンプを表示します。 First packet time: 2025-03-30 10:00:00.123456 ファイル内で最も古いタイムスタンプを持つパケット。必ずしもファイルの先頭にあるとは限りません。
-e 最後のパケットのタイムスタンプを表示します。 Last packet time: 2025-03-30 10:01:00.246912 ファイル内で最も新しいタイムスタンプを持つパケット。必ずしもファイルの末尾にあるとは限りません。
-o キャプチャファイル内のパケットが時系列順に並んでいるか (True/False) を表示します。 Strict time order: True Falseの場合、パケットの順序が入れ替わっている可能性があります。
-S 開始時刻と終了時刻をエポック秒 (Unixタイム) で表示します。 Start time: 1743298800.123456 seconds
End time: 1743298860.246912 seconds
スクリプト処理などで便利です。
統計情報
-y 平均データレートをバイト/秒で表示します。 Data byte rate: 9147.77 bytes/sec Data size / Capture duration で計算されます。
-i 平均データレートをビット/秒で表示します。 Data bit rate: 73182.18 bits/sec Data byte rate * 8 で計算されます。
-z 平均パケットサイズをバイト単位で表示します。 Average packet size: 445.70 bytes Data size / Number of packets で計算されます。
-x 平均パケットレートをパケット/秒で表示します。 Average packet rate: 20.52 packets/sec Number of packets / Capture duration で計算されます。
出力形式関連
-L ロングレポート形式で出力します (デフォルト)。 (オプションなしと同じ形式) 他のオプションと組み合わせる際に明示的に指定することもあります。
-T テーブル形式で出力します。 (上記のテーブル形式例を参照) スクリプト処理や複数ファイルの比較に便利。
-m テーブル形式の区切り文字をカンマ (,) にします。 (フィールド間がカンマで区切られる) -T と共に使用します。CSV出力に。
-t (区切り文字) テーブル形式の区切り文字をタブ文字にします (デフォルト)。 (フィールド間がタブで区切られる) -T と共に使用します。明示的にタブ区切りを指定したい場合に。
-N ロングレポート形式で、数値などを人間が読みやすい単位 (k, M, Gなど) ではなく、生の数値で表示します。 File size: 567890 テーブル形式では常に生の数値で表示されます。
-q エラー発生時に処理を中断せず、次のファイルの処理を続行します (デフォルト)。 (エラーがあっても処理が続く)
-Q テーブル形式で、各フィールドをダブルクォーテーション (“) で囲みます。 "example.pcapng","Wireshark/... - pcapng", ... -T と共に使用します。区切り文字を含むフィールドがある場合に有効。
-r エラーが発生した場合、追加のファイルの処理をキャンセルします。 (エラーが発生した時点で処理が停止する) デフォルト(-q)とは逆の動作。
その他
-I インターフェースの詳細情報を表示します。 Interface #0 info:
   Name = eth0
   ...
pcapngファイルで有効。テーブル形式では表示されません。
-D ファイルに含まれる復号化シークレットの数を表示します。 Number of decryption secrets: 0 TLSセッションキーなどが埋め込まれている場合にカウントされます。テーブル形式では表示されません。
-v バージョン情報を表示して終了します。 Capinfos (Wireshark) 4.x.y ...
-h ヘルプメッセージを表示して終了します。 (オプション一覧が表示される)

これらのオプションを組み合わせることで、必要な情報だけを効率的に抽出できます。例えば、特定のディレクトリにあるすべてのpcapファイルのパケット数とキャプチャ期間だけをCSV形式で出力したい場合は、次のようにします。

capinfos -T -c -u -m /path/to/captures/*.pcap > output.csv

これにより、output.csv というファイルに、ファイル名、パケット数、期間がカンマ区切りで記録されます。

capinfos は単体でも便利ですが、他のコマンドラインツールと組み合わせたり、スクリプト内で活用したりすることで、さらに強力なツールとなります。ここでは、いくつかの実践的な活用例を紹介します。

1. 大量ファイルのバッチ処理とレポート作成

多数のpcapファイル (例: サーバーログの一部として日々生成されるファイル) の統計情報をまとめてレポート化したい場合があります。前述のように -T オプションと区切り文字オプション (-m-t) を使うことで、簡単にCSVやTSV形式のデータを作成できます。

# カレントディレクトリの全pcapngファイルの主要情報をCSVに出力
capinfos -T -c -s -u -a -e -y -i -z -x -m *.pcapng > capture_summary.csv

生成された capture_summary.csv を表計算ソフトで開けば、ファイルの比較やソート、グラフ化などが容易に行えます。

2. 特定条件に合うファイルの検索

特定の期間にキャプチャされたファイルや、特定のサイズ以上のファイルを探したい場合があります。シェルの機能や grep, awk などのツールと組み合わせることで、このような検索が可能です。

例: 2025年3月30日にキャプチャされたファイルを見つける

# capinfosで開始時刻とファイル名を出力し、grepで日付を検索
capinfos -T -a *.pcap* | grep "2025-03-30" | cut -f 1

このコマンドは、-T でテーブル形式、-a で開始時刻を表示させ、grep で日付 “2025-03-30” を含む行を抽出し、cut で1番目のフィールド(ファイル名)のみを取り出しています。

例: 100万パケット以上を含むファイルを見つける

# capinfosでパケット数とファイル名を出力し、awkで条件判定
capinfos -T -c *.pcap* | awk -F'\t' '$2 >= 1000000 { print $1 }'

このコマンドは、-T でテーブル形式、-c でパケット数を表示させ、awk を使ってタブ区切り(-F'\t')の2番目のフィールド(パケット数)が100万以上の場合に、1番目のフィールド(ファイル名)を出力しています。

3. 他のWireshark/TSharkツールとの連携

capinfos で得た情報を元に、tshark (CUI版Wireshark) や editcap (ファイル編集ツール)、mergecap (ファイル結合ツール) など、他のツールでの処理につなげることができます。

例: 非常に大きなファイル (>1GB) のみを対象に、tshark で特定の統計情報を抽出する

# ファイルサイズを取得し、1GB (1073741824バイト) 以上のファイル名を抽出
large_files=$(capinfos -T -s *.pcap* | awk -F'\t' '$2 >= 1073741824 { print $1 }')

# 抽出したファイル名に対して tshark で処理を実行
for file in $large_files; do
  echo "Processing $file ..."
  tshark -r "$file" -q -z io,stat,1,"COUNT(frame)frame" # 例: 1秒間隔のパケット数統計
done

このスクリプトは、まず capinfosawk を使って1GB以上のファイル名をリストアップし、その後、for ループで各ファイルに対して tshark コマンドを実行しています。

4. ファイルの健全性チェック

キャプチャプロセス中に問題が発生したり、ファイルが破損したりすることがあります。capinfos を実行して基本的な情報(パケット数、期間など)が表示されるかを確認することで、ファイルが少なくとも部分的には読み取り可能であることの簡単なチェックになります。

# ファイルを開けるか、基本的な情報が取得できるかを確認
capinfos some_capture.pcapng

# エラーが出た場合の処理 (終了コードを確認)
if ! capinfos some_capture.pcapng > /dev/null 2>&1; then
  echo "Error: Failed to read info from some_capture.pcapng"
  # ここにエラー処理を記述 (例: ファイルを隔離するなど)
fi

終了コード ($? in bash) を確認することで、capinfos が正常に終了したかどうかを判定し、スクリプト内でエラーハンドリングを行うことができます。

これらの例はほんの一部です。capinfos の出力とシェルの機能を組み合わせることで、pcapファイル管理と分析の自動化や効率化に関する様々なタスクを実現できます。

capinfos は非常に便利なツールですが、利用する上でいくつか注意すべき点や、遭遇する可能性のある問題があります。

1. 情報の精度と限界

  • タイムスタンプの精度: 表示される時間の精度 (例: マイクロ秒、ナノ秒) は、元のキャプチャファイルに記録されている精度に依存します。古い形式のpcapファイルでは精度が低い場合があります。(-N オプションなしのロングレポート形式で精度が表示されます)
  • Data Size vs File Size: -d (Data size) は、パケットのスナップショット長 (snaplen) が適用される前の本来のパケット長に基づいて計算されます。一方、-s (File size) はディスク上の実際のファイルサイズです。スナップショット長が小さい場合、これらの値は大きく異なる可能性があります。
  • Strict Time Order: -o で表示される時系列順序は、ファイル内のパケットのタイムスタンプに基づいています。これが False であっても、必ずしもキャプチャに問題があったとは限りません (例: 複数のインターフェースからのマージなど)。しかし、分析時には注意が必要です。
  • 巨大なファイル: 非常に巨大なファイル (数GB以上) に対して capinfos を実行すると、特にハッシュ値の計算 (-H) などが含まれる場合、完了までに時間がかかり、多くのメモリを消費する可能性があります。

2. よくあるエラーと対処法

  • capinfos: Can't open xxx: No such file or directory
    • 原因: 指定したファイルが存在しないか、パスが間違っています。
    • 対処法: ファイル名とパスを確認してください。相対パスを使用している場合は、カレントディレクトリが正しいか確認します。
  • capinfos: The file "xxx" appears to be damaged or corrupt.
    • 原因: ファイルが破損している可能性があります。ヘッダー情報が不正であったり、途中でファイルが切れていたりする場合に発生します。
    • 対処法: 可能であれば、ファイルを再取得します。破損が軽微な場合は、editcap などのツールで修復を試みることができるかもしれませんが、完全な復旧は難しい場合が多いです。
  • capinfos: The file "xxx" is not a capture file in a format TShark understands.
    • 原因: 指定したファイルが、Wireshark/TSharkがサポートするキャプチャファイル形式 (pcap, pcapng など) ではありません。
    • 対処法: ファイル形式を確認してください。意図しないファイルを指定していないか確認します。
  • capinfos: Option -X unknown (Xは存在しないオプション文字)
    • 原因: 指定したオプションが存在しません。タイプミスの可能性があります。
    • 対処法: capinfos -h で利用可能なオプションを確認し、正しいオプションを指定してください。

3. スクリプトでの利用時の注意点

  • ファイル名に空白や特殊文字が含まれる場合: スクリプト内でファイル名を扱う際は、空白や特殊文字が含まれている可能性を考慮し、ファイル名をダブルクォーテーションで囲むようにしてください。
    # 悪い例 (ファイル名に空白があるとエラー)
    for file in $(ls *.pcap); do capinfos $file; done
    
    # 良い例
    find . -name "*.pcap" -print0 | while IFS= read -r -d $'\0' file; do
      capinfos "$file"
    done
  • 大量のファイルに対する処理: capinfos * のようにワイルドカードで大量のファイルを指定すると、コマンドラインの引数長の制限を超える可能性があります。上記の findwhile ループを組み合わせる方法などがより安全です。
  • 出力形式の互換性: スクリプトで capinfos の出力をパースする場合、将来的な Wireshark のバージョンアップで出力形式が微妙に変わる可能性もゼロではありません。特にテーブル形式 (-T) を利用し、awkcut でフィールド番号を指定してパースする方法は、フィールドの追加・削除に弱い場合があります。より堅牢なスクリプトにするためには、フィールド名を考慮したパース処理を行うなどの工夫が必要になることもあります。

💡 ヒント: 問題が発生した場合は、まず capinfos -v でバージョンを確認し、capinfos -h でヘルプを参照するのが基本的なトラブルシューティングの第一歩です。

capinfos は、Wiresharkスイートの中でも特に、パケットキャプチャファイルの概要を素早く把握するために設計された強力なコマンドラインツールです。この記事では、その基本的な使い方から、詳細な情報を取り出すための各種オプション、そしてスクリプトなどと組み合わせた実践的な活用例までを解説しました。

主なポイントを振り返りましょう:

  • capinfos は pcap/pcapng ファイルのメタデータ (パケット数、期間、サイズ、レートなど) を表示します。
  • オプションなしで実行すると、人間が読みやすいロングレポート形式ですべての情報が表示されます。
  • -T オプションを使うと、スクリプト処理に適したテーブル形式で出力できます。
  • -c, -s, -u, -a, -e, -y, -i, -z, -x など、特定の情報だけを選択して表示するオプションが豊富に用意されています。
  • 他のコマンドラインツール (grep, awk, tshark など) と組み合わせることで、ファイルの検索、バッチ処理、レポート作成などを効率化できます。

ネットワーク分析やトラブルシューティングにおいて、大量のキャプチャデータを扱うことは日常茶飯事です。capinfos を使いこなすことで、分析の初期段階で時間を大幅に節約し、より重要な詳細分析に集中できるようになります。ぜひ、日々の業務に取り入れて、その便利さを体験してみてください。🔍📊

さらに詳しい情報や最新のオプションについては、公式のドキュメントを参照することをお勧めします。

コメント

タイトルとURLをコピーしました