Man*_*nde 44 linux bash mac-address
我需要编写一个 bash 脚本,其中我必须创建一个文件,其中包含主机 IP 地址的详细信息及其与相应 MAC 地址的映射。
当主机的 IP 地址可用时,是否有任何可能的方法可以找出任何(远程)主机的 MAC 地址?
slm*_*slm 47
如果您只想找出给定 IP 地址的 MAC 地址,您可以arp在 ping 系统 1 次后使用该命令进行查找。
$ ping skinner -c 1
PING skinner.bubba.net (192.168.1.3) 56(84) bytes of data.
64 bytes from skinner.bubba.net (192.168.1.3): icmp_seq=1 ttl=64 time=3.09 ms
--- skinner.bubba.net ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 3.097/3.097/3.097/0.000 ms
Run Code Online (Sandbox Code Playgroud)
现在在 ARP 表中查找:
$ arp -a
skinner.bubba.net (192.168.1.3) at 00:19:d1:e8:4c:95 [ether] on wlp3s0
Run Code Online (Sandbox Code Playgroud)
如果要扫描整个 LAN 的 MAC 地址,可以使用命令行工具fing来执行此操作。它通常未安装,因此您必须下载并手动安装。
$ sudo fing 10.9.8.0/24
Run Code Online (Sandbox Code Playgroud)

如果您发现没有arp或fing命令可用,您可以使用 iproute2 的命令ip neigh来查看您系统的 ARP 表:
$ ip neigh
192.168.1.61 dev eth0 lladdr b8:27:eb:87:74:11 REACHABLE
192.168.1.70 dev eth0 lladdr 30:b5:c2:3d:6c:37 STALE
192.168.1.95 dev eth0 lladdr f0:18:98:1d:26:e2 REACHABLE
192.168.1.2 dev eth0 lladdr 14:cc:20:d4:56:2a STALE
192.168.1.10 dev eth0 lladdr 00:22:15:91:c1:2d REACHABLE
Run Code Online (Sandbox Code Playgroud)
您可以使用arp命令:
arp -an
Run Code Online (Sandbox Code Playgroud)
但是你只能在局域网中使用这个命令,如果你想找出任何远程主机的MAC地址,也许你必须使用一些工具来捕获数据包tcpdump并解析结果。
这是我在Ask Ubuntu中的问答。
你可以使用命令
sudo nmap -sP -PE -PA21,23,80,3389 192.168.1.*
Run Code Online (Sandbox Code Playgroud)
nmap:网络探索工具和安全/端口扫描器。从手册:
-sP(Skip port scan):这个选项告诉Nmap在主机发现后不要做端口扫描,只打印出响应扫描的可用主机。这通常称为“ping 扫描”,但您也可以请求运行 traceroute 和 NSE 主机脚本。默认情况下,这比列表扫描更具侵入性,并且通常可以用于相同的目的。它允许对目标网络进行轻度侦察,而不会引起太多关注。对攻击者来说,了解有多少主机已启动比对每个 IP 和主机名进行列表扫描所提供的列表更有价值。
-PE; -PP; -PM (ICMP Ping Types): 除了前面讨论的不常见的TCP、UDP和SCTP主机发现类型,Nmap可以发送无处不在的ping程序发送的标准数据包。Nmap 向目标 IP 地址发送一个 ICMP 类型 8(回声请求)数据包,期望从可用主机返回类型 0(回声回复)。不幸的是,对于网络浏览器来说,许多主机和防火墙现在阻止这些数据包,而不是响应RFC 1122[2] 要求。因此,对于 Internet 上的未知目标,仅 ICMP 的扫描很少足够可靠。但对于监控内部网络的系统管理员来说,它们可能是一种实用且有效的方法。使用 -PE 选项启用此回显请求行为。
-PA port list (TCP ACK Ping):TCP ACK ping 与刚刚讨论的 SYN ping 非常相似。正如您可能猜到的,区别在于设置了 TCP ACK 标志而不是 SYN 标志。此类 ACK 数据包声称通过已建立的 TCP 连接确认数据,但不存在此类连接。所以远程主机应该总是响应一个 RST 数据包,在这个过程中公开它们的存在。-PA 选项使用与 SYN 探测 (80) 相同的默认端口,并且还可以采用相同格式的目标端口列表。如果非特权用户尝试此操作,则使用前面讨论的连接解决方法。这种解决方法并不完美,因为 connect 实际上发送的是 SYN 数据包而不是 ACK。
21,23,80,3389: 要搜索的端口。
192.168.1.*: IP 范围。换成你的。
小智 5
arping -I <interface> -c 1 <host>
Run Code Online (Sandbox Code Playgroud)
该命令应在响应中返回 MAC 地址。就像是,
$ arping -I eth0 -c1 192.168.1.2
ARPING 192.168.1.2 from 192.168.1.5 eth0
Unicast reply from 192.168.1.2 [08:01:27:38:EF:32] 0.746ms
Sent 1 probes (1 broadcast(s))
Received 1 response(s)
Run Code Online (Sandbox Code Playgroud)
arping由iputils-arpingDebian 上的软件包提供。
| 归档时间: |
|
| 查看次数: |
175844 次 |
| 最近记录: |