• 分析 Android 中 app 的网络数据交互,需要在 Android 上抓包,常用工具为 tcpdump ,用 tcpdump 生成 Wireshark 识别的 pcap 文件,把 pcap 文件从手机上拷贝到电脑上,Wireshark 加载 pcap 文件,通过 Wireshark 分析 tcpdump 抓取的数据

tcpdump 安装

  1. 手机需要 root
  2. 下载 Android tcpdump
  3. 使用 adb 命令把 tcpdump 放入到手机中

    adb push tcpdump /sdcard/

    adb shell su cat /sdcard/tcpdump > /system/bin/tcpdump
  4. 当提示没有权限时,输入

    monut
  5. 在结果中找到包含 /system 的一行,类似:

    /dev/block/bootdevice/by-name/system /system ext4 rw,seclabel,relatime,data=ordered 0 0
  6. 执行如下命令

    mount -o remount /dev/block/bootdevice/by-name/system
  7. 这时 /system 拥有写权限,继续执行

    cat /system/tcpdump > /system/bin/tcpdump

    chmod 777 /system/bin/tcpdump
  8. 这样 tcpdump 就成功安装到了 /system/bin 目录下

使用 tcpdump 抓包

  1. 使用 tcpdump 抓包。

    1. tcpdump -i any -p -s 0 -w /sdcard/capture.pcap

    命令参数:

    1. # "-i any": listen on any network interface
    2. # "-p": disable promiscuous mode (doesn't work anyway)
    3. # "-s 0": capture the entire packet
    4. # "-w": write packets to a file (rather than printing to stdout)

    可以结束时使用 Ctrl+C 让 tcpdump 结束抓包,抓到的数据会保存到 /sdcard/capture.pcap

  2. 通过 adb pull 命令拿到 pcap 文件,

    1. adb pull /sdcard/capture.pcap .
  3. 使用 Wireshark 打开 pcap 文件,分析 log

tcpdump 语法

  1. tcpdump [ -AdDefIKlLnNOpqRStuUvxX ] [ -B buffer_size ] [ -c count ]
  2. [ -C file_size ] [ -G rotate_seconds ] [ -F file ]
  3. [ -i interface ] [ -m module ] [ -M secret ]
  4. [ -r file ] [ -s snaplen ] [ -T type ] [ -w file ]
  5. [ -W filecount ]
  6. [ -E spi@ipaddr algo:secret,... ]
  7. [ -y datalinktype ] [ -z postrotate-command ] [ -Z user ]
  8. [ expression ]
  1. 类型的关键字

    host(缺省类型): 指明一台主机,如:host 210.27.48.2

    net: 指明一个网络地址,如:net 202.0.0.0

    port: 指明端口号,如:port 23

  2. 确定方向的关键字

    src: src 210.27.48.2, IP包源地址是210.27.48.2

    dst: dst net 202.0.0.0, 目标网络地址是202.0.0.0

    dst or src(缺省值)

    dst and src

  3. 协议的关键字:缺省值是监听所有协议的信息包

    fddi

    ip

    arp

    rarp

    tcp

    udp

  4. 其他关键字

    gateway

    broadcast

    less

    greater

  5. 常用表达式:多条件时可以用括号,但是要用\转义

    非 : ! or "not" (去掉双引号)

    且 : && or "and"

    或 : || or "or"

  6. 选项

    1. -A:以ASCII编码打印每个报文(不包括链路层的头),这对分析网页来说很方便;
    2. -a:将网络地址和广播地址转变成名字;
    3. -c<数据包数目>:在收到指定的包的数目后,tcpdump就会停止;
    4. -C:用于判断用 -w 选项将报文写入的文件的大小是否超过这个值,如果超过了就新建文件(文件名后缀是123依次增加);
    5. -d:将匹配信息包的代码以人们能够理解的汇编格式给出;
    6. -dd:将匹配信息包的代码以c语言程序段的格式给出;
    7. -ddd:将匹配信息包的代码以十进制的形式给出;
    8. -D:列出当前主机的所有网卡编号和名称,可以用于选项 -i
    9. -e:在输出行打印出数据链路层的头部信息;
    10. -f:将外部的Internet地址以数字的形式打印出来;
    11. -F<表达文件>:从指定的文件中读取表达式,忽略其它的表达式;
    12. -i<网络界面>:监听主机的该网卡上的数据流,如果没有指定,就会使用最小网卡编号的网卡(在选项-D可知道,但是不包括环路接口),linux 2.2 内核及之后的版本支持 any 网卡,用于指代任意网卡;
    13. -l:如果没有使用 -w 选项,就可以将报文打印到 标准输出终端(此时这是默认);
    14. -n:显示ip,而不是主机名;
    15. -N:不列出域名;
    16. -O:不将数据包编码最佳化;
    17. -p:不让网络界面进入混杂模式;
    18. -q:快速输出,仅列出少数的传输协议信息;
    19. -r<数据包文件>:从指定的文件中读取包(这些包一般通过-w选项产生);
    20. -s<数据包大小>:指定抓包显示一行的宽度,-s0表示可按包长显示完整的包,经常和-A一起用,默认截取长度为60个字节,但一般ethernet MTU都是1500字节。所以,要抓取大于60字节的包时,使用默认参数就会导致包数据丢失;
    21. -S:用绝对而非相对数值列出TCP关联数;
    22. -t:在输出的每一行不打印时间戳;
    23. -tt:在输出的每一行显示未经格式化的时间戳记;
    24. -T<数据包类型>:将监听到的包直接解释为指定的类型的报文,常见的类型有rpc (远程过程调用)和snmp(简单网络管理协议);
    25. -v:输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息;
    26. -vv:输出详细的报文信息;
    27. -x/-xx/-X/-XX:以十六进制显示包内容,几个选项只有细微的差别,详见man手册;
    28. -w<数据包文件>:直接将包写入文件中,并不分析和打印出来;
    29. expression:用于筛选的逻辑表达式;

Wireshark 分析数据

Android利用tcpdump和wireshark抓取网络数据包: http://www.trinea.cn/android/tcpdump_wireshark/

iOS,Android网络抓包教程之tcpdump: http://mrpeak.cn/blog/tutorial-tcpdump/

聊聊tcpdump与Wireshark抓包分析: http://www.jianshu.com/p/a62ed1bb5b20

Filder 抓包: http://www.jianshu.com/p/f173ed2aed13

Wireshark 学习:https://community.emc.com/message/818739

tcpdump 命令详解:http://www.jianshu.com/p/15471420422c

Android通过tcpdump抓包: http://www.jianshu.com/p/23abbd62781e

Android 抓包并通过 Wireshark 分析的更多相关文章

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

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

  2. Linux使用tcpdump命令抓包并使用wireshark分析

    Linux使用tcpdump命令抓包并使用wireshark分析 介绍 有时分析客户端和服务器网络交互的问题时,为了查找问题,需要分别在客户端和服务器上抓包,我们的客户端一般是windows上的,抓包 ...

  3. android 抓包 使用 tcpdmp + Wireshark

         下载地址tcpdump: http://www.androidtcpdump.com/      使用su用户, 给/system/可写的权限 mount -o remount,rw -t ...

  4. Android抓包方法(三)之Win7笔记本Wifi热点+WireShark工具

    Android抓包方法(三) 之Win7笔记本Wifi热点+WireShark工具 前言 做前端测试,基本要求会抓包,会分析请求数据包,查看接口是否调用正确,数据返回是否正确,问题产生是定位根本原因等 ...

  5. Android抓包方法(二)之Tcpdump命令+Wireshark

    Android抓包方法(二) 之Tcpdump命令+Wireshark 前言 做前端测试,基本要求会抓包,会分析请求数据包,查看接口是否调用正确,数据返回是否正确,问题产生是定位根本原因等.学会抓包分 ...

  6. Android抓包方法(一)之Fiddler代理

    Android抓包方法(一) 之Fiddler代理 前言: 做前端测试,基本要求会抓包,会分析请求数据包,查看接口是否调用正确,数据返回是否正确,问题产生是定位根本原因等. 不管是之前做HTML5手机 ...

  7. Android抓包方法(转)

    Android抓包方法(转) 作者:Findyou 地址:http://www.cnblogs.com/findyou/p/3491014.html 前言: 做前端测试,基本要求会抓包,会分析请求数据 ...

  8. Wireshark数据抓包教程之Wireshark的基础知识

    Wireshark数据抓包教程之Wireshark的基础知识 Wireshark的基础知识 在这个网络信息时代里,计算机安全始终是一个让人揪心的问题,网络安全则有过之而无不及.Wireshark作为国 ...

  9. Wireshark数据抓包教程之Wireshark捕获数据

    Wireshark数据抓包教程之Wireshark捕获数据 Wireshark抓包方法 在使用Wireshark捕获以太网数据,可以捕获分析到自己的数据包,也可以去捕获同一局域网内,在知道对方IP地址 ...

随机推荐

  1. Linux内核中的软中断、tasklet和工作队列具体解释

    [TOC] 本文基于Linux2.6.32内核版本号. 引言 软中断.tasklet和工作队列并非Linux内核中一直存在的机制,而是由更早版本号的内核中的"下半部"(bottom ...

  2. 【DB2】性能管理视图

    1.性能管理部分视图列表 可以使用命令db2 list tables for schema sysibmadm获取所有的性能管理视图 视图名称              模式名            ...

  3. SpringCloud学习资料

    CSDN博客:http://blog.csdn.net/k21325/article/details/52789829 http://blog.csdn.net/qq_26562641/article ...

  4. Axure 万年历(日期选择下拉文本框)

    百度网盘:http://pan.baidu.com/s/1c1ZjUPq 点击“图1”可呈现出“图2”的效果.(已实现模板化功能,不用去研究去为什么,直接使用即可)

  5. 如何使用 MSBuild.exe 生成解决方案中的特定目标

    以前都是直接使用VS或者msbuild生成整个解决方案,或者只构建单个工程. 这回使用msbuild构建单个工程的时候出现了问题,因为工程中使用了SolutionDir这个宏来定位第三方库路径. 对于 ...

  6. vs code 问题:preLaunchTask“build”已终止,退出代码为 1。解决办法

    菜单:任务-配置任务 改为如下: { // See https://go.microsoft.com/fwlink/?LinkId=733558 // for the documentation ab ...

  7. GNU Linux系统变量(sysctl配置命令)综合使用

    查看全部kernel变量的值 sysctl -a 怎样查看一个系统变量的值 1).cat /proc/sys/net/ipv4/ip_local_port_range 32768 61000 2).s ...

  8. 【OT1.0 + TP3.2】开启trace调试、输出调试信息、开启自定义菜单

    1.开启trace调试 A- 后台系统设置 show-page-trace = 1 B-config.php文件.配置 show-page-trace = true 2.输出调试信息 很奇怪,OT竟然 ...

  9. ios中asihttprequest 下载缓存

    asi中下载缓存第一种方法 #import <UIKit/UIKit.h> #import "ASIHTTPRequest.h" #import "ASIDo ...

  10. LATeX 插入脚注

    LATeX 插入脚注: 使用  \footnote{...注释内容} 命令: To maximize the lower-bound $ we employ conjugate gradient me ...