Android 系统上抓取数据包方法

       最近在做一个项目,有关功能是实现两台手机设备的数据交流。项目中需要分析两台手机互发的数据包,所以要抓取手机的报文进行分析。我尝试了很多方法,包括传统的wireshark抓包、sniffer嗅探、用commView For WIFI嗅探,遇到了很多麻烦的问题最终并没能达到理想效果(具体原因继续研究)。

       之前尝试的是在手机设备的上层设备进行数据包的抓取,另外一个思路是直接在手机设备上抓取。下边介绍下怎么直接在android手机上抓取数据报文。


工具准备

     android设备(已经root)

     adb.exe

     tcpdump


     工具包下载路径:http://download.csdn.net/detail/duval_yang/8684177


详细步骤


     (1) android手机连接电脑,并打开USB调试。命令行进入adb.exe目录,输入 命令adb devices 可以查看连接上电脑的设备。如图:

          Android 系统上抓取数据包方法_第1张图片


     (2) 然后把 tcpdump 推送到手机设备上,在命令行输入命令 adb push tcpdump /data/local/tmp ,即可将tcpdump 推送到手机的/data/local/tmp目录下。( 网上有人介绍推送到 /data/local/tcpdump目录下,涉及到权限修改,但我尝试多次都是遇到permission denied错误。未解。) 如图:


          

   

    (3) 然后可以进入手机系统去查看 tcpdump包的情况。如图:


            Android 系统上抓取数据包方法_第2张图片


    (4)然后开始抓包,将报文保存到SD卡中。抓包前先su root 进入ROOT权限,抓包结束后可以Ctrl+C结束。如图:


            Android 系统上抓取数据包方法_第3张图片


           tcpdump抓包命令自行搜索~

       



   (5) 将数据导出到电脑,用wireShark打开查看。命令  adb pull


             

     


常见问题:


1. adb error 错误

 
                


    解决办法:Ctrl+Alt+Del 进入任务管理器,找到 kadb.exe进程,结束掉它即可。如图:


                 Android 系统上抓取数据包方法_第4张图片


2.error:device not found 错误


    解决办法:Ctrl+Alt+Del 进入任务管理器,找到 kadb.exe进程; 把手机USB拔出,重新插进。


3. stopped (signal)  错误


            


    解决办法:进入root用户再操作。(命令 su root)



你可能感兴趣的:(android,wireshark,tcpdump,adb,手机抓包)