-T json
で JSON 形式で表示する
このステップでは、Wireshark の Tshark ユーティリティを使用して、キャプチャした HTTP トラフィックデータを JSON 形式に整形する方法を探ります。JSON (JavaScript Object Notation) は、人間にも読みやすく、機械にも解析しやすい軽量のデータ形式です。このため、プログラムによるネットワークトラフィックの分析に最適です。
始める前に、JSON 出力が有用な理由を理解しましょう。
- データを構造化して整理できる
- 他のツールやスクリプトとの統合が容易
- データ交換のための標準化された形式
- まず、コマンドを実行するデフォルトの作業ディレクトリにいることを確認します。
cd ~/project
- 次に、Tshark を実行して HTTP リクエストをキャプチャし、JSON 形式で出力します。このコマンドはフィルタリングと JSON 整形を組み合わせています。
sudo tshark -Y "http.request" -T json -e http.request.method -e http.host -e http.request.uri
このコマンドの各部分が何をするかを分解してみましょう。
-Y "http.request"
: このフィルタは Tshark に HTTP リクエストパケットのみを表示するよう指示します。
-T json
: 出力を JSON 形式にすることを指定します。
-e
フィールド:これらは各 HTTP リクエストから特定の情報を抽出します。
http.request.method
: 使用された HTTP メソッド (GET、POST など)
http.host
: アクセスされているウェブサイトのドメイン
http.request.uri
: 要求されている特定のパスまたはリソース
- キャプチャするテストトラフィックを生成するには、2 番目のターミナルウィンドウを開き、以下の
curl
コマンドを実行します。
curl http://example.com
curl http://example.org/sample
このテストトラフィックが生成されている間に Tshark コマンドを実行すると、次のように構造化された出力が表示されます。
[
{
"_index": "packets-1",
"_source": {
"layers": {
"http.request.method": ["GET"],
"http.host": ["example.com"],
"http.request.uri": ["/"]
}
}
},
{
"_index": "packets-2",
"_source": {
"layers": {
"http.request.method": ["GET"],
"http.host": ["example.org"],
"http.request.uri": ["/sample"]
}
}
}
]
各 HTTP リクエストが明確にラベル付けされたフィールドを持つ個別の JSON オブジェクトになっていることに注目してください。この構造により、以下のことを簡単に識別できます。
- どのウェブサイトにアクセスされたか
- どのタイプのリクエストが行われたか
- どの特定のページまたはリソースが要求されたか
JSON 形式は、このデータを後で分析するために保存したり、JSON データを自動的に処理できる他のツールに渡したりする場合に特に便利です。