列出本地网络(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 。
-
使用此命令安装它(或单击上面的链接):
sudo apt-get install avahi-discover
- 从终端运行Avahi Zeroconf Browser或
avahi-discover
。 - 您应该会看到一个窗口,其中包含本地网络上的设备列表。
MAC地址将是方括号中的字符串。
命令行
您可以在终端中使用此命令:
avahi-browse -a -t -d local
它默认安装。
-
首先使用
nmap -sn 1.2.3.4/24
或fping -g 1.2.3.4/24
扫描网络以查看哪些主机可以访问/联机 -
然后使用
arping
查询与IP地址对应的MAC地址。 伪代码:for i in $(cat list-of-reachable-hosts) do arping $i done
-
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