LoginSignup
104
111

More than 5 years have passed since last update.

Macに接続したiPhoneのパケットをキャプチャする(Wireshark)

Last updated at Posted at 2017-04-07

iOSアプリを開発していると、実機からの通信を見たいときなんかがあります。
そんな時に、実機のパケットを見れると便利なので方法をまとめておきます。

まずiPhone(iPadでも良いですが)をMacに接続します。
次に、後で利用するiPhoneのUDIDを取得しておきます。

UDIDを確認するには、iTunesから見るのが簡単です。
表示されない場合はUDIDの付近をクリックするとシリアル番号やECIDなど表示が切り替わるので、UDIDが表示されるまでクリックしてください。

itunes_uuid.png

値は⌘Cか、編集 - UDIDをコピーでコピーできます。

スクリーンショット 2017-04-07 20.58.38.png

このUDIDを、rvictlでリモート仮想インタフェースとして設定します。
(rviはRemote Virtual Interfaceの略)

$ rvictl -s xxxxxxxxxxxxxxxxxxxxx

Starting device xxxxxxxxxxxxxxxxxxxxx [SUCCEEDED] with interface rvi0

ネットワークインタフェースとして追加しているので、ifconfigで確認できます。

$ ifconfig -l
lo0 gif0 stf0 en0 en1 p2p0 awdl0 bridge0 utun0 utun1 en3 rvi0

次に追加したリモート仮想インタフェースをtcpdumpでパケットキャプチャしてみます。

$ sudo tcpdump -i rvi0
tcpdump: WARNING: rvi0: That device doesn't support promiscuous mode
(BIOCPROMISC: Operation not supported on socket)
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on rvi0, link-type PKTAP (Apple DLT_PKTAP), capture size 262144 bytes
21:10:07.437603 IP 104.244.46.39.https > 10.46.245.28.59453: Flags [F.], seq 2316302377, ack 2632719563, win 17, options [nop,nop,TS val 3176163496 ecr 832777770], length 0
21:10:07.437825 IP 10.46.245.28.59453 > 104.244.46.39.https: Flags [.], ack 1, win 2048, options [nop,nop,TS val 832838783 ecr 3176163496], length 0
21:10:07.437914 IP 192.0.73.2.https > 10.46.245.28.59451: Flags [F.], seq 2195467291, ack 308360110, win 17, options [nop,nop,TS val 3176163495 ecr 832777247], length 0
21:10:07.437930 IP 192.0.73.2.https > 10.46.245.28.59451: Flags [F.], seq 0, ack 1, win 17, options [nop,nop,TS val 3176163779 ecr 832777247], length 0
21:10:07.437942 IP 104.244.46.39.https > 10.46.245.28.59453: Flags [F.], seq 0, ack 1, win 17, options [nop,nop,TS val 3176163795 ecr 832777770], length 0
21:10:07.437953 IP i2.wp.com.https > 10.46.245.28.59457: Flags [F.], seq 4226963860, ack 3846429936, win 17, options [nop,nop,TS val 3176163997 ecr 832777941], length 0
21:10:07.437962 IP i2.wp.com.https > 10.46.245.28.59457: Flags [F.], seq 0, ack 1, win 17, options [nop,nop,TS val 3176164277 ecr 832777941], length 0
21:10:07.437971 IP 192.0.73.2.https > 10.46.245.28.59451: Flags [F.], seq 0, ack 1, win 17, options [nop,nop,TS val 3176164346 ecr 832777247], length 0
21:10:07.437979 IP 104.244.46.39.https > 10.46.245.28.59453: Flags [F.], seq 0, ack 1, win 17, options [nop,nop,TS val 3176164392 ecr 832777770], length 0
21:10:07.437987 IP i2.wp.com.https > 10.46.245.28.59457: Flags [F.], seq 0, ack 1, win 17, options [nop,nop,TS val 3176164836 ecr 832777941], length 0
21:10:07.438068 IP 10.46.245.28.59451 > 192.0.73.2.https: Flags [.], ack 1, win 2048, options [nop,nop,TS val 832838783 ecr 3176163495], length 0
21:10:07.438335 IP 10.46.245.28.59451 > 192.0.73.2.https: Flags [.], ack 1, win 2048, options [nop,nop,TS val 832838783 ecr 3176163495], length 0
21:10:07.438443 IP 10.46.245.28.59453 > 104.244.46.39.https: Flags [.], ack 1, win 2048, options [nop,nop,TS val 832838783 ecr 3176163496], length 0
21:10:07.438542 IP 10.46.245.28.59457 > i2.wp.com.https: Flags [.], ack 1, win 2048, options [nop,nop,TS val 832838783 ecr 3176163997], length 0
21:10:07.438626 IP 10.46.245.28.59457 > i2.wp.com.https: Flags [.], ack 1, win 2048, options [nop,nop,TS val 832838783 ecr 3176163997], length 0
21:10:07.438702 IP 10.46.245.28.59451 > 192.0.73.2.https: Flags [.], ack 1, win 2048, options [nop,nop,TS val 832838783 ecr 3176163495], length 0
21:10:07.438788 IP 10.46.245.28.59453 > 104.244.46.39.https: Flags [.], ack 1, win 2048, options [nop,nop,TS val 832838784 ecr 3176163496], length 0
21:10:07.438859 IP 10.46.245.28.59457 > i2.wp.com.https: Flags [.], ack 1, win 2048, options [nop,nop,TS val 832838784 ecr 3176163997], length 0

さすがに見るのが辛いので、Wiresharkで見てみます。
インストールは以下で。

$ brew cask install wireshark

Wiresharkを起動したら、キャプチャオプションを開きます。

ワイヤーシャークネットワークアナライザ.png

開いたら追加したリモート仮想インタフェース(rvi0)を選択し、開始ボタンでキャプチャを開始します。

wireshark_option.png

iPhone側でQiitaのトップページを表示すると、以下のように通信内容が流れてきました。
あとは見たい内容を見ていくだけです。

wireshark_capture.png

用がすんだらリモート仮想インタフェースを外しておきます。

$ rvictl -x xxxxxxxxxxxxxxxxxxxxx

Stopping device xxxxxxxxxxxxxxxxxxxxx [SUCCEEDED]

これで作成したアプリの通信やiPhoneのブラウザからの通信内容などを確認できて色々はかどりますね。

104
111
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
104
111