## 四、 目标说明
除了选项,所有出现在 Nmap 命令行上的都被视为对目标主机的说明。最简单的情况是指定一个 目标 IP 地址或主机名。
有时候您希望扫描整个网络的相邻主机。为此,Nmap 支持 CIDR 风格的地址。您可以附加一个
/numbit 在一个 IP 地址或主机名后面, Nmap 将会扫描所有和该参考 IP 地址具有 numbit 相同 比特的所有 IP 地址或主机。例如,192.168.10.0/24 将会扫描 192.168.10.0 (二进制格式: 11000000 10101000 00001010 00000000)和 192.168.10.255 (二进制格式: 11000000 10101000
00001010 11111111)之间的 256 台主机。 192.168.10.40/24 将会做同样的事情。假设主机 scanme.nmap.org 的 IP 地址是 205.217.153.62, scanme.nmap.org/16 将扫描 205.217.0.0 和 205.217.255.255 之间的 65,536 个 IP 地址。所允许的最小值是/1,这将会扫描半个互联网。 最大值是/32,这将会扫描该主机或 IP 地址,因为所有的比特都固定了。
CIDR 标志位很简洁但有时候不够灵活 例如 您也许想要扫描 192.168.0.0/16 但略过任何以.0 或者.255 结束的 IP 地址,因为它们通常是广播地址。 Nmap 通过八位字节地址范围支持这样的 扫描您可以用逗号分开的数字或范围列表为 IP 地址的每个八位字节指定它的范围。例如, 192.168.0-255.1-254 将略过在该范围内以.0 和.255 结束的地址。 范围不必限于最后的 8 位:0-255.0-255.13.37 将在整个互联网范围内扫描所有以 13.37 结束的地址。这种大范围的扫描 对互联网调查研究也许有用。
IPv6 地址只能用规范的 IPv6 地址或主机名指定。 CIDR 和八位字节范围不支持 IPv6,因为它 们对于 IPv6 几乎没什么用。
Nmap 命令行接受多个主机说明,它们不必是相同类型。命令 `nmap scanme.nmap.org 192.168.0.0/8 10.0.0,1,3-7.0-255` 将和您预期的一样执行。
虽然目标通常在命令行指定,下列选项也可用来控制目标的选择:
`-iL <inputfilename>` (从列表中输入)
从 inputfilename 中读取目标说明。在命令行输入 一堆主机名显得很笨拙,然而经常需 要这样。 例如,您的 DHCP 服务器可能导出 10,000 个当前租约的列表,而您希望对它们 进行 扫描。如果您不是使用未授权的静态 IP 来定位主机,或许您想要扫描所有 IP 地址 只要生成要扫描的主机的列表,用-iL 把文件名作为选项传给 Nmap。列表中的项可以是 Nmap 在 命令行上接受的任何格式(IP 地址,主机名,CIDR,IPv6,或者八位字节范围) 每一项必须以一个或多个空格,制表符或换行符分开。 如果您希望 Nmap 从标准输入而 不是实际文件读取列表, 您可以用一个连字符(-)作为文件名。
`-iR <hostnum>` (随机选择目标)
对于互联网范围内的调查和研究, 您也许想随机地选择目标。 hostnum 选项告诉 Nmap 生成多少个 IP。不合需要的 IP 如特定的私有,组播或者未分配的地址自动 略过。选项 0 意味着永无休止的扫描。记住,一些网管对于未授权的扫描可能会很感冒并加以抱怨。使 用该选项的后果自负! 如果在某个雨天的下午,您觉得实在无聊, 试试这个命令 nmap `-sS -PS80 -iR 0 -p 80` 随机地找一些网站浏览。
`--exclude <host1[,host2][,host3],...>` (排除主机/网络) 如果在您指定的扫描范围有一些主机或网络不是您的目标, 那就用该选项加上以逗号分隔的列表排除它们。该列表用正常的 Nmap 语法, 因此它可以包括主机名,CIDR,八位字节范围等等。 当您希望扫描的网络包含执行关键任务的服务器,已知的对端口扫描反 应强烈的 系统或者被其它人看管的子网时,这也许有用。
`--excludefile <excludefile>` (排除文件中的列表)
这和--exclude 选项的功能一样,只是所排除的目标是用以 换行符,空格,或者制表符 分隔的 excludefile 提供的,而不是在命令行上输入的。