A.抓Android手机的网络包方法
声明:此文大部分是另一位作者所写,实在对不住,弄丢了他的博客地址,特在此声明。尊重著作权!
1. 手机要有root权限
2. 下载tcpdump
3.adb push c:\wherever_you_put\tcpdump/data/local/tcpdump
4.adb shell chmod 6755 /data/local/tcpdump
-------------------------------------------------seeking的试验---------------------------------------------
F:\Android\Dev\android-sdk-windows\tools>adb push F:\Android\Dev\tcpdump /data/local/tcpdump
254 KB/s (645840 bytes in 2.480s)
F:\Android\Dev\android-sdk-windows\tools>adb shell chmod 6755 /data/local/tcpdump
F:\Android\Dev\android-sdk-windows\tools>
-------------------------------------------------------------------------------------------------------------------
5, adb shell, 获得root权限怎么获得root权限http://blog.sina.com.cn/s/blog_03f02975010142jq.html
6, cd /data/local
7, ./tcpdump -i any -p -s 0 -w /mnt/capture.pcap
命令参数详解:
# "-i any": listen on any network interface 监听任何网络端口
# "-p": disable promiscuous mode (doesn't work anyway)
# "-s 0": capture the entire packet
# "-w": write packets to a file (rather than printing to stdout)
将抓住的包放到指定的文件中,而不是向标准输出端显示
... do whatever you want to capture, then ^C to stop it ... 当你想停止监听时,按Ctrl+C
8,
9, 在电脑上用wireshark(下载地址:)打开capture.pcap即可分析log
-------------------------------------------------seeking的试验--------注意打开手机的“数据流量开关”----------------
F:\Android\Dev\android-sdk-windows\tools>adb shell
# cd /data/local
cd /data/local
# ./tcpdump -i any -p -s 0 -w /mnt/capture.pcap
./tcpdump -i any -p -s 0 -w /mnt/capture.pcap
tcpdump: listening on any, link-type LINUX_SLL (Linux cooked), capture size 65535 bytes
^C
F:\Android\Dev\android-sdk-windows\tools>adb pull /mnt/capture.pcap G:\
609 KB/s (24984 bytes in 0.040s)
以下是G:\ capture.pcap文件在wireshark中打开的情形:
-----------------------------------------------------------------------------------------------------------------------------------------------------------
Execute the following if you would like to watch packets go by rather than capturing them to a file (-n skips DNS lookups. -s 0 captures the entire packet rather than just the header):
adb shell tcpdump -n -s 0
Typical tcpdump options apply. For example, if you want to see HTTP traffic:
只监听http
adb shell tcpdump -X -n -s 0 port 80
根据以上的信息,写一个bat去执行(tcpdump文件必须在当前目录里)。
开始tcpdump
adb push tcpdump /data/local/tcpdump
adb shell chmod 6755 /data/local/tcpdump
adb shell rm -r /sdcard/capture.pcap
adb shell /data/local/tcpdump -i any -p -s 0 -w /sdcard/capture.pcap
pause
下载tcpdump文件到电脑
adb pull /sdcard/capture.pcap
问题:有些机器root后通过adb shell 后,默认不是root用户,需要输入 su
(注:需要su工具邮我99688385@qq.com,附赠其使用方法。)
才能切换到root,这样在执行批处理会有问题,解决方法如下
adb shell "su -c 'sleep 1'"
adb start-server
adb push tcpdump /data/local/tcpdump
tcpdump是一个命令行方式的嗅探工具。它诞生的时候较早,是许多图形化嗅探工具的雏形。主要作用是截获制定接口或所有接口的数据包,且能按照一定规则过滤截获的数据包,以此满足使用者分析其内容的目的。
在一些Linux发行版本中,tcpdump通常作为标准的软件包被默认安装,当然Android也不例外。执行“tcpdump”命令可以确定是否已安装了tcpdump。如果未安装,到网上搜或是邮我:99688385@qq.com
tcpdump的用法其实很简单,不需要太多的关注,直接输入tcpdump命令可产看详细用法。
上图列出了tcpdump详细的用法,我们常用的方法是使用:
tcpdump –i interface –s snaplen –w file
i参数的作用是指定需要抓哪个网卡的数据,关于网卡,我们可以用ifconfig查出当前的网卡。在命令行输入“ifconfig”即可。
-s参数指定是否需要分割数据包,一般用0
-w捕获的数据包的存储路径。
关于数据包的查看方法我们可以直接用strings命令来查看数据包,如在/sdcard目录下有一个数据包aa.cap,我们要查看他可以用strings /sdcard/aa.cap进行查看,也可以用strings /sdcard/aa.cap > /data/aa.txt命令,将数据包已字符串形式输入aa.txt文档后再使用命令cat –bn /data/aa.txt查看,当然还可以将数据包取出,放入PC机查看。
至此该文档已结束,希望对阅读者有一定的帮助。