列出本地网络(LAN)中的所有MAC地址及其关联的IP地址

如何列出连接到本地网络(LAN)的计算机的所有MAC地址及其关联的IP地址 ?

您可以使用Nmap实用程序。 Nmap是一个免费的网络扫描实用程序。

试试吧:

 sudo nmap -sn 192.168.1.0/24 

请替换您的网络标识符和子网掩码。

如何查找网络ID和子网掩码

使用命令ip a

 bash~$ ip a 1: lo:  mtu 65536 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: wlan0:  mtu 1500 qdisc mq state UP qlen 1000 link/ether c4:85:08:94:ee:9a brd ff:ff:ff:ff:ff:ff inet 192.168.3.66/24 brd 192.168.3.255 scope global wlan0 inet6 fe80::c685:8ff:fe94:ee9a/64 scope link valid_lft forever preferred_lft forever 

在第2点,我有wlan0设备。 它说inet 192.168.3.66/24 brd 192.168.3.255 scope global wlan0 ,IP地址: 192.168.3.66 ,子网掩码: 24 。 网络ID为192.168.3.0 ,只需将最后一个数字替换为0。

或者正如man nmap所说:

 sudo nmap -sn 192.168.1.0/24 

以下是手册页nmap(1)中的一个小引用:

 -sn (No port scan) 

此选项告诉Nmap在主机发现后不要进行端口扫描,只打印出响应扫描的可用主机。 这通常称为“ping扫描”,但您也可以请求运行traceroute和NSE主机脚本。

默认情况下,这比列表扫描更具侵入性,并且通常可用于相同目的。 它允许对目标网络进行轻微侦察,而不会引起太多关注。

知道有多少主机对攻击者来说比列表扫描每个IP地址和主机名提供的列表更有价值。

系统管理员经常发现此选项也很有价值。 它可以轻松用于计算网络上的可用计算机或监视服务器可用性。 这通常称为ping扫描,并且比ping广播地址更可靠,因为许多主机不回复广播查询。

使用-sn完成的默认主机发现包括ICMP回送请求,TCP SYN到端口443,TCP ACK到端口80以及默认情况下的ICMP时间戳请求。

当由非特权用户执行时,仅将SYN数据包(使用connect调用)发送到目标上的端口80和443。

当特权用户尝试扫描本地以太网网络上的目标时,除非指定了--send-ip ,否则将使用ARP请求。 -sn选项可以与任何发现探测器类型( -P*选项,不包括-Pn )组合使用,以获得更大的灵活性。

如果使用任何探测类型和端口号选项,则会覆盖默认探测。 如果在运行Nmap的源主机与目标网络之间存在严格的防火墙,则建议使用这些高级技术。 否则,当防火墙丢弃探测器或其响应时,可能会错过主机。

在以前的Nmap版本中, -sn被称为-sP

arp慢慢返回一个活动MAC地址和IP列表或它们的主机名(如果有的话)。 如果您希望它更快,您可以使用arp -n ,它应该跳过DNS查找。 如果你需要将它解析为arp -an将跳过固定宽度列。

 $ arp Address HWtype HWaddress Flags Mask Iface 10.10.0.11 ether 00:04:ff:ff:ff:d0 C eth0 10.10.0.16 ether 00:04:ff:ff:ff:a6 C eth0 raspbmc.local ether 00:1f:ff:ff:ff:9c C eth0 10.10.0.19 ether 00:04:ff:ff:ff:c9 C eth0 10.10.0.12 ether bc:f5:ff:ff:ff:93 C eth0 10.10.0.17 ether 00:04:ff:ff:ff:57 C eth0 10.10.0.1 ether 20:4e:ff:ff:ff:30 C eth0 HPF2257E.local ether a0:b3:ff:ff:ff:7e C eth0 10.10.0.15 ether 00:04:ff:ff:ff:b9 C eth0 tim ether 00:22:ff:ff:ff:af C eth0 10.10.0.13 ether 60:be:ff:ff:ff:e0 C eth0 

否则,您的路由器应该能够让您了解有源设备(大多数情况下)。


编辑 Per davidcl的评论,这个答案并不像我最初希望的那样完美。

arp依赖于之前的某种联系工作。 但是在我看来,现代设备在广播级别都非常健谈(你应该真正看到wireshark – 这是一种教育),如果没有至少回复广播,网络上的设备就不太可能存在。 (为了确保您可以先使用10.10.0.255 ping网络上的所有设备,然后您可能会获得90%以上的设备。)

为了让你对我的意思有所了解,上面的10.10.0.16是我们的PVR。 我的PC和PVR之间没有直接的交互,PVR上没有运行任何服务(也没有UPNP / DLNA)。

只是为了快速完成论点……

  • 但是我网络中的黑客呢?!1
    他们也可以阻止ICMP ping。 他们可以阻止对每种扫描类型的所有响应。
  • 哦,但肯定nmap仍然是最好的解决方案
    在这里运行时,它仍然缺少四个设备。 四个在网络上处于活动状态的设备。 要么他们没有响应ping或nmap没有等待足够长的时间让他们回应……我不知道。 nmap是一个很棒的工具(特别是对于你可能想要接下来做的端口扫描)但是这个问题仍然有点笨拙(而且有点慢)。 不要叫我雪莉。

我用arp-scan

 $ sudo arp-scan -l Interface: eth0, datalink type: EN10MB (Ethernet) Starting arp-scan 1.8.1 with 256 hosts (http://www.nta-monitor.com/tools/arp-scan/) 192.168.2.1 ec:1a:59:61:07:b2 (Unknown) 192.168.2.50 90:59:af:3d:6d:bc (Unknown) 192.168.2.51 3c:97:0e:48:22:12 (Unknown) 192.168.2.52 00:18:31:87:8f:b0 Texas Instruments 4 packets received by filter, 0 packets dropped by kernel Ending arp-scan 1.8.1: 256 hosts scanned in 1.282 seconds (199.69 hosts/sec). 4 responded 

您可以使用arp-scan

使用此命令安装:

 sudo apt-get install arp-scan 

要列出所有IP地址和关联的MAC地址,请使用:

 sudo arp-scan --interface=eth0 --localnet 

输出将如下所示:

 Interface: eth0, datalink type: EN10MB (Ethernet) Starting arp-scan 1.8.1 with 16777216 hosts (http://www.nta-monitor.com/tools/arp-scan/) 192.168.1.3 38:60:77:29:31:36 (Unknown) 192.168.1.8 4c:72:b9:7c:bb:7e (Unknown) 192.168.1.110 00:15:17:5f:d2:80 Intel Corporate 192.168.1.111 00:ff:88:5f:fd:f0 (Unknown) 192.168.1.153 00:15:17:5f:d2:82 Intel Corporate 192.168.1.180 52:54:00:70:04:02 QEMU 192.168.1.199 52:54:00:fe:7f:78 QEMU 

GUI

你可以试试avahi-discover 安装avahi-discover

  1. 使用此命令安装它(或单击上面的链接):

     sudo apt-get install avahi-discover 
  2. 从终端运行Avahi Zeroconf Browseravahi-discover
  3. 您应该会看到一个窗口,其中包含本地网络上的设备列表。
    MAC地址将是方括号中的字符串。

命令行

您可以在终端中使用此命令:

 avahi-browse -a -t -d local 

它默认安装。

  1. 首先使用nmap -sn 1.2.3.4/24fping -g 1.2.3.4/24扫描网络以查看哪些主机可以访问/联机

  2. 然后使用arping查询与IP地址对应的MAC地址。 伪代码:

     for i in $(cat list-of-reachable-hosts) do arping $i done 
  3. Cheatery:咨询本地交换机的arp-cache; 这应该给你一个很好的概述……

如果支持NetBIOS协议 ,我更喜欢使用

nbtscan 192.168.1.1-192.168.1.255

这篇文章引起了我的兴趣。 我有这个需要。

我编写了一个shell脚本,使用awk语句解析arp输出并生成HTML输出。 如果您执行脚本并将输出重定向到HTML文件,则会留下一个HTML文件,其中显示IP,完整的MAC地址以及指向IEEE OUI查找页面的链接。 这有助于通过NIC制造商确定客户端。

 printf "\nLAN IPs and their MACs\n\n" arp -a | awk '{print $2,$4}' | awk -F'[().: ]' '{print $2"."$3"."$4"."$5,$6,$7":"$8":"$9":"$10":"$11":"$12,"IEEE OUI Lookup "$7"-"$8"-"$9"
"}' printf "\n\n\n"

它有助于首先在LAN上执行nmap扫描,因此您在ARP表中有条目。 希望格式翻译。 你可以修改它以使表格格式的文本。

经过一些工作和搜索我发现了这个命令:

 nmap -sP -PE -PA21,23,80,3389 192.168.1.* 

nmap:网络探索工具和安全/端口扫描程序

-sP (跳过端口扫描)。 此选项告诉Nmap在主机发现后不要进行端口扫描,只打印出响应扫描的可用主机。 这通常称为“ping扫描”,但您也可以请求运行traceroute和NSE主机脚本。 默认情况下,这比列表扫描更具侵入性,并且通常可用于相同目的。 它允许对目标网络进行轻微侦察,而不会引起太多关注。 知道有多少主机对攻击者来说比列表扫描每个IP和主机名提供的列表更有价值。

-PE; -PP; -PM ( -PE; -PP; -PM ( ICMP Ping类型)。 除了前面讨论过的exception的TCP,UDP和SCTP主机发现类型之外,Nmap还可以发送普遍存在的ping程序发送的标准数据包。 Nmap向目标IP地址发送ICMP类型8(回应请求)数据包,期望从可用主机返回类型0(回复回复)。不幸的是,对于网络浏览器,许多主机和防火墙现在阻止这些数据包,而不是作为响应RFC 1122 [2]要求。 出于这个原因,仅ICMP扫描对于通过Internet的未知目标很少可靠。 但是对于监视内部网络的系统管理员来说,它们可以是一种实用且有效的方法。 使用-PE选项启用此回应请求行为。

-A (激进的扫描选项)。 此选项可启用其他高级和激进选项。

21,23,80,3389用于搜索的端口

192.168.1.* IP范围。 替换你的

你可以使用arp

这将显示MAC和IP ..

在厌倦了使用nmap和ARP组合之后,我创建了这个小程序,它查询给定IP范围的所有MAC地址: https : //github.com/drkblog/findmacs