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..)

同时推荐betterbatterystat http://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

su
tcpdump -s 0 -w - | busybox nc -l -p 11233

2. adb_wireshark.sh

adb shell < adb_tcpdump.sh &

sleep 1
adb forward tcp:11233 tcp:11233
sleep 1 mkfifo /tmp/sharkfin
wireshark -k -i /tmp/sharkfin & nc 127.0.0.1 11233 > /tmp/sharkfin

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

  

android 移动网络实时抓包的更多相关文章

  1. 使用Fiddler针对Android手机网络请求抓包

    本文转载自大牛Trinea的博文:Android利用Fiddler进行网络数据抓包 主要介绍Android及IPhone手机上如何利用Fiddler进行网络数据抓包,比如我们想抓某个应用(微博.微信. ...

  2. [转] Android实时抓包分析 : 善用adb调试桥

    Android实时抓包分析 : 善用adb调试桥   谈到android网络抓包,很多人都能想到牛逼轰轰的神器tcpdump.方法就是在android机器上面安装tcpdump,然后通过-w参数把抓包 ...

  3. Android利用Fiddler进行网络数据抓包

    最新最准确内容建议直接访问原文:Android利用Fiddler进行网络数据抓包 主要介绍Android及IPhone手机上如何进行网络数据抓包,比如我们想抓某个应用(微博.微信.墨迹天气)的网络通信 ...

  4. Android利用Fiddler进行网络数据抓包,手机抓包工具汇总

    Fiddler抓包工具 Fiddler抓包工具很好用的,它可以干嘛用呢,举个简单例子,当你浏览网页时,网页中有段视频非常好,但网站又不提供下载,用迅雷下载你又找不到下载地址,这个时候,Fiddler抓 ...

  5. Android利用Fiddler进行网络数据抓包【怎么跟踪微信请求】

    主要介绍Android及IPhone手机上如何利用Fiddler进行网络数据抓包,比如我们想抓某个应用(微博.微信.墨迹天气)的网络通信请求就可以利用这个方法. Mac 下请使用 Charles 代替 ...

  6. [转] Android利用Fiddler进行网络数据抓包

    主要介绍Android及IPhone手机上如何利用Fiddler进行网络数据抓包,比如我们想抓某个应用(微博.微信.墨迹天气)的网络通信请求就可以利用这个方法. Mac 下请使用 Charles 代替 ...

  7. Android利用Fiddler进行网络数据抓包,手机抓包工具汇总,使用mono运行filddler

    Fiddler抓包工具 Fiddler抓包工具很好用的,它可以干嘛用呢,举个简单例子,当你浏览网页时,网页中有段视频非常好,但网站又不提供下载,用迅雷下载你又找不到下载地址,这个时候,Fiddler抓 ...

  8. 如何在 Android 手机上实现抓包?

    如何在 Android 手机上实现抓包? http://www.zhihu.com/question/20467503 我想知道某个应用究竟在数据提交到哪里,提交了什么.网上的教程太复杂,不想麻烦.有 ...

  9. MX2怎样利用Fiddler进行网络数据抓包

    首先须要保证PC与手机在同一局域网内或有独立公网IP, 下面以在同一局域网为例(保证手机能訪问到这台PC机器): 1. PC端配置 1). 安装Fiddler 2). 开启Fiddler下面功能:   ...

随机推荐

  1. 高介分类:核方法与支持向量机(SVM)

        数据模型:并不是简单地二维数据,多个维度或者对象的数据聚合起来      {           persion1's attr1:value1,...,persion1's attrN:va ...

  2. Vue2.0组件间数据传递

    Vue1.0组件间传递 使用$on()监听事件: 使用$emit()在它上面触发事件: 使用$dispatch()派发事件,事件沿着父链冒泡: 使用$broadcast()广播事件,事件向下传导给所有 ...

  3. Error 1606 Could Not Access Network Location %SystemDrive%/inetpub/wwwroot/ 的错误解决方法

    在卸载或者重安装Infragistics NetAdvantage时候提示如标题的错误 win7下 1.打开注册表 Regedit 2.找到HKEY_LOCAL_MACHINE/SOFTWARE/Mi ...

  4. 关于delphi exit 继承

    父类窗体frm 继承下来一个子类 form2 父类按钮代码 procedure Tfrm.Button1Click(Sender: TObject); begin ShowMessage('); Ex ...

  5. Oracle查询时间字段并排序

    select * from geimstatus_history twhere to_date(t.data_time,'YYYY-mm-dd') = to_date(sysdate,'YYYY-mm ...

  6. linux单网卡多IP配置

    一.仅一个网卡的情况下,可以让该机器可以通过多个IP被访问,或隐藏常用IP,让他人访问其临时IP. 1.如果临时性的增加一个IP(重启机器或network服务后,丢失),可以使用ifconfig命令 ...

  7. iOS代码规范

    一.文档结构管理 1.建立Libraries文件夹,所有第三方库放入其中. 2.建立Utilities文件夹,自已封装的类放入其中. 3.建立Constants.h头文件,所有的常量定义于其中.Con ...

  8. 【Phylab2.0】Beta版本发布说明

    新版本特性 1. 新的物理实验 1020314等 2. 讨论区与报告界面的整合 3. 在线脚本管理功能 4. 管理员功能 有在线脚本管理功能的支持后加入了管理员模式,可以向其他学校开放,招募管理员并添 ...

  9. oracle--第一天PLSQL--bai

    第一天: -- 创建book表 create table book ( bid number primary key, bname varchar2(20) not null, price numbe ...

  10. php的empty(),trim(),strlen()方法

    如果empty()函数的参数是非空或非零的值,则empty()返回FALSE.换句话说,"".0."0".NULL.array().var$var:以及没有任何 ...