使用tcpdump抓取HTTP包

tcpdump -XvvennSs 0 -i eth0 tcp[20:2]=0x4745 or tcp[20:2]=0x4854

0x4745 为"GET"前两个字母"GE"

0x4854 为"HTTP"前两个字母"HT"

### 通过 ADB 使用 tcpdump 抓取设备日志 为了在 Android 设备上使用 `tcpdump` 抓取网络日志,可以通过以下方法完成配置和操作: #### 1. 安装并推送 tcpdump 到 Android 设备 首先需要下载适合目标架构的预编译版本的 `tcpdump` 文件。可以从官方或其他可信资源获取适用于 ARM 或 x86 架构的二进制文件。 将下载好的 `tcpdump` 推送到 Android 设备上的指定目录,例如 `/data/local/tmp/`: ```bash adb push tcpdump /data/local/tmp/ ``` 随后修改该文件的权限以便能够执行: ```bash adb shell su -c "chmod 755 /data/local/tmp/tcpdump" ``` 此命令赋予了必要的可执行权限[^1]。 #### 2. 启动 tcpdump 进程捕获数据 进入设备 Shell 并运行 `tcpdump` 来开始记录网络活动。下面是一个基本的例子用于监听默认网卡的所有流量并将结果保存至文件中: ```bash adb shell su -c "/data/local/tmp/tcpdump -i any -s 0 -w /sdcard/capture.pcap" ``` 其中参数含义如下: - `-i any`: 表示监控所有的网络接口。 - `-s 0`: 设置最大抓长度为无限制(即完整抓取每一个数据帧的内容),防止截断重要信息。 - `-w /sdcard/capture.pcap`: 将捕获的数据写入到 SD 卡根目录下的 capture.pcap 文件里存储下来供后续分析之用[^1]。 如果只想捕捉特定类型的通信比如 HTTP 请求,则可以根据需求调整过滤器表达式。例如只收集端口为80的服务请求可以这样设置: ```bash adb shell su -c "/data/local/tmp/tcpdump -i wlan0 -A -s 0 'tcp port 80' -w /sdcard/http_traffic.pcap" ``` 这里指定了无线局域网适配器作为输入源,并且仅关注于TCP协议下针对标准Web服务器开放的那个知名端口号所对应的连接尝试情况[^2]。 #### 3. 获取 pcap 文件进行离线解析 当完成了预期时间段内的跟踪之后停止服务进程并通过ADB拉回生成的日志文档到电脑上来做进一步的研究工作: ```bash adb pull /sdcard/capture.pcap . ``` 现在就可以利用Wireshark这样的图形界面应用程序加载刚才导出来的binary dump file来进行深入剖析啦! 另外值得注意的是,在某些情况下可能还需要额外考虑电量消耗方面的影响因素;此时则建议联合运用TcpDump与WireShark共同作用来定位那些即使处于休眠状态也会持续发送不必要的上传指令从而造成电池续航时间缩短的应用程序实例[^3]。 ```python import subprocess def start_tcpdump(): command = ["adb", "shell", "su", "-c", """/data/local/tmp/tcpdump -i any -s 0 -w /sdcard/capture.pcap"""] process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE) output, error = process.communicate() return output.decode(), error.decode() output, error = start_tcpdump() print(f"Output: {output}\nError: {error}") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值