Android下使用tcpdump抓包相关问题


  tcpdump是个非常好用的抓包工具,用来排查网络相关问题非常方便,这工具也有android版本,下载Android cpdump
下载之后需要把tcpdump放到android系统里面,所以必须要有root权限才行,类似网上的教程很多,这里我写一下存在一些问题,具体如下

  1. 检查设备是否已经自带tcpdump,因为有些设备刷了开发者rom之后就已经内置tcpdump,你再自己下载一个push上去纯属瞎折腾,所以先adb shell进去执行which tcpdump或者busybox which tcpdump查看返回信息确定是否已经有tcpdump,这里需要考虑一下有些设备是集成的busybox工具

  2. 权限问题,有些设备你直接push tcpdum文件会发现无法push进去,因为adb shell没有目标目录可写权限,原因很多比如5.0以上的设备被安全策略限制了执行adb shell su会卡住,还有一些厂家执行修改了部分安全策略,这在TV上尤其明显,这个时候你先push到/sdcard目录下,然后remount一下/system,直接将tcpdump移到/system/xbin/目录下即可,具体操作如下

     # mount|grep system
     /dev/block/mmcblk0p7 /system
     # mount -o remount /dev/block/mmcblk0p7 /system

    如果不支持grep命令,直接使用mount,然后找到/system挂载的那一行,复制下来用mount命令remount一下就行了,之后执行下面命令移到系统环境目录下并加上可执行权限

     # mv /sdcard/tcpdump /system/xbin/tcpdump
     # chmod +x /system/xbin/tcpdump
  3. 抓包命令

     //抓全部包,将内容写入/sdcard/capture.pcap文件,pull下来用wireshark可以查看
     # tcpdump -p -vv -s 0 -w /sdcard/capture.pcap
     //抓http get请求
     # tcpdump -s 0 -A 'tcp dst port 80 and tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420'
     //抓http post请求
     # tcpdump -s 0 -A 'tcp dst port 80 and (tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x504f5354)'

    上面抓http请求的命令非常有用,因为Android开发中大部分情况下使用这两个就够用了,而且输出结果非常直观,不需要用wireshark进行过滤


内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://11000011.com/?id=67

« 上一篇 下一篇 »

我要评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

主机推荐

  • 搬瓦工