【オリジナルパケットの作成方法】Wireshark達人への道 第十四歩 独自パケットの作成方法
本連載は、筆者がWiresharkの達人となるまでを追うドキュメンタリー作品である。
WiresharkでDissector(解剖機)の作り方を勉強しようといくつかの記事を読んでいました(日本語検索だけでも、かなりの記事が出てきます)。どのサイトも目的である独自プロトコルを解析するためのDissectorの作り方を紹介してくれているのですが、実際の記事に出てくる独自プロトコルをキャプチャしたファイルがないので試せない記事ばかりでした。
そこで、本記事では任意のキャプチャファイルから独自プロトコルのキャプチャファイルの作り方をご紹介しようと思います。
準備するもの
- 任意のIPv4キャプチャファイル
- 任意のバイナリエディタ(筆者が使ったのはFavBinEdit)
任意のキャプチャファイルから単一パケットを抽出
第六歩 マークって知ってた?を参照して、お手持ちのpcapファイルから単一パケットをマークしてエクスポートしてください。
バイナリエディタを使って、パケットサイズ情報を編集
表1のパケットサイズ情報を独自プロトコルのサイズに従って変更する。さらに、データ部を独自プロトコルのデータ情報に変更する必要があります。本記事では、独自プロトコルのサイズを8バイトとし、中身は以下の記載とします。前半4バイトをlength。後半4バイトは文字列です。
#独自プロトコル仕様
#8バイトで文字列はabcdの例
#0X00000008 0X61626364
修正対象 | Wiresharkで表示される要素名 |
pcapファイルのパケットヘッダ | Frame Length, Capture Length |
L3(Internet Protocol Version 4) | Total Length |
L4(例ではUDP) | Length |
データのサイズ | Length |
実際の確認方法から編集方法をご紹介したいと思います。
手順1 元のpcapファイル確認
先ずはWiresharkで抽出したpcapファイルを開きます。ここで確認できるサイズ情報は、Frame 1: 114 bytes、Data (72 bytes)の2つです。
次にFrame部分を図2のように展開してみましょう。ここで表1のFrame Length, Capture Lengthが114bytesであることが確認できます。
Internet Protocol Version 4を展開します。図3の通りTotal Lengthが100bytesであることが確認できます。
次にUDPのLengthを確認します。図4の通り80bytesであることが分かります。
最後にData部分を確認してみましょう。図5の通り72バイトであることが分かりました。
表1に実際のデータサイズを書き込んだ表2を以下に記載します。データ部のみサイズと独自プロトコル仕様に合わせた修正が必要となります。
修正対象 | Wiresharkで表示される要素名 | サイズ |
pcapファイルのパケットヘッダ | Frame Length, Capture Length | 114,114 |
L3(Internet Protocol Version 4) | Total Length | 100 |
L4(例ではUDP) | Length | 80 |
データ部の修正 | Length | 72 |
手順2 独自プロトコルサイズの反映
独自プロトコルのサイズは、8バイトでした。UDPのヘッダサイズは8バイト、IPヘッダのサイズは20バイト、Ethernetヘッダのサイズは14バイトといった情報を使って独自プロトコルのサイズ情報を計算すると表3となります。
修正対象 | Wiresharkで表示される要素名 | サイズ |
pcapファイルのパケットヘッダ | Frame Length, Capture Length | 50,50 |
L3(Internet Protocol Version 4) | Total Length | 36 |
L4(例ではUDP) | Length | 16 |
Data部の調整 | Length | 8 |
手順3 バイナリエディタによるサイズ情報編集
表3に従ってサイズ情報部分を編集していきます。バイナリエディタで元のファイルを開いた状態が図6となります。赤枠の72,72が表2の114,114。64が100。50が80に対応します。また、データ部の72バイトが緑の枠となりますのでこちらを削除して、0X00000008 0X61626364を記述します。
手順通りに修正したバイナリが図7となります。最後に図8のようにエラー表示されることなく、Wiresharkで開けることを確認してください。
最新記事 by 伊集院 (全て見る)
- 【暗号化通信(TLS)を復元できる】WIRESHARK達人への道 第二十五歩 暗号化通信(TLS)を復号する方法 - 1月 1, 2023
- 【詳細版】NSM(ネットワークセキュリティモニタ)、Zeekとは? - 9月 1, 2022
- 【簡易版】OSSネットワークセキュリティモニタZeekとは? - 8月 26, 2022