我正在尝试创建一个应用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,权限被拒绝
如果您查看错误,则将看到消息权限被拒绝。您的android应用未在根级别执行。您需要root级特权才能运行该命令。
您应该执行以下操作:
Process su = Runtime.getRuntime().exec("su");
DataOutputStream outputStream = new DataOutputStream(su.getOutputStream());
使用DataOutputStream
对象将nmap
命令写出外壳,然后使用InputStream
读取响应
您可以找到执行此操作的代码here