如何发现networking中机器的MAC地址?
我需要发现只安装了BIOS的机器(无操作系统)。
我需要find机器的MAC地址。
您必须访问您的pipe理型交换机上提供的信息。 如果你有一个非托pipenetworking,我没有办法做到这一点。
这是假设目标计算机能够唤醒局域网 (WoL)。 在这种情况下,build立到服务器的链接(查找华丽的链接LED),并且网卡正在收听WoL广播。 AFAIK,卡片在这种状态下不回答任何事情。 如果没有任何WoL,卡很可能是closures的(没有链接LED),它根本不工作。
如果机器没有通电,这是不可能的。
如果他们通电,我猜这是不可能的,因为你需要一个最小的networking堆栈,至less可以回答诸如ARP查询之类的东西,这在没有安装操作系统的情况下不起作用。
什么可能工作(我不知道,现在也无法testing)是当网卡插入或通电时,网卡和交换机进行通信,交换机通过这种方式学习MAC地址。 如果是这种情况,您需要一个可pipe理的交换机,并查询连接的mac地址。
您可以使用Nmap使用以下语法进行快速ARP扫描。
nmap -sn -PR -oX nmap.xml 192.168.1.0/24
这使用ARP ping(仅ARP请求,无ICMP,UDP或TCP,无端口扫描)来扫描指定的IP地址范围,并将IP地址/ MAC地址/主机名响应logging在XML文件(nmap.xml)中。
我编写了一个PowerShell脚本,用于扫描XML文件,并提取CSV文件。 这也过滤掉了主机。 我发现在Excel中比XML文件更容易使用。 如果有人感兴趣,这是脚本。
# Define nmap input file $NmapXMLFile = ".\nmap.xml" # Initialize object array $HostItems = @() # Initialize index $x = 0 # Load XML [xml]$NmapXML = Get-Content $NmapXMLFile # Loop through XML ForEach ($HostNode in $NmapXML.nmaprun.host) { # Check host status If ($HostNode.status.state -eq "up") { # Create host object $HostObj = "" | Select-Object ID, Hostname, 'IP Address', 'MAC Address', Vendor # Store ID and increment index $HostObj.ID = $x += 1 # Store hostname $HostObj.Hostname = $HostNode.hostnames.hostname.name # Loop through addresses foreach ($HostAddress in $HostNode.address) { # Check IP address If ($HostAddress.addrtype -eq "ipv4") { # Store IP address $HostObj.'IP Address' = $HostAddress.addr } # Check MAC address If ($HostAddress.addrtype -eq "mac") { # Store MAC address $HostObj.'MAC Address' = $HostAddress.addr # Store vendor $HostObj.Vendor = $HostAddress.vendor } } # Append host object to array $HostItems += $HostObj } } # Print host items $HostItems # Export host items to CSV $HostItems | Export-CSV -NoType .\nmap.csv
show mac-address-table
)。 在Unix机器上,听同一局域网上的无操作系统的计算机,如果可能的话,通过一个集线器(而不是交换机),你可以尝试
arp cat /proc/net/arp
你也可以尝试wireshark
(从一个操作系统的机器)。 同样,最好使用集线器来捕获来自BIOS设备的任何通信,包括广播。
这里的基本问题是这是第2层信息,所以只有交换机才能看到它。 一些交换机将提供一个界面,让你看到这个信息,但如果他们不是唯一的方法来获取它是拦截在物理层,例如在交换机之间安装一个集线器。
如果您使用的是pipe理型交换机,则可能从交换机获得此信息。 一些最终用户集成的路由器/交换机(例如经常包装ADSL调制解调器的那种)有时候会有一个包含MAC地址的DHCP客户列表。
如果您使用的是非pipe理型交换机,并且您确实想知道此信息,我build议您购买一个集线器 ,并用它暂时更换交换机。 然后,您可以将运行wireshark的计算机连接到集线器,并捕获ARP数据包以loggingMAC地址。 或者你可以使用Echolot为你做这个 – 它有select地跟踪ARP数据包并build立一个MAC地址数据库。
这是一个解决scheme,为我工作:
你可以在2秒钟内完成的一个非常简单的小技巧就是,任何操作系统都会写一个表格来与任何与之交互的设备的mac地址和IP地址。 这就是所谓的ARP表。 所以问题是如何强制与所有设备进行交互? 您可以简单地ping广播IP地址。 这并不完美,因为有些设备或防火墙可能会阻止ICMP ping请求,但是它在很多情况下都可以使用。
这些命令是(在一个ipv4 192.168.0.255广播地址):
ping 192.168.0.255
在Linux中使用:
ping -b 192.168.0.255
等待设备响应几秒钟,然后执行:
arp -a
对于IPV6平,见Giedrius Rekasius评论
不完善,但没有工具,没有研究,没有浪费时间,在每个主要的操作系统中工作,并且很快。
使用Nmap扫描networking,然后检查ARP表(在Linux发行版中为arp -a
)。
正如其他人所说,如果您有非托pipe交换机或BootP / PXE,没有简单的方法来获得没有操作系统的机器的MAC。
如果你正在运行的机器正在运行windows,那么脚本很容易(通常通过WMI)
这里有一堆示例: http : //gallery.technet.microsoft.com/ScriptCenter/en-us/site/search?f[0].Type=SearchText&f[0].Value=MAC+address&x=0&y= 0
我正在build议交换机MAC地址表,但有人已经覆盖了上面的一个。
如果任何计算机正在运行操作系统并具有IP地址,则可以连接到同一个局域网,则可以从http://nmap.org/使用NMAP(或Zenmap等GUI界面)…如果运行这在同一个局域网上,你应该得到任何响应的机器的MAC地址信息。
了解更多关于为什么你需要获得MAC地址是有用的,以防有更好的方法达到相同的结果。
您可以收集ARP信息,例如连续运行的arpalert。 这样,你就可以在开始之后看到一组ARP地址。
关机的机器不会向您发送ARP答复。
为了加速这个过程,你可以在你正在运行的服务器上使用你的networking上的nmap ping扫描(nmap -sP),以便触发所有可能的(活动的和正在运行的)主机响应你的arp查询。 随着定期运行nmap ping扫描,你有更好的机会捕捉一个短暂的生活主机。
来自arpalert的片段:
如果MAC不在列表中,arpalert将启动一个预定义的用户脚本,其MAC地址和IP地址为参数。
来自nmap的片段:
Nmap(“networking映射器”)是一个免费的开源(许可证)实用程序,用于networking勘察或安全审计
看看这里:
我使用:nmap -sP 192.168.1.1/24
(用您的IP范围replace192.168.1.1/24)
它会告诉你只有机器,并会给你类似于:
[root@x ~]# nmap -sP 192.168.1.1/24 Starting Nmap 6.40 ( http://nmap.org ) at 2014-11-22 14:20 EST Nmap scan report for 192.168.1.1 Host is up (0.0019s latency). MAC Address: ZZ:ZZ:54:2E:E9:B4 (Unknown) Nmap scan report for 192.168.1.33 Host is up (0.035s latency). MAC Address: ZZ:ZZ:FA:2D:D7:D8 (Intel Corporate) Nmap scan report for 192.168.1.254 Host is up (0.0020s latency). MAC Address: ZZ:ZZ:31:02:98:19 (Asustek Computer) Nmap scan report for 192.168.1.34 Host is up. Nmap done: 256 IP addresses (4 hosts up) scanned in 1.88 seconds
如果你没有安装任何操作系统,你可以使用一个Linux Live光盘,nmap可能在其中大部分是可用的