LoginSignup
6
8

More than 5 years have passed since last update.

AndroidでTCPDUMP

Last updated at Posted at 2014-12-19

キッカケ

AndroidのTCPDUMPはtPakcetCaptureが有名なんだけど、せっかくROOT化してるのだし、直に生パケットが欲しかったので設定してみた。※Root化前提です。Root化はググってね。

方法は2通り。
1.AndroidSDKのAVDを立ち上げて、tcpdumpを引っこ抜いて実機に置く。
2.1からビルドする。

AndroidSDKのAVDから引っこ抜く

簡単。単純にandroidコマンドからAVDを立ち上げて、adb pull /system/xbin/tcpdump ./でtcpdumpを引っこ抜く。このとき移し替える実機のOSヴァージョンとエミュのヴァージョンを合わせること。んで、以下の通り実行する。

途中で、remountしてsystem以下を書き込みおkにするので、慎重に行うこと。system以下のファイルから実行権限抜くとAndroidが文鎮化します。文鎮化した場合、fastbootからOSの焼き直しかバックアップファイルからのOS復旧を行う。

command
$ adb device
$ adb push ./tcpdump /sdcard/tcpdump
$ adb shell
shell@android:/ $ su
root@android:/ # mount -o remount,rw /dev/block/mtdblock0 /system
root@android:/ # ls /system/xbin/tcpdump
root@android:/ # cp /sdcard/tcpdump /system/xbin/tcpdump
root@android:/ # ls -l /system/xbin/tcpdump
-rw-rw-r-- root     root       652964 2013-10-26 11:46 tcpdump
root@android:/ # 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

ちなみに、shell@android -> root@androidにするのが面倒というか、直にadb shell tcpdumpを叩きたい場合は、

$ adb root
$ adb remount

でリマウントさせるか、adbd-Insecure-v2.00.apkを使って常時Rootにする(後者の方がプログラム組むとき楽)。

実行は
$ adb -s 015d3f18d124061a shell tcpdump -s 0 -vv -w /sdcard/test.pcap
のように行う。

$ adb -s 015d3f18d124061a shell tcpdump -s 0 -vv -w ./test.pcap
$ tcpdump: test.pcap: Read-only file system

上記のように直接ホストに保存するように叩くと怒られる。

ただ普段、AVDを使わずに実機やらkvmやらvirtualboxやらを使ってるとめっちゃ面倒な方法。

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

1からビルドする。

こちらはUSB Sniffing with tcpdumpを参照

Building tcpdump以下の通りにやる

まずAndroid NDKからAndroid-ndkを落としてくる。その後、

$ chmod a+x android-ndk-r10c-darwin-x86_64.bin
$ ./android-ndk-r10c-darwin-x86_64.bin

で解凍する(ちょっと長い)。次にBuild-tcpdump.tar.gzをダウンロードする。解凍するとbuild-tcpdumpがでてくる。次にbashに変えて、以下を実行する。

$ export NDK=/path/to/android-ndk-r10d
$ sh build-tcpdump

で終わり。なお、build-tcpdumpの中にAPIを設定する部分があるので、適宜変変更する。4.x系のみ掲載しておく。今回は17で作ってみた。あとは、前述のcommandと同操作。

Android 4.0.x==14 Ice Cream Sandwich
Android 4.0.3==15 Ice Cream Sandwich MR1
Android 4.1.x==16 Jelly Bean
Android 4.2.x==17 Jelly Bean MR1
Android 4.3==18 Jelly Bean MR2
Android 4.4==19 KitKat

Building manually from source

フルでビルド。後でやってみる。

6
8
0

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
6
8