在Java中通过调用Runtime这个类可以执行其他的可执行程序,执行后返回一个进程(Process),利用Process这个类我们可以取得程序执行的回显,因此在Java中调用nmap进行主机探测的原理就很清晰了。通过给函数传递nmap所在路径和我们需要执行的命令即可。
具体实现代码:
/**
* 调用nmap进行扫描
* @param nmapDir nmap路径
* @param command 执行命令
*
* @return 执行回显
* */
public String getReturnData(String nmapDir,String command){
Process process = null;
StringBuffer stringBuffer = new StringBuffer();
try {
process = Runtime.getRuntime().exec(nmapDir + " " + command);
System.out.println("请稍等。。。");
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream(),"UTF-8"));
String line = null;
while((line = reader.readLine()) != null){
stringBuffer.append(line + "\n");
}