使用nmap检测特定IP地址的操作系统

时间:2015-04-27 17:53:16

标签: nmap

我试图使用nmap确定特定IP地址的操作系统。到目前为止,这是我的代码: import java.io. *; 公共类NmapFlags {   public static void main(String [] args)throws Exception {     尝试{       String [] cmdarray = {" nmap"," -O"," 66.110.59.130" }; //       //示例尝试查找此IP地址的操作系统或设备detials //       Process process = Runtime.getRuntime()。exec(cmdarray);       BufferedReader r = new BufferedReader(new InputStreamReader(           process.getInputStream()));       字符串s;       while((s = r.readLine())!= null){         的System.out.println(一个或多个);       }       r.close();     } catch(IOException e){       e.printStackTrace();     }   } } 运行此代码输出后我得到的是: 66.110.59.130上的所有1000个扫描端口都已过滤 66.110.59.130上的所有1000个扫描端口都已过滤 太多指纹与此主机匹配,以提供特定的操作系统详细信息 太多指纹与此主机匹配,以提供特定的操作系统详细信息 执行OS检测。请在http://nmap.org/submit/上报告任何不正确的结果。 执行OS检测。请在http://nmap.org/submit/上报告任何不正确的结果。 完成Nmap:在246.06秒内扫描1个IP地址(1个主机) Nmap完成:1个IP地址(1个主机)在246.06秒内扫描** 我可以使用任何其他nmap标志来检测设备类型吗?我试过 - 一个选项。我需要在跟踪路径的每一跳找到设备详细信息。

1 个答案:

答案 0 :(得分:2)

这确实是一个超级用户问题。

Nmap执行活动指纹识别以预测远程操作系统是什么。这些探测非常具有侵入性,我建议您了解更多信息(http://nmap.org/book/osdetect-fingerprint-format.html)。

“太多指纹与此主机匹配以提供特定的操作系统详细信息”意味着探测器是矛盾的或过宽的。 例如,在NAT场景中,某些端口扫描会返回路由器信息(例如Cisco iOS),其他一些探测器会返回真正的主机规范(例如Windows)。

理解网络结构的一个好方法是遗憾的是你的人工解释,所以这对于脚本来说会很复杂。 IP ID序列,指纹分析和服务检测(-sV)可以提供帮助:

如参见。如果3389已打开,则运行的操作系统是Windows。

如参见。如果IP ID序列不同,则目标可能是多个(负载平衡)。

如参见。您对指纹的分析会比小睡猜测更准确。

如果不清楚,请告诉我。