为什么我的 Android APP 把 tcpdump 权限改成 777 还是不能使用 tcpdump?
Why can't my Android APP use tcpdump eventhough I change the permission of tcpdump to 777?
我把/system/xbin/tcpdump的权限改成777,然后在我的AndroidAPP里写代码如下。
但我仍然收到错误消息 "stderr=tcpdump: any:
您无权在该设备上捕获”和 "stderr=(socket: Operation not permitted)"
。
有人知道这里有什么问题吗?
谢谢
流程流程
String[] cmd = {"/system/xbin/tcpdump", "-i any", "-w /sdcard/tcpdump.pkt"};
TextUtils.join(" ", cmd);
process = Runtime.getRuntime().exec(cmd);
BufferedReader errorReader = new BufferedReader(new InputStreamReader(process.getErrorStream()));
String line;
while ((line = errorReader.readLine()) != null) {
Log.d(TAG, "stderr="+line);
}
Android 不支持原始套接字,其中包括使用嗅探器收集原始帧的能力,任何用户 space 进程在非根设备上。
如果您查看 main support site for TCPDump on Android,您会发现第一个要求是 a rooted Android device.
我把/system/xbin/tcpdump的权限改成777,然后在我的AndroidAPP里写代码如下。
但我仍然收到错误消息 "stderr=tcpdump: any:
您无权在该设备上捕获”和 "stderr=(socket: Operation not permitted)"
。
有人知道这里有什么问题吗? 谢谢
流程流程
String[] cmd = {"/system/xbin/tcpdump", "-i any", "-w /sdcard/tcpdump.pkt"};
TextUtils.join(" ", cmd);
process = Runtime.getRuntime().exec(cmd);
BufferedReader errorReader = new BufferedReader(new InputStreamReader(process.getErrorStream()));
String line;
while ((line = errorReader.readLine()) != null) {
Log.d(TAG, "stderr="+line);
}
Android 不支持原始套接字,其中包括使用嗅探器收集原始帧的能力,任何用户 space 进程在非根设备上。
如果您查看 main support site for TCPDump on Android,您会发现第一个要求是 a rooted Android device.