任何安全工具只有在输出结果时才是有价值的,如果没有通过组织和
易于理解的方式来表达,复杂的测试和算法几乎没有意义。Nmap提供了一些
方式供用户和其它软件使用,实际上,没有一种方式可以使所有人满意。
因此Nmap提供了一些格式,包含了方便直接查看的交互方式和方便软件处理
的XML格式。
除了提供输出格式外,Nmap还提供了选项来控制输出的细节以及调试
信息。输出内容可发送给标准输出或命名文件,可以追加或覆盖。输出文件还可
被用于继续中断的扫描。
Nmap提供5种不同的输出格式。默认的方式是interactive output
,
发送给标准输出(stdout)。normal output
方式类似于
interactive
,但显示较少的运行时间信息
和告警信息,这是由于这些信息是在扫描完全结束后用于分析,而不是交互式的。
XML输出是最重要的输出类型,可被转换成HTML,对于程序处理非常方便,
如用于Nmap图形用户接口或导入数据库。
另两种输出类型比较简单,grepable
output
格式,在一行中包含目标主机最多的信息;sCRiPt KiDDi3 0utPUt
格式,用于考虑自己的用户 |<-r4d。
交互式输出是默认方式,没有相应的命令行选项,其它四种格式选项
使用相同的语法,采用一个参数,即存放结果的文件名。多种格式可同时
使用,但一种格式只能使用一次。例如,在标准输出用于查看的同时,可将结
果保存到XML文件用于程序分析,这时可以使用选项-oX myscan.xml -oN myscan.nmap
。
为便于描述的简化,本章使用类似于myscan.xml
的简单文件名,
建议采用更具有描述性的文件名。文件名的选择与个人喜好有关,建议增加
扫描日期以及一到两个单词来描述,并放置于一个目录中。
在将结果输出到文件的同时,Nmap仍将结果发送给标准输出。例如,
命令nmap -oX myscan.xml target将
输出XML至myscan.xml
,并在stdout
上打印相同的交互式结果,而此时-oX
选项没有采用。可以
使用连字符作为选项来改变,这使得Nmap禁止交互式输出,而是将结果打印到
所指定的标准输出流中。因此,命令nmap -oX - target只
输出XML至标准输出stdout。严重错误仍然是输出到标准错误流stderr中。
与其它Nmap参数不同,日志文件选项的空格(如-oX
)和
文件名或连字符是必需的。如果省略了标记,例如-oG-
或
-oXscan.xml
,Nmap的向后兼容特点将建立
标准格式的输出文件,相应的文件名为G-
和
Xscan.xml
。
Nmap还提供了控制扫描细节以及输出文件的添加或覆盖的选项,这些选项
如下所述。
Nmap输出格式
-
-oN
(标准输出) 要求将标准输出
直接写入指定
的文件。如上所述,这个格式与交互式输出
略有不同。
-
-oX
(XML输出) 要求XML输出
直接写入指定
的文件。Nmap包含了一个文档类型定义(DTD),使XML解析器有效地
进行XML输出。这主要是为了程序应用,同时也可以协助人工解释
Nmap的XML输出。DTD定义了合法的格式元素,列举可使用的属性和
值。最新的版本可在 http://www.insecure.org/nmap/data/nmap.dtd获取。
XML提供了可供软件解析的稳定格式输出,主要的计算机
语言都提供了免费的XML解析器,如C/C++,Perl,Python和Java。
针对这些语言有一些捆绑代码用于处理Nmap的输出和特定的执行程序。
例如perl CPAN中的
和。
对几乎所有与Nmap有接口的主要应用来说,XML是首选的格式。
XML输出引用了一个XSL样式表,用于格式化输出结果,类似于
HTML。最方便的方法是将XML输出加载到一个Web浏览器,如Firefox
或IE。由于nmap.xsl
文件的绝对
路径,因此通常只能在运行了Nmap的机器上工作(或类似配置的机器)。
类似于任何支持Web机器的HTML文件,--stylesheet
选项可用于建立可移植的XML文件。
-
-oS
(ScRipT KIdd|3 oUTpuT) 脚本小子输出类似于交互工具输出,这是一个事后处理,适合于 'l33t HaXXorZ,
由于原来全都是大写的Nmap输出。这个选项和脚本小子开了玩笑,看上去似乎是为了
“帮助他们”。
-
-oG
(Grep输出) 这种方式最后介绍,因为不建议使用。XML输格式很强大,便于有经验
的用户使用。XML是一种标准,由许多解析器构成,而Grep输届更简化。XML
是可扩展的,以支持新发布的Nmap特点。使用Grep输出的目的是忽略这些
特点,因为没有足够的空间。
然面,Grep输出仍然很常使用。它是一种简单格式,每行一个主机,可以
通过UNIX工具(如grep、awk、cut、sed、diff)和Perl方便地查找和分解。常可
用于在命令行上进行一次性测式。查找ssh端口打开或运行Sloaris的主机,只需
要一个简单的grep主机说明,使用通道并通过awk或cut命令打印所需的域。
Grep输出可以包含注释(每行由#号开始)。每行由6个标记的域组成,由制表符及
冒号分隔。这些域有主机
,端口
,
协议
,忽略状态
,
操作系统
,序列号
,
IPID
和状态
。
这些域中最重要的是Ports
,它提供
了所关注的端口的细节,端口项由逗号分隔。每个端口项代表一个所关注的端口,
每个子域由/分隔。这些子域有:端口号
,
状态
,协议
,
拥有者
,服务
,
SunRPCinfo
和版本信息
。
对于XML输出,本手册无法列举所有的格式,有关Nmap Grep输出的更详细信息可
查阅。
-
-oA
(输出至所有格式)
为使用方便,利用-oAbasename
选项
可将扫描结果以标准格式、XML格式和Grep格式一次性输出。分别存放在
basename
.nmap,basename
.xml和
basename
.gnmap文件中。也可以在文件名前
指定目录名,如在UNIX中,使用~/nmaplogs/foocorp/
,
在Window中,使用c:\hacking\sco
on Windows。
细节和调试选项
-
-v
(提高输出信息的详细度)
通过提高详细度,Nmap可以输出扫描过程的更多信息。
输出发现的打开端口,若Nmap认为扫描需要更多时间会显示估计
的结束时间。这个选项使用两次,会提供更详细的信息。这个选
项使用两次以上不起作用。
大部分的变化仅影响交互式输出,也有一些影响标准和脚本
小子输出。其它输出类型由机器处理,此时Nmap默认提供详细的信
息,不需要人工干预。然而,其它模式也会有一些变化,省略一些
细节可以减小输出大小。例如,Grep输出中的注释行提供所有扫描
端口列表,但由于这些信息过长,因此只能在细节模式中输出。
-
-d [level]
(提高或设置调试级别)
当详细模式也不能为用户提供足够的数据时,使用调试可以得到更
多的信息。使用细节选项(-v
)时,可启用命令行参数
(-d
),多次使用可提高调试级别。也可在-d
后面使用参数设置调试级别。例如,-d9
设定级别9。这是
最高的级别,将会产生上千行的输出,除非只对很少的端口和目标进行简单扫描。
如果Nmap因为Bug而挂起或者对Namp的工作及原理有疑问,调试输出
非常有效。主要是开发人员用这个选项,调试行不具备自我解释的特点。
例如,Timeoutvals: srtt: -1
rttvar: -1 to: 1000000 delta 14987 ==> srtt: 14987
rttvar: 14987 to: 100000
。如果对某行输出不明白,
可以忽略、查看源代码或向开发列表(nmap-dev)求助。有些输出行会有自
我解释的特点,但随着调试级别的升高,会越来越含糊。
-
--packet-trace
(跟踪发送和接收的报文)
要求Nmap打印发送和接收的每个报文的摘要,通常用于
调试,有助于新用户更好地理解Nmap的真正工作。为避免输出过
多的行,可以限制扫描的端口数,如-p20-30
。
如果只需进行版本检测,使用--version-trace
。
-
--iflist
(列举接口和路由)
输出Nmap检测到的接口列表和系统路由,用于调试路由
问题或设备描述失误(如Nmap把PPP连接当作以太网对待)。
其它输出选项
-
--append-output
(在输出文件中添加)
当使用文件作为输出格式,如-oX
或-oN
,
默认该文件被覆盖。如果希望文件保留现有内容,将结果添加在现
有文件后面,使用--append-output
选项。所有指
定的输出文件都被添加。但对于XML(-oX
)扫描输出
文件无效,无法正常解析,需要手工修改。
-
--resume
(继续中断的扫描)
一些扩展的Nmap运行需要很长的时间 -- 以天计算,这类扫描
往往不会结束。可以进行一些限制,禁止Nmap在工作时间运行,导致
网络中断、运行Nmap的主机计划或非计划地重启、或者Nmap自己中断。
运行Nmap的管理员可以因其它原因取消运行,按下ctrl-C
即可。从头开始启动扫描可能令人不快,幸运的是,如果标准扫描
(-oN
)或Grep扫描(-oG
)日志
被保留,用户可以要求Nmap恢复终止的扫描,只需要简单地使用选项
--resume
并说明标准/Grep扫描输出文件,不允许
使用其它参数,Nmap会解析输出文件并使用原来的格式输出。使用方式
如nmap --resume logfilename
。
Nmap将把新地结果添加到文件中,这种方式不支持XML输出格式,原因是
将两次运行结果合并至一个XML文件比较困难。
-
--stylesheet
(设置XSL样式表,转换XML输出)
Nmap提从了XSL样式表nmap.xsl
,用于查看
或转换XML输出至HTML。XML输出包含了一个xml-stylesheet
,
直接指向nmap.xml
文件,
该文件由Nmap安装(或位于Windows当前工作目录)。在Web浏览器
中打开Nmap的XML输出时,将会在文件系统中寻找nmap.xsl
文件,
并使用它输出结果。如果希望使用不同的样式表,将它作为
--stylesheet
的参数,必段指明完整的路
径或URL,常见的调用方式是--stylesheet http://www.insecure.org/nmap/data/nmap.xsl
。
这告诉浏览器从Insecire.Org中加载最新的样式表。这使得
没安装Nmap(和nmap.xsl
)
的机器中可以方便地查看结果。因此,URL更方便使用,本地文件系统
的nmap.xsl用于默认方式。
-
--no_stylesheet
(忽略XML声明的XSL样式表)
使用该选项禁止Nmap的XML输出关联任何XSL样式表。
xml-stylesheet
指示被忽略。