ネタが尽きたので久々にWindows CEの話題でも書いてみる。
Windows CE 5.0以降(当然6.0も)には、標準でパケットキャプチャできる仕組み(Winpcapのようなもん)がネットワークドライバ(cxport)にあらかじめ仕込まれている。
ただしMicrosoft Network MonitorやWiresharkのようなグラフィカルなアプリは入っていないので、追加でパケットキャプチャ用のドライバ(netlog.dll)とフロントエンド(netlogctl.exe)を組み込む必要がある。
netlog.dllはパケットキャプチャのための後付のドライバ。
netlogctl.exeはコマンドラインベースのプログラムで、ドライバの制御を行う。
この2つを\Windowsフォルダにコピーして使う。
ちなみにnetlog.dll, netlogctl.exeのバイナリはデフォルトでは存在しないので、カタログから「NDISパケットキャプチャDLL」(SYSGEN_NETLOG)を追加してシステム生成するか、自分でビルドする必要がある。自力でビルドする場合は、ターゲットワークスペースのリリースディレクトリ(%_FLATRELEASEDIR%)を開いて、
sysgen -p common netlog netlogctl
とすればターゲットマシン用の実行ファイルがビルドされる。(この方がてっとり早い)
コマンドラインオプションは以下の通り。
netlogctl load | ||
netlog.dllをロードする。自動的にキャプチャが開始される | ||
netlogctl unload | ||
netlog.dllをアンロードする。キャプチャ中の場合は自動的に停止する | ||
netlogctl start | ||
キャプチャ開始 | ||
netlogctl stop | ||
キャプチャ停止 | ||
netlogctl pkt_size XXX | ||
キャプチャする最大パケット長をバイト数で指定する。デフォルトは5,000バイト。キャプチャ停止中のみ有効 | ||
netlogctl cap_size XXX | ||
キャプチャファイルの最大サイズをバイト数で指定する。デフォルトは500,000バイト。キャプチャ停止中のみ有効 | ||
netlogctl file XXX | ||
キャプチャファイル名(の語幹)を指定する。デフォルトは \Netcap (この設定では\Netcap0.cap と\Netcap1.capが出力される)。キャプチャ停止中のみ有効 | ||
netlogctl usb 0 | ||
USB PPPパケットを採取しない(ActiveSyncログを除外する) | ||
netlogctl usb 1 | ||
USB PPPパケットを採取する(ActiveSyncログを除外しない) | ||
netlogctl state | ||
現在の設定、動作状態を表示する |
出力されたログファイル(*.cap)は、Microsoft Network MonitorやWireshark(旧Ethereal)で開いてパケット解析が可能。
netlogctl.exeを呼び出すグラフィカルなフロントエンドを作るというのも面白いかも。netlogctl自体のソースも存在するので、そのまま流用して改造しても良いかもしれない。
netlog.dllのソース
\WINCE500\public\common\oak\utils\netlog
netlogctl.exeのソース
\wince500\public\common\oak\utils\netlogctl
Windows Mobileにビルド済みのバイナリを持ってって動くのか…どうかは知らない。
動いちゃいそうな気もするけど。