[使用Android应用的Java代码尝试在Android上运行NMAP进程时权限被拒绝

问题描述 投票:1回答:1

我正在尝试创建一个应用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,权限被拒绝

java android-studio cmd processbuilder nmap
1个回答
0
投票

如果您查看错误,则将看到消息权限被拒绝。您的android应用未在根级别执行。您需要root级特权才能运行该命令。

您应该执行以下操作:

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

使用DataOutputStream对象将nmap命令写出外壳,然后使用InputStream读取响应

您可以找到执行此操作的代码here

© www.soinside.com 2019 - 2024. All rights reserved.