Featured image of post 在 Ubuntu 中使用 graftcp 抓取程序网络请求

在 Ubuntu 中使用 graftcp 抓取程序网络请求

介绍如何使用 graftcp 在 ubuntu 中抓取任意程序的 https 网络请求

在开发中有时需要抓取指定程序的网络请求,以便进行分析处理。graftcp 是一个可以辅助抓取网络流量的开源程序,和 ProxyChains 一样,不需要对目标程序进行修改,就可以把任何指定程序(应用程序、脚本、shell 等)的 TCP 连接重定向到 SOCKS5 或 HTTP 代理。

本机安装抓包程序

安装配置 reqable

reqable 是一个跨平台的抓包工具,简单抓包直接使用免费版就可以,当然你也可以使用 charles。

直接官网下载安装最新版,安装后选择菜单证书->安装根证书到本机,完成系统证书安装,并下载根证书reqable-ca.crt,用于后面把证书安装到开发机 ubuntu 中。

开发机 ubuntu 安装配置

安装 graftcp

访问 graftcp release 下载最新版安装,或执行命令:

wget https://github.com/hmgle/graftcp/releases/download/v0.4.0/graftcp_0.4.0-1_amd64.deb
dpkg -i graftcp_0.4.0-1_amd64.deb

安装 reqable 证书

  1. /usr/share/ca-certificates 创建目录 reqable,并把前面下载的reqable-ca.crt 证书放入其中
mkdir /usr/share/ca-certificates/reqable
  1. 修改 /etc/ca-certificates.conf 文件,在末尾追加一行reqable/reqable-ca.crt,并刷新系统证书
echo 'reqable/reqable-ca.crt' >> /etc/ca-certificates.conf
update-ca-certificates

抓包流程

本机启动 reqable 抓包

这时 reqable 会监听 http://192.168.x.x:9000 的代理地址。

ubuntu 运行 graftcp

在 ubuntu 中执行命令:

mgraftcp --enable-debug-log --select_proxy_mode=only_http_proxy --http_proxy=192.168.x.x:9000 [指定程序路径] [程序参数]

这样目标程序的所有网络请求就会路由到 reqable 中,reqable 界面也能看到所有的 http 网络请求了。

程序抓包替换脚本

先备份原程序,再使用下面的脚本直接替换原程序,这样第三方调用程序都会被抓包。

#!/bin/bash

mgraftcp --enable-debug-log --select_proxy_mode=only_http_proxy --http_proxy=192.168.x.x:9000 [指向原程序路径] "$@"
Built with Hugo
主题 StackJimmy 设计