Отказано в доступе при попытке запустить процесс NMAP на Android с помощью Java-кода приложения Android - PullRequest
1 голос
/ 08 ноября 2019

Я пытаюсь создать приложение Android для запуска команд Nmap из терминала и показывает результат в приложении

Я пытаюсь запустить эту строку кода:

try {
    Process p = Runtime.getRuntime().exec("nmap  ");           
    BufferedReader inputStream = new BufferedReader(new InputStreamReader(p.getInputStream()));

    String s;
    // reading output stream of the command  
    while ((s = inputStream.readLine()) != null) {
        Log.d("res", s);
    }
 } catch (Exception e) {
       e.printStackTrace();
 }

W / System.err: java.io.IOException: Невозможно запустить программу "nmap": ошибка = 13, разрешение отклонено

1 Ответ

0 голосов
/ 08 ноября 2019

Если вы посмотрите на ошибку, то увидите сообщение Отказано в разрешении . Ваше приложение для Android не выполняется на корневом уровне. Вам нужна привилегия корневого уровня для запуска этой команды.

Вы должны сделать что-то вроде:

Process su = Runtime.getRuntime().exec("su");
DataOutputStream outputStream = new DataOutputStream(su.getOutputStream());  

С помощью объекта DataOutputStream написать команду nmap из оболочки и затем прочитать ответ, используя InputStream

Вы можете найти код для этого здесь

...