如何发现网络中机器的MAC地址?

12 networking bios tcp mac-address

如何发现网络中机器的 MAC 地址?

我需要发现只安装了 BIOS(没有操作系统)的机器。

我需要找到正在运行的机器的 MAC 地址。

Pos*_*iet 8

您必须访问托管交换机上的可用信息。如果您有一个不受管理的网络,我看不到这样做的方法。

这是假设目标计算机能够进行局域网唤醒 (WoL)。在这种情况下,建立了到服务器的链接(寻找闪烁的链接 LED),并且网卡正在侦听 WoL 广播。AFAIK,该卡在此状态下不响应任何内容。如果没有任何 WoL,则卡很可能已关闭(没有链接 LED),并且根本无法工作。


Sve*_*ven 7

如果机器没有通电,这是不可能的。

如果它们通电,我想这也是不可能的,因为您需要一个最小的网络堆栈来至少回答 ARP 查询等问题,如果没有安装操作系统就无法工作。

可行的方法(我不知道,现在无法测试)是当 NIC 插入或通电时 NIC 和交换机进行通信,并且交换机以这种方式学习 MAC 地址。如果是这种情况,您将需要一个可管理的交换机并查询其连接的 mac 地址。

  • 如果它要求 bootp 或 pxe 引导,您*可能*在没有网络堆栈的情况下获得它。我认为这取决于机器是否可行。 (2认同)

Joh*_*mer 6

您可以使用Nmap使用以下语法进行非常快速的 ARP 扫描。

nmap -sn -PR -oX nmap.xml 192.168.1.0/24
Run Code Online (Sandbox Code Playgroud)

这使用 ARP ping(仅 ARP 请求,无 ICMP、UDP 或 TCP,无端口扫描)来扫描指定的 IP 地址范围并在 XML 文件 (nmap.xml) 中记录 IP 地址/MAC 地址/主机名响应。

我编写了一个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
Run Code Online (Sandbox Code Playgroud)

  • 切换到 -Pn 和 -sn 并分别作为跳过 ping 扫描和跳过端口扫描的首选语法。以前推荐使用 -PN 和 -sP 选项。这为某些禁用扫描阶段的选项建立了更常规的语法: -n no reverse DNS -Pn no host discovery -sn no port scan 我们还觉得旧的 -sP(“ping 扫描”)选项有点误导因为即使禁用端口扫描,当前版本的 Nmap 也可以走得更远(包括 -sC 和 --traceroute)。在可预见的未来,我们将保留对先前选项名称的支持。 (2认同)