Android手机的抓网络包方法

A.Android手机的网络包方法


声明:此文大部分是另一位作者所写,实在对不住,弄丢了他的博客地址,特在此声明。尊重著作权!

1. 手机要有root权限

2. 下载tcpdump   http://www.strazzere.com/android/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,   su获得root权限  AVD怎么获得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,  adb pull /mnt/capture.pcap d:/

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中打开的情形:

Android手机的抓网络包方法


 

-----------------------------------------------------------------------------------------------------------------------------------------------------------

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详细的用法,我们常用的方法是使用:


Android手机的抓网络包方法

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机查看。

至此该文档已结束,希望对阅读者有一定的帮助。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值