Почему мое Android-приложение не может использовать tcpdump, хотя я изменил разрешение tcpdump на 777? - PullRequest
0 голосов
/ 29 июня 2018

Я изменяю разрешение / system / xbin / tcpdump на 777 и пишу код в моем Android-приложении, как показано ниже.
Но я все еще получаю сообщение об ошибке "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);
}

1 Ответ

0 голосов
/ 29 июня 2018

Android не поддерживает необработанные сокеты, которые включают возможность собирать необработанные кадры с помощью сниффера любым процессом в пространстве пользователя на некорневых устройствах.

Если вы заглянете на основной сайт поддержки для TCPDump на Android , вы обнаружите, что одним из самых первых требований является a rooted Android device.

...