【オリジナルパケットの作成方法】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 修正対象

実際の確認方法から編集方法をご紹介したいと思います。

手順1 元のpcapファイル確認

先ずはWiresharkで抽出したpcapファイルを開きます。ここで確認できるサイズ情報は、Frame 1: 114 bytes、Data (72 bytes)の2つです。

図1 元のpcapファイル

次にFrame部分を図2のように展開してみましょう。ここで表1のFrame Length, Capture Lengthが114bytesであることが確認できます。

図2 pcapファイルのパケットヘッダ情報

Internet Protocol Version 4を展開します。図3の通りTotal Lengthが100bytesであることが確認できます。

図3 IP部のTotal Length確認

次にUDPのLengthを確認します。図4の通り80bytesであることが分かります。

図4 UDPのLength確認

最後にData部分を確認してみましょう。図5の通り72バイトであることが分かりました。

図5 Data部分のLength確認

表1に実際のデータサイズを書き込んだ表2を以下に記載します。データ部のみサイズと独自プロトコル仕様に合わせた修正が必要となります。

修正対象Wiresharkで表示される要素名サイズ
pcapファイルのパケットヘッダFrame Length, Capture Length114,114
L3(Internet Protocol Version 4)Total Length100
L4(例ではUDP)Length80
データ部の修正Length72
表2 サイズ情報の追加

手順2 独自プロトコルサイズの反映

独自プロトコルのサイズは、8バイトでした。UDPのヘッダサイズは8バイト、IPヘッダのサイズは20バイト、Ethernetヘッダのサイズは14バイトといった情報を使って独自プロトコルのサイズ情報を計算すると表3となります。

修正対象Wiresharkで表示される要素名サイズ
pcapファイルのパケットヘッダFrame Length, Capture Length50,50
L3(Internet Protocol Version 4)Total Length36
L4(例ではUDP)Length16
Data部の調整Length8
表3 独自プロトコルサイズ情報

手順3 バイナリエディタによるサイズ情報編集

表3に従ってサイズ情報部分を編集していきます。バイナリエディタで元のファイルを開いた状態が図6となります。赤枠の72,72が表2の114,114。64が100。50が80に対応します。また、データ部の72バイトが緑の枠となりますのでこちらを削除して、0X00000008 0X61626364を記述します。

図6 バイナリエディタでパケットを開いたところ

手順通りに修正したバイナリが図7となります。最後に図8のようにエラー表示されることなく、Wiresharkで開けることを確認してください。

図7 修正後の情報
図8 修正されたパケットを表示

(Visited 3,398 times, 1 visits today)
The following two tabs change content below.
【好きなもの】 インフラ技術が好き。古いものが好き。 【生きてきたフィールド】 システム運用、ソフトウェア開発、ミドルウェア検証、OSSサポート、プリセールスエンジニア、プロジェクトマネジメント 【このサイトでの役割】 サイト管理者。