我正在尝试添加一些规则来使用 iptables 过滤进出设备(Xoom WiFi)的网络流量。iptables 命令位于运行 android 3.0.1 的 xoom 设备中的 /system/bin/iptables。我正在使用 adb shell 添加规则。但是我似乎无法通过 android 应用程序做同样的事情。
与苏
( su -c command
)。Xoom 已经扎根。并且 iptables 已被授予超级用户应用程序的 su 权限(最新版本,最新的 su 二进制文件):
iptables
07-18 09:00:32.990: DEBUG/su(17539): 10054 com.iptables 使用 shell /system/bin/sh 执行 0 /system/bin/iptables : sh 07-18 09:00:33.010: WARN/su (17546): 请求被拒绝 (0->0 /system/bin/iptables)
chown
07-18 09:02:21.380: WARN/su(17594): 请求被拒绝 (0->0 /system/bin/chmod)
没有苏
iptables
没有输出。什么都没发生。不添加规则。
chown
没有输出。按预期工作!?!。
我如何运行 iptables 命令:
runCommand(new String[] { "su", "-c", "/system/bin/iptables", "-F" });
runCommand(new String[] { "su", "-c", "/system/bin/iptables", "-A", "OUTPUT", "-d", "184.72.45.145", "-j", "ACCEPT" });
运行命令的方法:
public static String runCommand(String[] ars) {
try {
Process p = Runtime.getRuntime().exec(ars);
BufferedReader bufferedReader = new BufferedReader(
new InputStreamReader(p.getInputStream()));
StringBuffer buffer = new StringBuffer();
String sCurrentLine;
while ((sCurrentLine = bufferedReader.readLine()) != null) {
buffer.append(sCurrentLine);
}
return buffer.toString();
} catch (IOException e) {
e.printStackTrace();
return "ERROR";
}
}
有任何想法吗?我正在撞墙。任何帮助高度赞赏。谢谢!