You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

Rooted Android设备Termux环境IP转发持久化与ARP欺骗流量拦截问题

在Root的Android Termux环境下实现ARP欺骗与流量转发

一、ARP欺骗可行性

在已Root的Android设备Termux环境下,完全可以通过ARP欺骗实现流量拦截。只要设备获取了Root权限,且成功安装Scapy及依赖组件,就能运行你提供的Linux桌面端同款Scapy脚本(需确保网络接口参数适配Android设备,比如用ip link查看实际接口名,通常是wlan0)。

二、IP转发设置持久化方法

1. 修改系统sysctl配置文件

Android的sysctl配置通常位于/system/etc/sysctl.conf,需Root权限编辑:

  • 先挂载/system分区为可写:
    sudo mount -o rw,remount /system
    
  • 编辑配置文件:
    sudo nano /system/etc/sysctl.conf
    
  • 添加或修改一行:
    net.ipv4.ip_forward=1
    
  • 恢复/system分区为只读:
    sudo mount -o ro,remount /system
    
    重启设备后,IP转发会自动保持开启状态。

2. Termux开机自启脚本

利用Termux的开机自启功能,每次开机自动执行IP转发命令:

  • 安装termux-boot工具(若未安装):
    pkg install termux-boot
    
  • 创建自启脚本:
    nano $HOME/.termux/boot/ip_forward.sh
    
  • 写入脚本内容:
    #!/data/data/com.termux/files/usr/bin/bash
    sudo sysctl net.ipv4.ip_forward=1
    
  • 给脚本添加执行权限:
    chmod +x $HOME/.termux/boot/ip_forward.sh
    
  • 开启系统设置中Termux的自启权限,确保开机后脚本能自动运行。

3. Magisk模块实现(适用于Magisk Root设备)

若你的设备通过Magisk获取Root,可创建简单模块实现开机自动开启IP转发:

  • 新建模块目录结构:
    ip-forward-module/
    ├── META-INF/
    │   └── com/
    │       └── google/
    │           └── android/
    │               ├── update-binary
    │               └── updater-script
    └── service.sh
    
  • service.sh中写入:
    sysctl -w net.ipv4.ip_forward=1
    
  • 将整个目录打包为ZIP文件,通过Magisk Manager刷入该模块,重启后IP转发会自动生效。

三、Scapy+Python实现流量转发方案

若不想依赖系统IP转发功能,可直接用Scapy编写Python脚本手动处理数据包转发:

from scapy.all import *
import threading

# 配置参数,根据实际环境修改
TARGET_IP = "192.168.1.100"
TARGET_MAC = "aa:bb:cc:dd:ee:ff"
GATEWAY_IP = "192.168.1.1"
GATEWAY_MAC = "ff:ee:dd:cc:bb:aa"
INTERFACE = "wlan0"  # 用`ip link`查看Termux中的实际网络接口

def forward_to_gateway(packet):
    # 转发目标设备的数据包到网关
    if IP in packet and packet[IP].dst != GATEWAY_IP and packet[Ether].src != get_if_hwaddr(INTERFACE):
        forward_pkt = Ether(src=get_if_hwaddr(INTERFACE), dst=GATEWAY_MAC) / packet[IP]
        sendp(forward_pkt, iface=INTERFACE, verbose=0)

def forward_to_target(packet):
    # 转发网关的数据包到目标设备
    if IP in packet and packet[IP].dst == TARGET_IP and packet[Ether].src != get_if_hwaddr(INTERFACE):
        forward_pkt = Ether(src=get_if_hwaddr(INTERFACE), dst=TARGET_MAC) / packet[IP]
        sendp(forward_pkt, iface=INTERFACE, verbose=0)

# 启动两个监听线程分别处理双向转发
threading.Thread(target=sniff, kwargs={"iface": INTERFACE, "prn": forward_to_gateway, "store": 0}).start()
threading.Thread(target=sniff, kwargs={"iface": INTERFACE, "prn": forward_to_target, "store": 0}).start()
  • 运行要求:需Root权限,在Termux中执行sudo python3 forward_script.py;确保已安装Scapy:pkg install scapy python3

内容的提问来源于stack exchange,提问作者Kthun

火山引擎 最新活动