2G、3G环境,那就必须root进去tcpdump 方式抓。

准备:

一、root

CF-auto-root:http://autoroot.chainfire.eu/

需要清理全部数据,注意备份

不用怕root 后的不安全,root权限由superU管理授权。

root 后推荐: 绿色保护、fqrouter、xposed、XPrivacy。

二、软件

- adb

包含在android sdk中,通过USB debug 和android交互工具

- tcpdump

安装一个tcpdump 相关的app,app启动后会获取root权限将tcpdump安装好,当然不怕麻烦也可以下android tcpdump版本手动copy进去

  ----update 2015-1-2

  Android 5后,强制要求二进制文件支持PIE(Position-Independent-Executable) 提高系统安全性,能找到的tcpdump包基本都没PIE 无法执行,需修改tcpdump编译选项,刚找到编译好现成的了:http://www.liudonghua.com/?p=372里面有下载(测试可用)。

- busybox

一个命令工具集合,在adb shell 提供大多数linux 下命令,我们要用到的nc 就在里面

三、离线抓包

- 方式一:adb usb 连接进去执行抓包

adb shell su

tcpdump -s 0 -w /sdcard/tmp.pcap

- 方式二: tcpdump app 上执行抓包

相关app 很多

好处:可以不用usb连接,也能抓到正常使用环境的网络包,

usb 连接时android 系统将不会进入深度睡眠,深度睡眠时客户端行为可能不太一样(wake lock、alarm、wifi switch..)

同时推荐betterbatterystathttp://forum.xda-developers.com/showthread.php?t=1179809

- 拿出包

抓完后,因为文件是通过root 账号写的,windows下看不到,mac本身不支持,所以停止回到系统shell

adb pull /sdcard/tmp.pcap .

四、 实时查看抓包

通过分享热度、360移动wifi 都能做到,不过存在问题:

1. 只能wifi网络

2. 因为是中间节点,抓的包的时序不一定是客户端包的时序

2G/3G网络也可以做到,原理 将tcpdump 标准输出给nc、adb 只是端口映射,本机nc 连接adb 映射端口,将流给创建pipe,wireshark 支持pipe流

脚本:

1. adb_tcpdump.sh

sutcpdump -s 0 -w - | busybox nc -l -p 11233

2. adb_wireshark.sh

adb shell < adb_tcpdump.sh &sleep 1adb forward tcp:11233 tcp:11233sleep 1mkfifo /tmp/sharkfinwireshark -k -i /tmp/sharkfin &nc 127.0.0.1 11233 > /tmp/sharkfin

在mac 下执行./adb_wireshark.sh 就能弹出wireshark实时看看手机流量了

  

更多相关文章

  1. Android(安卓)Handler消息处理顺序分析
  2. 【androd基础】之Android(安卓)返回键的调用
  3. Android(安卓)ADB wifi 连接
  4. mac下Android(安卓)studio gradle 配置
  5. 以修改字体为例谈Android的listView开发优化
  6. HP TouchPad & Android
  7. cocos2dx的学习
  8. 【Android(安卓)开发教程】显示进度对话框
  9. android之WIFI网络操作笔记

随机推荐

  1. Android(安卓)APK 安装过程及原理详解
  2. Android消息推送完美解决方案全析
  3. Android(安卓)SHA1值获取方式(开发模式和
  4. android 内存优化以及性能优化相关问题
  5. Android快速实现二维码扫描--Zbar
  6. CyanogenMod 10 修改 Vold 使 Android 自
  7. CountDownTimer浅析
  8. Android Framework 之HelloWorld(二)
  9. [置顶] 【Android】 基于Socket 的即时通
  10. 修改Android Studio的Android SDK Path