Wiresharkでパケットを解析する際のメモ。
自分が度々使用するWiresharkの機能を思いつくままにまとめてみた。
Wireshark バージョン 2.6.0で検証。
Wiresharkのレイアウトを変更する
Preferences -> Appearance -> Layout でWiresharkのレイアウトを変更する。
![](https://mymanfile.com/wp-content/uploads/2022/05/Screenshot-2022-05-30-at-9.44.20-PM.png)
自分が好んで使うのは左から2番目のレイアウト。
![](https://mymanfile.com/wp-content/uploads/2022/05/Screenshot-2022-05-30-at-9.45.38-PM-1024x484.png)
時刻の表示形式を変更する
View -> Time Display Formatから時刻の表示形式を変更する。自分が好んで使うのはUTC Date and Time of Day形式。
![](https://mymanfile.com/wp-content/uploads/2022/05/Screenshot-2022-05-30-at-9.52.28-PM.png)
Protocol Hierarchyでキャプチャされた通信プロトコルの内訳を確認する
まずは何もフィルターをかけず、Statistics -> Protocol Hierarchyからキャプチャされた通信プロトコルの内訳を確認する。
![](https://mymanfile.com/wp-content/uploads/2022/05/Screenshot-2022-05-30-at-10.10.24-PM-1024x451.png)
ConversationsでTCP・UDPのコネクション数を確認する
Statistics -> ConversationsからTCP・UDPのコネクション数を確認する。
![](https://mymanfile.com/wp-content/uploads/2022/05/Screenshot-2022-05-30-at-10.13.51-PM-1024x244.png)
![](https://mymanfile.com/wp-content/uploads/2022/05/Screenshot-2022-05-30-at-10.14.11-PM-1024x369.png)
frame contains で目当てのパケットを手っ取り早く見つける
frame contains "keyword"
フィルターで目当てのパケットを手っ取り早く見つける。
以下はframe contains
フィルターを用いてfuga
という文字列を含むパケットを検索している。
frame contains "fuga"
![](https://mymanfile.com/wp-content/uploads/2022/05/Screenshot-2022-05-30-at-11.08.35-PM-1024x604.png)
検索対象のパケットがバイナリ・プロトコルの場合 (DNS など)、この方法では引っかからないことがある。その場合は文字列ではなくバイト・パターンで検索する。
以下はframe contains
フィルターを用いて0x66 0x75 0x67 0x61
というバイト・パターンを含むパケットを検索している。(0x66 0x75 0x67 0x61
をHEXデコードするとfuga
となる)
frame contains 66:75:67:61
![](https://mymanfile.com/wp-content/uploads/2022/05/Screenshot-2022-05-30-at-11.18.53-PM-1024x606.png)
Follow HTTP Streamでgzip圧縮されたコンテンツを展開する
Webサーバーからの応答データがgzip圧縮されていた場合、Follow TCP Streamではコンテンツを確認できないことがある。
以下はFollow -> TCP Stream でサーバーの応答データを確認した際の様子。データがgzip圧縮されているため、コンテンツを確認できない。
![](https://mymanfile.com/wp-content/uploads/2022/05/Screenshot-2022-05-30-at-11.26.18-PM.png)
![](https://mymanfile.com/wp-content/uploads/2022/05/Screenshot-2022-05-30-at-11.27.52-PM-1024x387.png)
このような場合はFollow -> HTTP Streamを選択する。
![](https://mymanfile.com/wp-content/uploads/2022/05/Screenshot-2022-05-30-at-11.29.36-PM.png)
![](https://mymanfile.com/wp-content/uploads/2022/05/Screenshot-2022-05-30-at-11.30.16-PM.png)
gzip圧縮が展開されて、サーバーからHTMLページが応答されている様子が確認できた。
Base64エンコードされたデータをデコードする
パケットにBase64エンコードされたデータが含まれていた場合、Wiresharkでデコードできる。
以下はHTTPのPOSTリクエストに乗せられたaGVsbG8gd29ybGQK
というBase64データをデコードする際の様子。
Base64データを含むフィールドを選択して右クリックし、Show Packet Bytesを選択。
![](https://mymanfile.com/wp-content/uploads/2022/05/Screenshot-2022-05-30-at-11.38.52-PM-1024x550.png)
![](https://mymanfile.com/wp-content/uploads/2022/05/Screenshot-2022-05-30-at-11.39.43-PM-1024x660.png)
ウィンドウ下部のDecode asからBase64を選択すると、データがBase64デコードされる。
![](https://mymanfile.com/wp-content/uploads/2022/05/Screenshot-2022-05-30-at-11.41.30-PM.png)
Base64の他にCompressed、Quoted-Printable、ROT13というオプションがある。
キャプチャされたファイルやオブジェクトを抽出する
キャプチャされたファイルやオブジェクトを抽出するには、いくつか方法がある。
Export Objectsでオブジェクトを抽出する
File -> Export Objectsでオブジェクトを抽出する。
以下はHTTPでやり取りされたオブジェクトを抽出している。
![](https://mymanfile.com/wp-content/uploads/2022/05/Screenshot-2022-05-30-at-10.19.34-PM.png)
![](https://mymanfile.com/wp-content/uploads/2022/05/Screenshot-2022-05-30-at-10.22.12-PM.png)
任意のパケットを抽出する
任意のパケットを選択して右クリックし、Export Packet Bytesでパケットを抽出する。
以下はWebサーバーから応答されたPNGファイルを抽出する。
![](https://mymanfile.com/wp-content/uploads/2022/05/Screenshot-2022-05-30-at-10.28.49-PM-1024x448.png)
パケットのプレビューを取得する
任意のパケットを選択して右クリックし、Show Packet Bytesでパケットのプレビューを取得できる。
以下はWebサーバーから応答されたPNGファイルのプレビューを確認している。
![](https://mymanfile.com/wp-content/uploads/2022/05/Screenshot-2022-05-30-at-10.34.56-PM-1024x386.png)
![](https://mymanfile.com/wp-content/uploads/2022/05/Screenshot-2022-05-30-at-10.35.14-PM-1024x760.png)
なお、上記の方法でオブジェクトを抽出できない場合は手動で抽出することも出来る。
WiresharkのExport ObjectでHTTPオブジェクトが上手く抽出できなかったときの対処法
カスタムのカラムを適用する
パケットからカラムとして追加したいフィールドを選択して右クリックし、Apply as Columnを選択。
以下はユーザーエージェント・ヘッダーをカラムとして追加する際の様子。
![](https://mymanfile.com/wp-content/uploads/2022/05/Screenshot-2022-05-30-at-10.48.22-PM-1024x495.png)
ユーザーエージェントがカラムに追加された。
![](https://mymanfile.com/wp-content/uploads/2022/05/Screenshot-2022-05-30-at-10.49.08-PM-1024x125.png)
追加したカラムを削除したい場合は、対象のカラムにカーソルを合わせ右クリックし、Remove This Columnを選択する。
![](https://mymanfile.com/wp-content/uploads/2022/05/Screenshot-2022-05-30-at-10.52.31-PM.png)
WiresharkにTLS・SSLの秘密鍵をインポートする
こちらの記事の後半に手順を記載している。
以上、自分が度々使用するWiresharkの機能を思いつくままにまとめてみた。
ただし、自分は大量のパケットを解析する際はWiresharkよりもtsharkを重宝している。