1、 使用环境
PC
系统:Ubuntu 16.04
使用软件:WireShark
手机
系统:android 模拟器(android 工程机)
软件:busybox
其他工具: adb,nc 命令
2、实现思路
要实现实时监控两种思路:一种是使用代理在代理过程中获取数据内容;一种是用 tcpdump 抓包将数据发往 PC 端。
本文介绍的是第二种方式:在手机中使用 tcpdump 命令抓取数据,将数据转发出去,PC 端接收转发到的数据,将数据传给 WireShark。
3、 实现过程
按照上面的思路分为一下四个过程:
<1> 手机端抓包
使用 tcpdump 获取网络包
<2> 手机端转发数据
使用 nc 将数据发往指定端口
<3> 将 android 中数据发往 PC
使用 adb 命令转发数据
<4> PC 接收数据
使用 nc 获取数据
<5> PC 分析数据
使用 WireShark 分析数据
手机
# 使用 tcpdump 抓包,并将结果输出到终端,再通过管道和 nc 监听 12345 端口,等待连接 tcpdump -n -s 0 -w - | busybox nc -l -p 12345
PC
# 使用 adb 转发 socket 连接 adb forward tcp:12345 tcp:12345 # nc 连接 PC 12345 端口,通过上面的 adb forward 命令即连接上手机的 12345 端口 nc 127.0.0.1 12345 | wireshark -k -S -i -