http://blog.csdn.net/deng529828/article/details/20646197

1. 手机要有root权限

2. 下载tcpdump   http://www.strazzere.com/android/tcpdump

3. adb push c:\wherever_you_put\tcpdump /data/local/tcpdump

如果这一步真机无法push,可以用adb push c:\where_you_put\tcpdump /sdcard,即先将文件存入不需要权限的文件夹中,这里用sdcard,然后在传到/data/local/tcpdump。

4. adb shell chmod 6755 /data/local/tcpdump

5, adb shell,   su获得root权限

6, cd /data/local

7, ./tcpdump -i any -p -s 0 -w /sdcard/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 ...

下载tcpdump文件到电脑

adb pull /sdcard/capture.pcap capture.pcap

然后用wireshark打开即可看到数据包的详细信息。

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

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

2. adb_wireshark.sh

1
2
3
4
5
6
7
8
9
10
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通过tcpdump抓包(wifi, 2g, 3g都可以)的更多相关文章

  1. [转] Android利用tcpdump抓包

    原文链接:http://mysuperbaby.iteye.com/blog/902201 Android利用tcpdump抓包 博客分类: Android AndroidAccessGoHTML  ...

  2. Android手机tcpdump抓包

    在开发过程中遇到问题时,无法非常方便的获取到数据包,导致分析解决问题比较麻烦.这里介绍如何在Android手机上实现tcpdump抓包.   1.root机器  在用tcpdump抓包过程中,需要使用 ...

  3. Android利用tcpdump抓包,用wireshark分析包。

    1.前言 主要介绍在android手机上如何利用tcpdump抓包,用wireshark分析包. android tcpdump官网: http://www.androidtcpdump.com/ t ...

  4. android下tcpdump抓包

    tcpdump是最快捷方便的抓包方式,还可以加深对网络协议的理解.android下可以通过如下方式抓包: 1 Android上启动tcpdump Android设备可以把tcpdump的可执行文件上传 ...

  5. Android使用tcpdump抓包

    AllJoyn中有个问题:Server切换到Client后,重新加入其他Server时join session会失败,原因是timeout(join session是异步的,在指定时间内没有收到回应) ...

  6. Android通过tcpdump抓包

    1. 手机要有root权限 2. 下载tcpdump   http://www.strazzere.com/android/tcpdump 3. adb push c:\wherever_you_pu ...

  7. 转:android root tcpdump抓包强烈推荐

    转:http://www.cnblogs.com/findyou/p/3491035.html 写的相当详细且完整,业界良心. adb push d:\tcpdump /data/local/ adb ...

  8. fiddler Android下https抓包全攻略

    fiddler Android下https抓包全攻略 fiddler的http.https的抓包功能非常强大,可非常便捷得对包进行断点跟踪和回放,但是普通的配置对于像招商银行.支付宝.陌陌这样的APP ...

  9. 基于TcpDump和pcap文件分析的Android平台网络抓包程序设计与实现【随便】

    一.考虑使用Tcpdump,将抓到的包保存到cap文件中,然后手动分析.参考资料:1. http://www.cnblogs.com/tt-0411/archive/2012/09/23/269936 ...

随机推荐

  1. 10分钟制作自己的手机QQ

    1.注册个bmob.cn的账号:什么是bmob?bmob就是一个提供了基本后台服务器数据库操作的一个平台,你可以不用担心后台操作,使用起来很方便,降低了开发的门槛,提高了开发效率. 2.创建应用: 这 ...

  2. 【转】 hive简介,安装 配置常见问题和例子

    原文来自:  http://blog.csdn.net/zhumin726/article/details/8027802 1 HIVE概述 Hive是基于Hadoop的一个数据仓库工具,可以将结构化 ...

  3. EDM

    今天,夏令营需要发推广EDM. 之前的edm都是文字版, 今天摸索了一下,简单写了些码, 效果还不错. 演示:http://baike.baidu.com/cms/s/bkcampus/summerc ...

  4. openstack系列阅读目录

    一 keystone系列 keystone基础 网关协议cgi,fastcgi,wsgi,uwsgi keystone源码分析 keystone部署及使用 keystone客户端工作介绍 二 glan ...

  5. 关于继承MonoBehaviour的一些记录

    在开发游戏中,为了减少不必要的代码量,我们经常会继承MonoBehaviour,那么MonoBehaviour内部的内置方法Start.Update等等如果在父类中定义了,在子类中再次定义会发生什么事 ...

  6. iOS新特性引导页

    有一个注意点: 获取版本号 个叫做Version,一个叫做Build,这两个值都可以在Xcode 中选中target,点击"Summary"后看到. Version在plist文件 ...

  7. iOS开发——面试笔试精华(四)

    面试笔试精华(四) 1.        Object-C有多继承吗?没有的话用什么代替?
 1>  OC是单继承,没有多继承 2>  有时可以用分类和协议来代替多继承 2.        ...

  8. CodeMachine Debugger Extension DLL

    http://www.codemachine.com/downloads.html http://www.codemachine.com/tool_cmkd.html#stack

  9. 迷你template

    JavaScript Micro-Templatinghttp://ejohn.org/blog/javascript-micro-templating/   //Simple JavaScript ...

  10. C#连接SQL SERVER数据库的详细步骤!

      首先,在SQL SEVER里建立一个名为“Exercise”的数据库名,在该数据库下建立一张名为“lianxi”的表.好,现在开始写代码. 在FORM1里拖一个DATAGIRDVIEW用于显示表, ...