内容

はじめに

前提条件

手順

パケットダンプの実行

出力ファイルのクリーンアップ

クリーンアップパケットの概要情報

開始スペースとオフセットコロンを削除する

正しいパケットオフセット

分離パケットバイト

テキストファイルをPCAPに変換する

Wireshark GUIを使用

コマンドラインを使用

トラブルシューティング

テキストファイルは正しいにも関わらず、Text2pcapがパケットを読み取れない

矛盾したオフセット

はじめに

このドキュメントでは、サイズ制限の回避策として、COSアクセスポイント(AP)で生成されたパケットダンプをWireshark用のPCAP形式に変換する方法について説明します。

前提条件

- メモ帳++ - Windowsでのみ使用可能

- Text2pcapがインストール済み：Wiresharkの通常のインストールに含まれる

手順

パケットダンプの実行

APコマンドラインでdebug traffic wired <multiple options> verbose コマンドを実行して、APパケットダンプをキャプチャします。複数のフィルタとインターフェイスから選択できます。

端末にセッションを記録します。

このとき、最小限のキーストロークを送信するように注意してください。キャプチャ自体に属さないファイル上の印刷可能な文字が多いほど、変換前にクリーンアップが必要になります。

これを行う最も簡単な方法は、パケットダンプ用のコンソールセッションを使用して、問題を複製し、ダンプを停止して、すぐにセッションを終了することです。

ssh経由でダンプを実行している場合は、フィルタを使用して対象のトラフィックのみをキャプチャします。それ以外の場合、キャプチャにはsshセッションパケットが含まれます。

キャプチャの設定方法の詳細は、『COS APのトラブルシューティング』を参照してください。

作業が終了したら、undebug allコマンドを使用してキャプチャを停止します。結果のファイルは次のようになります。

AP-9105>en

Password:

AP-9105#debug traffic wired udp

capture  capture packets in pcap file

verbose  Verbose Output

<cr>

AP-9105#debug traffic wired udp verbose

AP-9105#reading from file /dev/click_wired_log, link-type EN10MB (Ethernet)

22:35:17.1669188 IP CSCO-W-PF320YP6.lan.60354 > 239.255.255.250.3702: UDP, length 656

0x0000:  0100 5e7f fffa 806d 971d a040 0800 4500

0x0010:  02ac d4bb 0000 0111 cd11 c0a8 64d1 efff

0x0020:  fffa ebc2 0e76 0298 757b 3c3f 786d 6c20

0x0030:  7665 7273 696f 6e3d 2231 2e30 2220 656e

0x0040:  636f 6469 6e67 3d22 7574 662d 3822 3f3e

<truncated>

undebug 0x0070:  444c 4e41 444f 432f 312e 3530 2050 6c61

0x0080:  7469 6e75 6d2f 312e 302e 342e 320d 0a4d

0x0090:  414e 3a20 2273 7364 703a 6469 7363 6f76

0x00a0:  6572 220d 0a53 543a 2073 7364 703a 616c

all     0x00b0:  6c0d 0a4d 583a 2033 0d0a 0d0a

<truncated>

tcpdump: pcap_loop: error reading dump file: Interrupted system call

All possible debugging has been turned off

<end of file>

出力ファイルのクリーンアップ

パケットダンプ自体に含まれていない情報があれば削除します。dumpコマンドを含む行、ホスト名(APname#)を含むプロンプト、およびファイルに存在する他の無関係なsyslogメッセージを削除します。

undebugコマンドは、上記のようにパケットの内容の前に出力される可能性があるため、特に注意してください。クリーンアップ後、結果のファイルは次のようになります。

22:35:17.1669188 IP CSCO-W-PF320YP6.lan.60354 > 239.255.255.250.3702: UDP, length 656

0x0000:  0100 5e7f fffa 806d 971d a040 0800 4500

0x0010:  02ac d4bb 0000 0111 cd11 c0a8 64d1 efff

0x0020:  fffa ebc2 0e76 0298 757b 3c3f 786d 6c20

0x0030:  7665 7273 696f 6e3d 2231 2e30 2220 656e

0x0040:  636f 6469 6e67 3d22 7574 662d 3822 3f3e

<truncated>

0x0070:  444c 4e41 444f 432f 312e 3530 2050 6c61

0x0080:  7469 6e75 6d2f 312e 302e 342e 320d 0a4d

0x0090:  414e 3a20 2273 7364 703a 6469 7363 6f76

0x00a0:  6572 220d 0a53 543a 2073 7364 703a 616c

0x00b0:  6c0d 0a4d 583a 2033 0d0a 0d0a

クリーンアップパケットの概要情報

新しいオフセット000000が表示されると、新しいパケットの開始が検出されます。Text2pcapは、各パケットの前に出力される要約情報を処理できるため、問題を回避するには、それらを削除するのが最善です。

メモ帳で++Search>Findの順に移動し、Markタブを選択して、Search ModeがExtendedになっていることを確認します。

Find what:フィールドに記号>を入力し、Mark Allをクリックします。このアクションは、>記号を含むすべての行にブックマークを付けます。

Notepad++ markダイアログボックスのFind whatフィールドに山形の文字が表示されます。

ヘッダーにマークを付けた後、メモ帳++は次のようにすべてのドキュメント行を強調表示します。

シェブロンを含む強調表示された行を持つパケットダンプスニペット。

Search>Bookmarkに移動し、Remove bookmarked linesをクリックします。その後、ファイルは次のスニペットのようになります。

0x0000:  0100 5e7f fffa 806d 971d a040 0800 4500

0x0010:  02ac d4bb 0000 0111 cd11 c0a8 64d1 efff

0x0020:  fffa ebc2 0e76 0298 757b 3c3f 786d 6c20

0x0030:  7665 7273 696f 6e3d 2231 2e30 2220 656e

開始スペースとオフセットコロンを削除する

Search>Findに移動し、Replaceタブを選択して、検索モードがExtendedになっていることを確認します。

Find what:フィールドに、8つの空白を入力します。Replace with:フィールドを空のままにして、Replace allをクリックします。これにより、すべての行の先頭にある8つの連続する空白が何も置き換えられ、事実上それらを削除します。置き換えダイアログは次の図のようになります。

メモ帳++検索するフィールドを8つのスペースで置き換えます。

この操作後の結果ファイルは、次のスニペットのようになります。

0x0000:  0100 5e7f fffa 806d 971d a040 0800 4500

0x0010:  02ac d4bb 0000 0111 cd11 c0a8 64d1 efff

0x0020:  fffa ebc2 0e76 0298 757b 3c3f 786d 6c20

0x0030:  7665 7273 696f 6e3d 2231 2e30 2220 656e

0x0040:  636f 6469 6e67 3d22 7574 662d 3822 3f3e

0x0050:  3c73 6f61 703a 456e 7665 6c6f 7065 2078

0x0060:  6d6c 6e73 3a73 6f61 703d 2268 7474 703a

0x0070:  2f2f 7777 772e 7733 2e6f 7267 2f32 3030

Search>Findに移動し、Replaceタブを選択して、Search ModeがExtendedになっていることを確認します。Find what:フィールドに:（コロンの後の空白に注意してください）を入力します。Replace with:フィールドを空のままにして、Replace allをクリックします。

これにより、オフセットの後のすべてのコロンと最初のスペースが置き換えられます。

メモ帳++ [検索]ダイアログボックスの[検索]フィールドにコロンとスペースを入力します。

前の操作の後、結果の出力ファイルは次のようになります。

0x0000 0100 5e7f fffa 806d 971d a040 0800 4500

0x0010 02ac d4bb 0000 0111 cd11 c0a8 64d1 efff

0x0020 fffa ebc2 0e76 0298 757b 3c3f 786d 6c20

0x0030 7665 7273 696f 6e3d 2231 2e30 2220 656e

0x0040 636f 6469 6e67 3d22 7574 662d 3822 3f3e

0x0050 3c73 6f61 703a 456e 7665 6c6f 7065 2078

0x0060 6d6c 6e73 3a73 6f61 703d 2268 7474 703a

0x0070 2f2f 7777 772e 7733 2e6f 7267 2f32 3030

正しいパケットオフセット

Text2pcapでは、各パケット内のパケットオフセットを6文字の16進数文字列として想定していますが、APパケットダンプではオフセットを示すために0xを使用しています。これを修正するには、Search> Findの順に移動し、Replaceタブを選択して、Search ModeがExtendedになっていることを確認します。

Find what:フィールドにxと入力します。Replace with:フィールドに0を入力し、Replace allをクリックします。これにより、オフセット内のすべてのxが、Text2pcapの想定されるオフセット形式に一致するように0に置き換えられます。

メモ帳++ [置換]ダイアログボックスの[検索する文字列]フィールドに文字xを入力し、[置換]フィールドに文字0を入力します。

前の操作の後、結果の出力ファイルは次のようになります。

000000 0100 5e7f fffa 806d 971d a040 0800 4500

000010 02ac d4bb 0000 0111 cd11 c0a8 64d1 efff

000020 fffa ebc2 0e76 0298 757b 3c3f 786d 6c20

000030 7665 7273 696f 6e3d 2231 2e30 2220 656e

000040 636f 6469 6e67 3d22 7574 662d 3822 3f3e

000050 3c73 6f61 703a 456e 7665 6c6f 7065 2078

分離パケットバイト

Text2pcapデータ形式では、16進数値の各ペアをスペースで区切る必要があります。形式が正しくない場合、Text2pcapはパケットデータをオフセットとして読み取り、失敗します。

Search>Findに移動してReplaceタブを選択し、Search ModeがRegular expressionになっていることを確認します。

Find what:フィールドに、([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])（先頭のスペースに注意）と入力します。

Replace with:フィールドに \1 \2（先頭のスペースに注意）を入力し、Replace allをクリックします。

置換操作では、パケットの16進数バイトが検索され、各ペアの間にスペースが挿入されます。正規表現は、スペースの後に16進数のペアが続く部分と一致する部分をキャプチャグループ1に保存し、その後に隣接する16進数のペアを取ってキャプチャグループ2に保存します。置き換えると、必要なスペースと各キャプチャグループの内容の両方が印刷されます。

ファイルの長さによっては、数秒または数分かかります。実行中に大量のRAMを使用しますファイルが大きい場合は、我慢してください。

メモ帳++ [置換]ダイアログボックスが開き、正規表現で入力された内容が検索され、 [置換]フィールドに別の正規表現が入力されます。

前の操作の後、結果の出力ファイルは次のスニペットのように表示され、Text2pcapで変換する準備が整います。

000000 01 00 5e 7f ff fa 80 6d 97 1d a0 40 08 00 45 00

000010 02 ac d4 bb 00 00 01 11 cd 11 c0 a8 64 d1 ef ff

000020 ff fa eb c2 0e 76 02 98 75 7b 3c 3f 78 6d 6c 20

000030 76 65 72 73 69 6f 6e 3d 22 31 2e 30 22 20 65 6e

000040 63 6f 64 69 6e 67 3d 22 75 74 66 2d 38 22 3f 3e

000050 3c 73 6f 61 70 3a 45 6e 76 65 6c 6f 70 65 20 78

000060 6d 6c 6e 73 3a 73 6f 61 70 3d 22 68 74 74 70 3a

000070 2f 2f 77 77 77 2e 77 33 2e 6f 72 67 2f 32 30 30

000080 33 2f 30 35 2f 73 6f 61 70 2d 65 6e 76 65 6c 6f

000090 70 65 22 20 78 6d 6c 6e 73 3a 77 73 61 3d 22 68

テキストファイルをPCAPに変換する

Wireshark GUIを使用

ファイル全体をpcapに変換するには、Wiresharkを開いてFile > Import from hex dumpの順に選択すると、ダイアログボックスが表示されます。

Wiresharkインポートダイアログボックス

Browse...ボタンをクリックして、ダンプテキストファイルを選択します。選択したオフセットタイプが16進数、カプセル化タイプがイーサネット、ダミーヘッダーが選択されていないことを確認します。

Importをクリックして、変換プロセスを開始します。

コマンドラインを使用

テキストファイルをWindowsコマンドラインでpcapファイルに変換するには、<path to wireshark install folder>\text2pcap.exe <path to text file pcap> <output file path>を実行します。

オプションで、PATHにwiresharkフォルダを追加できます。追加しない場合は、ファイルを変換するたびに、text2pcap.exeへのパス全体を参照するtext2pcapを実行する必要があります。Text2pcap.exeは、wiresharkのインストールフォルダ内にあります。

パケットダンプ変換が成功した後のWindowsコマンドライン出力

text2pcapには、テキストファイルを前処理するための複数のregexオプションも含まれています。詳細は、『Text2pcapのマニュアルページ』を参照してください。

トラブルシューティング

テキストファイルは正しいにも関わらず、Text2pcapがパケットを読み取れない

Text2pcapは、よく使われるターミナルエミュレータ（Secure CRT, Puttyなど）で生成された特定のファイルエンコーディングを読み込めません。

Text2pcapで読み取り可能なエンコーディングにNotepad++で変更します。Encoding>UTF-8に移動してファイルを保存し、再度pcapに変換します。

メモ帳++のエンコーディングメニューオプション

矛盾したオフセット

このエラーは、パケットのデータ部分のバイトが正しくペアに分割されていない場合に表示されます。この場合、Text2pcapは新しいパケットの先頭を引き継ぎ、解釈に失敗します。

undebug all コマンドなど、パケットコンテンツの途中で区切りや文字列が含まれていないパケットバイトがないかどうかを検索します。

無効なファイルを変換しようとした後のWindowsコマンドライン出力。矛盾したオフセットが端子に複数回出力されます。