|
| 1 | +# 使用Waydroid作为抓包测试环境 <!-- omit in toc --> |
| 2 | + |
| 3 | +**本文环境:** |
| 4 | +* 系统:`Arch Linux 6.8.2-zen2-1-zen` |
| 5 | +* Waydroid: |
| 6 | + - `archlinuxcn/waydroid 1.4.2-3` |
| 7 | + - `archlinuxcn/waydroid-image 18.1_20240323-1` |
| 8 | + - `waydroid-script-git r177.1a2d3ad-1` |
| 9 | +* Weston: `extra/weston 13.0.0-2` |
| 10 | +--- |
| 11 | + |
| 12 | +- [配置环境](#配置环境) |
| 13 | +- [启动环境](#启动环境) |
| 14 | +- [配置透明代理](#配置透明代理) |
| 15 | + - [基于Iptable的透明代理](#基于iptable的透明代理) |
| 16 | + - [基于daed的透明代理](#基于daed的透明代理) |
| 17 | + |
| 18 | +### 配置环境 |
| 19 | +- (Xorg环境) 配置Weston |
| 20 | + `~/.config/weston.ini` |
| 21 | + ```ini |
| 22 | + [core] |
| 23 | + idle-time=0 |
| 24 | + |
| 25 | + [shell] |
| 26 | + locking=false |
| 27 | + panel-position=none |
| 28 | + ``` |
| 29 | +- 配置ndk |
| 30 | + [参考链接](https://github.com/casualsnek/waydroid_script?tab=readme-ov-file#install-libndk-arm-translation) |
| 31 | + - Intel CPU |
| 32 | + ```sh |
| 33 | + sudo waydroid-extras install libndk |
| 34 | + ``` |
| 35 | + - AMD CPU |
| 36 | + ```sh |
| 37 | + sudo waydroid-extras install libhoudini |
| 38 | + ``` |
| 39 | +- 配置证书 |
| 40 | + 1. 启动 mitmproxy |
| 41 | + ```sh |
| 42 | + mitmproxy |
| 43 | + ``` |
| 44 | + 2. 下载pem证书 |
| 45 | + ```sh |
| 46 | + curl --proxy localhost:8080 http://mitm.it/cert/pem -o mitmproxy-ca-cert.pem |
| 47 | + ``` |
| 48 | + 3. 安装证书 |
| 49 | + ```sh |
| 50 | + sudo waydroid-extras install mitm -c mitmproxy-ca-cert-android.pem |
| 51 | + ``` |
| 52 | +- 配置网络 |
| 53 | + ```sh |
| 54 | + sudo iptables -t nat -A POSTROUTING -s 192.168.240.0/24 ! -d 192.168.240.0/24 -j MASQUERADE |
| 55 | + sudo iptables -A FORWARD -i waydroid0 -j ACCEPT |
| 56 | + sudo iptables -A FORWARD -o waydroid0 -j ACCEPT |
| 57 | + ``` |
| 58 | + |
| 59 | +### 启动环境 |
| 60 | +- 启动Container |
| 61 | + ```sh |
| 62 | + sudo systemctl start waydroid-container.service |
| 63 | + ``` |
| 64 | +- (Xorg环境) 启动Weston |
| 65 | + ```sh |
| 66 | + weston & |
| 67 | + ``` |
| 68 | +- 启动session |
| 69 | + ```sh |
| 70 | + waydroid session start |
| 71 | + ``` |
| 72 | + > 如果是weston,可能需要 |
| 73 | + > ```sh |
| 74 | + > env WAYLAND_DISPLAY=wayland-1 waydroid session start |
| 75 | + > ``` |
| 76 | + |
| 77 | +### 配置透明代理 |
| 78 | +#### 基于Iptable的透明代理 |
| 79 | +```sh |
| 80 | +sudo iptables -t nat -A PREROUTING -i waydroid0 -p tcp -j REDIRECT --to-ports 8080 |
| 81 | +sudo iptables -t nat -A PREROUTING -i waydroid0 -p udp -j REDIRECT --to-ports 8080 |
| 82 | +``` |
| 83 | +**如果出现,`Extension REDIRECT revision 0 not supported, missing kernel module?` 则需要加载模块 xt_REDIRECT** |
| 84 | + |
| 85 | +然后需要在 mitmweb 的启动参数里加上 `--mode transparent --showhost` |
| 86 | + |
| 87 | +#### 基于daed的透明代理 |
| 88 | +<font color=red>如果你不知道这是什么,那就跳过</font> |
| 89 | + |
| 90 | +<details> |
| 91 | +<summary>注意事项</summary> |
| 92 | +如果你的daed配置了https的探测目标,则本机需要安装mitmproxy的证书,否则daed可能认为这个节点不可用,连接就hand住了 |
| 93 | +</details> |
| 94 | + |
| 95 | +1. mitmproxy 需要以 `-m socks5` 的模式启动 |
| 96 | +2. 添加指向 mitmproxy 的节点 |
| 97 | +3. 添加 mitmproxy 群组 |
| 98 | +4. 将节点加入群组 |
| 99 | +5. 配置路由 |
| 100 | + ``` |
| 101 | + l4proto(tcp) && sip(192.168.240.0/24) -> mitmproxy |
| 102 | + ``` |
| 103 | +6. 配置 waydroid0 网卡为LAN接口 |
| 104 | +7. 重载 |
0 commit comments