ようへい

2013年10月26日土曜日

Android でパケットキャプチャしてみる

Android でパケットキャプチャをしてみたので、忘れないようにメモ。
Unix OS 等でtcpdumpに触れたことがある方向けに書くので、わからない方はスルーしてください。

準備

  1. Android端末のroot取得
  2. Android Virtual Devices ManagerにてAndroid端末と同じバージョンの仮想端末を作成する

キャプチャしてみよう

  1. Android Virtual Devices Manager (以下AVD)にて、Android端末と同バージョンの仮想端末を起動。
  2. 仮想端末からtcpdumpを取得。
    > adb -e pull /system/xbin/tcpdump C:\temp
    737 KB/s (652964 bytes in 0.865s)
  3. Android端末とPCをつなぎます。
  4. 認識しているか確認。
    > adb devices
    List of devices attached
    xxxxxxxxxxxxxxxxx    device
  5. エミュレータから取得したtcpdumpを端末に入れます。
    > adb push C:\temp\tcpdump /sdcard/tcpdump
    3021 KB/s (652964 bytes in 0.211s)
  6. /system にtcpdumpをおけるよう、rwモードでリマウント。
    > adb shell
    shell@android:/ $ su
    su
    root@android:/ # mount -o remount,rw /dev/block/mtdblock0 /system
    mount -o remount,rw /dev/block/mtdblock0 /system
  7. tcpdumpが無いことを確認。
    root@android:/ # ls /system/xbin/tcpdump
    ls /system/xbin/tcpdump
    /system/xbin/tcpdump: No such file or directory
  8. tcpdumpのコピーと実行権付与。
    root@android:/ # cp /sdcard/tcpdump /system/xbin/tcpdump
    cp /sdcard/tcpdump /system/xbin/tcpdump
    root@android:/ # ls -l /system/xbin/tcpdump
    ls -l /system/xbin/tcpdump
    -rw-rw-r-- root     root       652964 2013-10-26 11:46 tcpdump
    root@android:/ # chmod 755 /system/xbin/tcpdump
    chmod 755 /system/xbin/tcpdump
    root@android:/ # ls -l /system/xbin/tcpdump
    ls -l /system/xbin/tcpdump
    -rwxr-xr-x root     root       652964 2013-10-26 11:46 tcpdump
  9. tcpdumpコマンド発行。
    root@android:/ # tcpdump -s 0 -vv -w /sdcard/tcpdump_20131026.pcap
    tcpdump -s 0 -vv -w /sdcard/tcpdump_20131026.pcap
    tcpdump: listening on wlan0, link-type EN10MB (Ethernet), capture size 65535 bytes
  10. Android端末でキャプチャしたいアプリなど起動する。
  11. Ctrl+Cでキャプチャを終了
  12. Wiresharkなどでキャプチャしたファイルを開く
tcpdump導入済みであればこんな感じ。
> adb shell
shell@android:/ $ su
su
root@android:/ # tcpdump -s 0 -vv -w /sdcard/tcpdump_20131026.pcap
tcpdump -s 0 -vv -w /sdcard/tcpdump_20131026.pcap
tcpdump: listening on wlan0, link-type EN10MB (Ethernet), capture size 65535 bytes
ちなみに私が使用した仮想端末に入っていたtcpdumpのバージョンは以下。
root@android:/ # tcpdump --help
tcpdump --help
tcpdump version 3.9.8
libpcap version 0.9.8
Usage: tcpdump [-aAdDeflLnNOpqRStuUvxX] [-c count] [ -C file_size ]
                [ -E algo:secret ] [ -F file ] [ -i interface ] [ -M secret ]
                [ -r file ] [ -s snaplen ] [ -T type ] [ -w file ]
                [ -W filecount ] [ -y datalinktype ] [ -Z user ]
                [ expression ]
関連記事

0 件のコメント:

コメントを投稿