Como descobrir o endereço MAC de máquinas em uma rede?

11

Como descubro o endereço MAC de máquinas em uma rede?

Eu preciso descobrir as máquinas que estão disponíveis apenas com o BIOS instalado (sem sistema operacional).

E preciso encontrar o endereço MAC das máquinas que estão funcionando.

    
por Peter Mortensen 31.08.2010 / 10:05

13 respostas

8

Você terá que acessar as informações disponíveis nos seus switches gerenciados. Se você tem uma rede não gerenciada, não vejo uma maneira de fazer isso.

Isso pressupõe que os computadores de destino sejam capazes de Wake-on-LAN (WoL). Nesse caso, um link para o servidor é estabelecido (procure o LED de link chamativo) e a placa de rede está ouvindo transmissões de WoL. AFAIK, o cartão não responde a nada neste estado. Se não houver nenhuma WoL, o cartão provavelmente está desligado (sem LED de link) e não funcionará.

    
por 31.08.2010 / 10:21
7

Se as máquinas não estiverem ligadas, isso é impossível.

Se eles estiverem ligados, eu acho que isso também é impossível, já que você precisa de uma pilha de rede mínima para pelo menos responder a perguntas como consultas ARP, etc., que não está funcionando sem um sistema operacional instalado.

O que pode funcionar (não sei e não posso testar agora) é que a NIC e o switch se comunicam quando a NIC está conectada ou ligada e o switch aprende o endereço MAC dessa maneira. Se este for o caso, você precisaria de um switch gerenciável e consultá-lo para endereços MAC conectados.

    
por 31.08.2010 / 10:22
5

Você pode usar o Nmap para fazer uma varredura ARP muito rápida usando a seguinte sintaxe.

nmap -sn -PR -oX nmap.xml 192.168.1.0/24

Isso usa ping ARP (somente solicitações ARP, sem ICMP, UDP ou TCP, sem verificação de porta) para verificar o intervalo de endereços IP especificado e registrar as respostas de endereço IP / endereço MAC / nome do host em um arquivo XML (nmap.xml) .

Eu escrevi um script PowerShell que munges o arquivo XML e cospe um CSV . Isso também filtra os hosts inativos. Acho isso mais fácil de usar no Excel do que o arquivo XML. Aqui está o script, se alguém estiver interessado.

# 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
    
por 22.12.2011 / 16:39
3
  1. Visualizar informações no seu switch / roteador, se o switch estiver avançado o suficiente.
    (No comando de switches da Cisco é show mac-address-table ).
  2. Se as máquinas tiverem placa de rede / BIOS ativada para PXE, leia as informações dos registros do DHCP, pois elas tentarão obter a concessão do DHCP. Se você não tiver o DHCP, apenas descarte todo o tráfego de broadcast com o Wireshark e filtre o tráfego DHCP. Todas as máquinas recém-alimentadas sem sistema operacional serão exibidas no tráfego.
por 31.08.2010 / 10:29
3

Em uma máquina Unix, ouvindo os computadores sem sistema operacional na mesma rede local e, se possível, por meio de um hub (não um switch), você pode tentar

arp
cat /proc/net/arp

Você também pode tentar usar wireshark (de uma máquina com sistema operacional). Novamente, é melhor usar um hub para capturar qualquer comunicação das máquinas BIOS, incluindo transmissões.

    
por 31.08.2010 / 15:59
1

O problema básico aqui é que essa é a informação da Camada 2, então apenas os switches a veem. Alguns switches fornecerão uma interface que permite visualizar essas informações, mas, se eles não o fizerem, a única maneira de obtê-lo é interceptar na camada física, por exemplo, instalando um hub entre o switch.

Se você estiver usando switches gerenciados, essas informações provavelmente estarão disponíveis no switch. Alguns roteadores / switches integrados ao usuário final (como o tipo que geralmente empacota os modems ADSL também) às vezes têm uma lista de clientes DHCP que inclui endereços MAC.

Se você estiver usando switches não gerenciados e realmente quiser saber essas informações, recomendo que você compre um hub e substitua temporariamente o switch por ele. Você pode então conectar um computador que executa o wireshark ao hub e capturar pacotes ARP para registrar endereços MAC. Alternativamente, você poderia usar o Echolot para fazer isso por você - ele rastreia seletivamente os pacotes ARP e constrói um banco de dados de endereços MAC.

    
por 01.09.2010 / 03:57
1

Aqui está uma solução que funcionou para mim:

  1. Ativar a inicialização pela rede no BIOS. (Por exemplo, defina seu adaptador de rede como "Ativado com PXE")
  2. Inicialize a máquina.
  3. A máquina tentará inicializar a partir da rede, mostrando o endereço MAC no processo.
por 14.06.2012 / 19:35
1

Um truque muito fácil que você pode fazer em 2 segundos é trabalhar com o fato de que qualquer sistema operacional grava uma tabela com o mac e o endereço IP de qualquer dispositivo com o qual interaja. Isso é conhecido como ARP TABLE. Então a questão é como forçar uma interação com todos os dispositivos? Você poderia simplesmente fazer ping no endereço IP de transmissão. Isso não é perfeito, já que alguns dispositivos ou firewall podem bloquear a solicitação de ping ICMP, mas funciona em muitos cenários.

Os comandos são (em um endereço de broadcast ipv4 192.168.0.255):

ping 192.168.0.255

No Linux, use:

ping -b 192.168.0.255

Aguarde alguns segundos para que os dispositivos respondam e faça:

arp -a

Para ping IPV6, veja o comentário de Giedrius Rekasius

Não perfeito, mas sem ferramentas, sem pesquisa, sem desperdício de tempo, funciona em todos os principais sistemas operacionais e é rápido.

    
por 03.08.2014 / 18:03
1

Analise a rede com Nmap e verifique a tabela ARP ( arp -a nas distribuições do Linux).

    
por 01.09.2010 / 10:48
0

Como outros já disseram, se você tiver switches não gerenciados, ou BootP / PXE, não há uma maneira fácil de obter os MACs de máquinas sem SO.

Se seus computadores em execução estiverem executando o Windows, é fácil roteirizar (geralmente via WMI)

Há um monte de exemplos aqui: link

    
por 31.08.2010 / 14:47
0

Eu sugeriria mudar a tabela de endereços MAC, mas alguém já cobriu a tabela acima.

Se algum dos computadores estiver executando um sistema operacional e tiver um endereço IP, você pode se conectar na mesma LAN, você pode usar o NMAP (ou uma versão GUI como o Zenmap) de link ... se você executar isto na mesma LAN, você deve obter informações de endereço MAC para qualquer máquina que responda.

Seria útil entender mais sobre por que você precisa obter os endereços MAC, caso haja uma maneira melhor de alcançar o mesmo resultado.

    
por 01.09.2010 / 07:33
0

Você pode coletar informações ARP com, por exemplo, um arpalert em execução contínua. Com isso, você terá o conjunto de endereços ARP vistos após o início.

As máquinas desligadas não lhe enviarão respostas de ARP.

Para acelerar o processo, você pode usar uma varredura nmap (nmap -sP) em sua rede do servidor em que está executando o arpalert, para acionar todos os hosts possíveis (ativos e em execução) para responder sua consulta arp . Com a execução da varredura de ping do nmap regularmente mais tarde, você tem mais chances de capturar um host de curta duração.

snippet de arpalert:

If the MAC is not in list, arpalert launches a pre-defined user script with the MAC address and IP address as parameters.

snippet do nmap:

Nmap ("Network Mapper") is a free and open source (license) utility for network exploration or security auditing

Olhe por aqui:

por 01.09.2010 / 11:11
0

eu uso:     nmap -sP 192.168.1.1/24

(substitua 192.168.1.1/24 pelo seu intervalo IP)

Ele mostrará apenas as máquinas que estão funcionando e lhe dará algo como:

[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

Se você não tem um sistema operacional instalado, você pode usar um live cd do Linux, o nmap provavelmente está disponível na maioria deles

    
por 22.11.2014 / 20:27