如何在 Linux 上像 nmap 一样从扫描中获取设备名称

Mar*_*arc 8 networking linux arp nmap

我知道我可以在 Linux 上使用 NMAP 或 arp-scan 之类的工具来识别本地网络上所有设备的 IP 和 MAC 地址。我也知道 arp-scan 会进行 MAC 地址查找以获取设备制造商。但是这些命令(或任何其他命令)上是否有任何选项集可以告诉我设备在给定 IP 上的实际设备名称?例如,如果“Joe's iPad”在 192.168.1.113 上,我需要一个命令来获取该名称。

voi*_*ces 7

地图

一些主机可以简单地配置为共享该信息。它应该像这样工作:

user@host:~$ nmap 192.168.1.113

Starting Nmap 7.00 ( https://nmap.org ) at 2015-12-11 08:45 AWST
Nmap scan report for Joes iPad (192.168.1.113)
Host is up (0.0038s latency).

Not shown: 999 closed ports
PORT      STATE SERVICE
62078/tcp open  iphone-sync

Nmap done: 1 IP address (1 host up) scanned in 41.88 seconds
Run Code Online (Sandbox Code Playgroud)

您可以使用以下选项强制 Nmap 尝试对所有目标进行反向 DNS 解析:

-R (DNS resolution for all targets).

    Tells Nmap to always do reverse DNS resolution on the target
    IP addresses. Normally reverse DNS is only performed against
    responsive (online) hosts.
Run Code Online (Sandbox Code Playgroud)

这在某些情况下可能会有所帮助。输出看起来或多或少相同:

user@host:~$ nmap -R 192.168.1.113

Starting Nmap 7.00 ( https://nmap.org ) at 2015-12-11 08:46 AWST
Nmap scan report for joes-ipad.local (192.168.1.113)
Host is up (0.0047s latency).
rDNS record for 192.168.1.113: joes-ipad.local
Not shown: 999 closed ports
PORT      STATE SERVICE
62078/tcp open  iphone-sync

Nmap done: 1 IP address (1 host up) scanned in 42.61 seconds
Run Code Online (Sandbox Code Playgroud)

无论哪种方式; 您始终可以通过外部工具解析输出,例如grep. 如果您一次扫描多个地址,甚至整个网络范围,这将特别有用:

user@host:~$ nmap 192.168.1.0/24 | grep '(192.168.1.113)'

Nmap scan report for Joes iPad (192.168.1.113)
All 1000 scanned ports on Joes iPad (192.168.1.113) are closed
Run Code Online (Sandbox Code Playgroud)
user@host:~$ nmap -R 192.168.1.0/24 | grep '(192.168.1.113)' 

Nmap scan report for Joes iPad (192.168.1.113)
All 1000 scanned ports on Joes iPad (192.168.1.133) are closed
Run Code Online (Sandbox Code Playgroud)

网络工具

(可能)实际上想要做的是:
*输出会因操作系统和软件版本而异。

user@gnu:~$ arp 192.168.1.113

Address                  HWtype  HWaddress           Flags Mask            Iface
Joes iPad                ether   a1:b2:c3:d4:e5:f6   C                     wlan0
Run Code Online (Sandbox Code Playgroud)
user@bsd:~$ arp 192.168.1.113

Joes iPad  (192.168.1.113)  at  a1:b2:c3:d4:e5:f6  on   en0  ifscope  [ethernet]
Run Code Online (Sandbox Code Playgroud)


Mxx*_*Mxx 0

查看nmblookup和/或smbutil lookup命令。

  • 虽然这实际上可能回答了这个问题,但如果您稍微展开一下并解释如何使用这些命令来解决当前的问题,那就更好了。无论如何,据我所知,这两个工具都依赖于 smb 协议,没有理由假设它们将在 Linux 网络上使用。 (7认同)
  • 为什么?只需添加更多有关这些程序如何工作的信息,并解释它们仅适用于 smb 协议。也许还可以添加一个如何使用它们的示例。 (5认同)