如何发出nmap命令显示我所连接的局域网中所有活动计算机的IP地址和对应的主机名?
(如果可以用其他方式/工具完成,那么欢迎您回答。 )

#1 楼

低于5.30BETA1的nmap版本:

nmap -sP 192.168.1.*


nmap -sn 192.168.1.*


这为我提供了主机名使用IP地址,并且仅ping主机以发现它们。仅当以root身份运行时,它才会为您提供主机名。

编辑:从Nmap 5.30BETA1开始[2010-03-29] -sP已被替换为-sn,作为执行ping扫描的首选方法,就像跳过注释一样,跳过端口扫描时:


以前,建议使用-PN和-sP选项。这为禁用扫描阶段的某些选项建立了更规则的语法:


-n没有反向DNS
-Pn没有主机发现
-sn没有端口扫描



评论


请注意,+ 1只会返回对ICMP做出响应的计算机。任何专门阻止ICMP的计算机都不会显示

–马特·西蒙斯(Matt Simmons)
2010-6-22在20:59

@MattSimmons如果nmap作为root运行,并且IP来自本地网络(服务器是子网的成员),则发送ARP请求。因此它将检测到任何运行中的计算机,因为没有人真正阻止ARP数据包。哦,对于新的nmap版本,它是-sn(尽管-sP也可以工作)。

–休伯特·卡里奥(Hubert Kario)
2012年5月19日在22:24



我没有通过此命令获得任何主机名。有什么建议吗?

–daviesgeek
2012年8月15日下午5:53

@daviesgeek尝试以root身份运行吗?

–Cheesebaron
2012年8月15日在7:38

@Cheesebaron啊。而已。我建议添加它,因为没有它,它将不显示主机名。

–daviesgeek
2012年8月15日在17:19

#2 楼

nmap -sP 192.168.1.0/24


请注意,名称解析仅与反向DNS填充一样好。另请注意,这不会使您的系统无法通过ping进行防火墙(实际上,每个Windows工作站都是默认设置)。

如果您位于系统本地(即,在同一子网上),则可以做类似

for i in `seq 1 254` ; do arping -c 1 192.168.1.$i | grep reply ; done


...的事情,但是有时当我将循环包装起来时,奇怪的事情发生在我身上。另外,您还必须自己进行查找,例如

dig +short -x $IP


评论


arp解决方案速度较慢但可以正常运行,nmap解决方案无法在线找到所有ip

–elbarna
16-10-28在2:38

#3 楼

您可以扫描整个子网,也可以使用通配符。

nmap 192.168.8.*




nmap 192.168.8.1/24


#4 楼

NMAP将返回相关IP地址的“反向查找”,它无法返回正向查找地址。或在Web服务器进行基于名称的虚拟主机的情况下解决。 Nmap不是用于此的工具。

评论


那我应该使用哪种工具?

–şaloma
2010年6月22日在20:41

我什么都不知道。

– sysadmin1138♦
10年6月22日在20:45

#5 楼

nmap -sP 192.168.0.0/24将输出如下内容:

> nmap -sP 192.168.0.0/24

Starting Nmap 4.00 ( http://www.insecure.org/nmap/ ) at 2010-06-22 22:27 CEST
Host 192.168.0.0 appears to be up.
Host 192.168.0.1 appears to be up.
Host abcd.domain.tld (192.168.0.2) appears to be up.
Host def.domain.tld (192.168.0.3) appears to be up.
Host fdsf.domain.tld (192.168.0.4) appears to be up.
Host reht.domain.tld (192.168.0.5) appears to be up.
Host vcxbfd.domain.tld (192.168.0.6) appears to be up.
Host ezqs.domain.tld (192.168.0.7) appears to be up.
Host 192.168.0.8 appears to be up.
Host ilolio.domain.tld (192.168.0.9) appears to be up.
Host ipbd.domain.tld (192.168.0.10) appears to be up.
Host cdekf.domain.tld (192.168.0.11) appears to be up.
Host 192.168.0.12 appears to be up.
Host 192.168.0.13 appears to be up.
Host 192.168.0.14 appears to be up.
Host 192.168.0.15 appears to be up.
Host ainv.domain.tld (192.168.0.16) appears to be up.
Host 192.168.0.17 appears to be up.
Host 192.168.0.18 appears to be up.
Host wzdkz.domain.tld (192.168.0.19) appears to be up.
[…]
Nmap finished: 256 IP addresses (256 hosts up) scanned in 7.491 seconds


评论


我如何学习机器名称?我得到的主机名如下:dhcp-186-241.abc.dk dhcp-186-250.abc.dk ....例如,当我在ubuntu终端上发布主机名时,我得到:infestor-pc但nmap将我的主机名显示为dhcp-186-250.abc.dk。有没有办法查看“友好的”主机名?

–şaloma
2010-6-22在20:37



没有唯一的方法是将计算机名称注册到DNS中

–半径
10年6月22日在21:02

#6 楼

您可以使用以下命令:

nmap -v -A $IP


#7 楼

ping Local Net中所有Ips的最佳和最快方法是禁用DNS反向分辨率

使用:NMAP -sn 192.168.1.1-255

这将扫描IP范围192.168.1.1-192.168中的所有255个主机.1.255

如果您想要一个易于解析的文件

使用:NMAP -sn -oG Name.txt 192.168.1.1-255

#8 楼


如果可以用其他方法或工具完成此操作,肯定欢迎您回答。


您可以简单地使用arp命令,例如:

$ arp -a


#9 楼

由于没有给定LAN的IP,我们可以假定它是192.168,但这并非总是如此,所以第一件事就是发现我们的IP地址和子网掩码。

为此使用ifconfig和使用regexp清理结果

现在假设您的IP为192.168.0.100且掩码为255.255.255.0,那么您可以像这样扫描1-254

nmap -sn 192.168.0.1-254 
or 
nmap -sn 192.168.0.0/24


还要查看主机名和MAC地址,然后以root用户身份运行,否则所有扫描将以非特权用户身份运行,并且所有扫描都必须进行TCP Connect(完整的三向握手)才能获得某些内容。作为root用户,您可以运行Syn,而不必完成三向握手。

这基本上是您需要回答问题并获得所需功能的条件。有很多参数,但是每个参数都有特殊用途。

----编辑您可以使用服务发现扫描,因为它将执行多个脚本(其中一个是nbstat.nse)并返回主机名。不要期望获得您扫描的所有计算机的主机名。

nmap -sV target


,也可以只运行特定的nbstat.nse脚本并省时省力。

nmap -sU -p137 --script nbstat.nse target


nbstat.nse使用UDP端口137。在某些情况下,您也可以使用snmp-interfaces脚本从SNMP获取主机名,但这需要UDP端口161打开。

nmap -sU -p161 --script snmp-interfaces.nse target


#10 楼

我认为您应该运行以下命令:

sudo nmap -sU --script nbstat.nse -p137 10.10.10.*


评论


这不会在现有答案上添加任何内容,而且只会找到启用了共享的Windows主机。当然比OP想要的更具体。

–斯科特包
2012-10-24 14:40

在禁用网络共享的情况下仍可以使用。仅要求启用网络发现,这是专用网络的默认设置。

–约翰·荷马
2014-09-10 13:55

#11 楼

尝试以下操作:
示例IP范围:10.1.0.0-10.1.255.255

nmap -sV -T4 -O 10.1.*.*