無知を晒す

ふだんの出来事はこっちに書いてます: http://tana.hatenablog.com

iOSの通信をWireSharkでみる時の話

開発中など,iOSの通信をWireSharkでみたいという場面がしばしばある.rvictlコマンドを利用することで,iOSの通信をキャプチャできる用になるのだけれど,キャプチャしたデータの扱いが上手くできなかったので書く.rvictlを使う方法は以下の記事に大まかなやり方が書かれてる.

iOS - iPhone端末とかのパケットキャプチャ - Qiita

実は最初,rvictlで渡すUUIDの取得にとまどった.世の中のiOSデベロッパ各位であれば躓かないのだろうけれど,iOSデベロッパではないウェブやさんとか普通困るから,どう調べるのか書いてあげるのが丁寧だと思った.*1

実際にキャプチャしてみるとこういう画面になる.

f:id:side_tana:20140607180929p:plain

確かにキャプチャできていることはわかるが,僕は人間なのでこれでは困る.

MavericksのWiresharkでiOSデバイスのパケットキャプチャを行う - Qiita
Mavericks - can not capture from iPhone using RVI - Wireshark Q&A

このあたりの記事をみれば解決できるのだけれど,2014年6月7日現在,細かいパラメータが変わっているので注意が必要.

WireSharkの画面見るとわかるんだけれど,User encapsulation not handled: DLT=149, check your Preferences->Protocols->DLT_USERということだから,メッセージ通りDLTs Tableにルールを追加してあげればよい.

DLT_USERのUser2 (DLT=149) を値を書き換えるのだけれど,

  • 3G/4Gの場合はPayload protocolをip,HeaderSizeを160
  • WiFiの場合はPayload protocolをeth,HeaderSizeを156

にしてあげると良い.

f:id:side_tana:20140607181940p:plain

画面もカラフルになってめでたさがでていると思う.

探してたときの話は普段の日記の方に書いた.

*1:ちなみにXcodeのオーガナイザから見ることができる.