• 分析 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 抓包。

     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)

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

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

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

tcpdump 语法

tcpdump [ -AdDefIKlLnNOpqRStuUvxX ] [ -B buffer_size ] [ -c count ]
[ -C file_size ] [ -G rotate_seconds ] [ -F file ]
[ -i interface ] [ -m module ] [ -M secret ]
[ -r file ] [ -s snaplen ] [ -T type ] [ -w file ]
[ -W filecount ]
[ -E spi@ipaddr algo:secret,... ]
[ -y datalinktype ] [ -z postrotate-command ] [ -Z user ]
[ 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. 选项

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

    在Camera中推荐使用NV21和YV12,因为这两种格式支持所有的相机设备. 但是在Camera2中,推荐使用的格式则是YUV_420_888. 总的来说,在Android里面YUV用得比较多的应该 ...

  2. 【Android】ant编译aidl的错误

    使用ant编译Android应用程序工程时,出现的错误: 错误信息(Cygwin): [aidl] This application has requested the Runtime to term ...

  3. 【Linux】eclipse juno 边框过大的调整方法

    切换至eclipse目录: vi plugins/org.eclipse.platform_4.2.*/css/e4_default_gtk.css 找到.MPartStack,替换成如下代码: .M ...

  4. win10更新后无法远程,报 credssp加密oracle修正

    答案都在图里,看不清就浏览器放大观看 打开开始菜单,搜索“编辑组策略”  进入

  5. SpannableStringUtil实现丰富文字效果

    代码地址如下:http://www.demodashi.com/demo/15007.html 前言 在android开发中,我们不免会用到 TextView 的各种显示效果,如字体样式,颜色,大小, ...

  6. Redis持久化之RDB与AOF

    1. Redis的持久化方式 Redis作为高效的缓存件,它的数据存放在内存中,如果没有配置持久化,那么数据会在重启后丢失,因此如果不是仅用Redis做缓存的话,需要开启Redis的持久化功能,将数据 ...

  7. iOS linker command failed with exit code 1 (use -v to see invocation)多种解决方案汇总

    有时可能会遇到这种错误,关键是这种错误,有时只有这一句话,也不会给更多错误信息. 网上找了一些,总结了如下:(PS:以下是按照解决简易程度排序,不代表出现概率) 1.bitcode问题 解决如下:原因 ...

  8. MATLAB 设置文件的相对路径

    加载文件使用命令:load(' 文件名 or 文件路径 ') 1.文件在当前路径下: 直接  load('session.mat') 2.文件在下一级路径下: 使用  load (' .\下一级路径的 ...

  9. 【转载】TCP数据包结构

    最近在研究TCP协议,找了点资料,感觉很经典,所以转载过来. 如果本文中图片不能观看,请链接原始地址:http://xinxiangsui2018.blog.163.com/blog/static/1 ...

  10. java restful接口

    用json-lib的jar包输出json串: public void responseJason(HttpServletResponse response, Object obj){ ObjectMa ...