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

12

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

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.

Peter Mortensen
fonte
Veja também serverfault.com/questions/260333/…
Stefan Lasiewski
Duplicação entre sites (no Stack Overflow): como descobrir o endereço MAC das máquinas na rede e através dela? .
22614 Peter Mortensen

Respostas:

8

Você precisará acessar as informações disponíveis em seus comutadores 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 ativar a LAN (WoL). Nesse caso, é estabelecido um link para o servidor (procure o LED de link intermitente) e a placa de rede está ouvindo as transmissões de WoL. AFAIK, o cartão não responde a nada nesse estado. Se não houver WoL, é provável que a placa esteja desligada (sem LED de link) e não funcionará.

Posipiet
fonte
7

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

Se eles estiverem energizados, eu acho que isso também é impossível, pois você precisa de uma pilha de rede mínima para responder pelo menos a coisas como consultas ARP etc., que não funcionam 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 é conectada ou ligada e o switch aprende o endereço MAC dessa maneira. Se for esse o caso, você precisaria de um comutador gerenciável e consultaria-o quanto a endereços MAC conectados.

Sven
fonte
2
Você pode obtê-lo sem uma pilha de rede, se estiver pedindo bootp ou pxe boot. Depende da máquina se isso funcionaria, eu acho.
Bart Silverstrim
6

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

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

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

Eu escrevi um script do PowerShell que mescla o arquivo XML e cospe um arquivo 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
John Homer
fonte
Eu tentei o comando acima e obtive o erro Scantype n not supported. Aparentemente, o sinalizador -snnão é suportado no Nmap 4.x.
Stefan Lasiewski
A partir do nmap 5.30BETA1 ChangeLog:
John Homer
2
Comutado para -Pn e -sn e como a sintaxe preferida para ignorar a verificação de ping e a verificação de porta, respectivamente. Anteriormente, as opções -PN e -sP eram recomendadas. Isso estabelece uma sintaxe mais regular para algumas opções que desativam as fases de uma verificação: -n sem DNS reverso -Pn sem descoberta de host -sn sem verificação de porta Também achamos que a opção antiga -sP ("ping scan") era um pouco enganosa. porque as versões atuais do Nmap podem ir muito além (incluindo -sC e --traceroute), mesmo com as verificações de porta desabilitadas. Manteremos o suporte para os nomes das opções anteriores no futuro próximo.
John Homer
Então, com base nisso, você deve ser capaz de usar o '-sP' sintaxe no lugar do mais recente 'sn' parâmetro. Infelizmente, não tenho uma versão do nmap4 para testar.
John Homer
3
  1. Veja as informações no seu switch / roteador, se o switch for avançado o suficiente.
    (No comando Cisco Switch é show mac-address-table).
  2. Se as máquinas tiverem BIOS / placa de rede ativadas para PXE, leia as informações dos logs DHCP, pois elas tentarão obter concessão de DHCP. Se você não possui DHCP, basta despejar todo o tráfego de transmissão com o Wireshark e filtrar o tráfego DHCP. Todas as máquinas recém-alimentadas sem sistema operacional serão exibidas no trânsito.
Kristaps
fonte
3

Em uma máquina Unix, ouvindo os computadores sem SO na mesma LAN e, se possível, através de um hub (não de um switch), você pode tentar

arp
cat /proc/net/arp

Você também pode tentar 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.

Anel Ø
fonte
1

O problema básico aqui é que essas são as informações da Camada 2, portanto, somente os comutadores as veem. Alguns switches fornecerão uma interface que permite que você espreite essas informações, mas se elas não conseguirem, é a única maneira de interceptar na camada física, instalando, por exemplo, um hub entre os switches.

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

Se você estiver usando comutadores não gerenciados e realmente quiser saber essas informações, recomendo que você compre um hub e substitua temporariamente o comutador por ele. Em seguida, você pode conectar um computador executando o wireshark ao hub e capturar pacotes ARP para registrar endereços MAC. Como alternativa, você pode usar o Echolot para fazer isso por você - ele rastreia seletivamente pacotes ARP e cria um banco de dados de endereços MAC.

imoatama
fonte
Editar - basta reler a parte sobre eles serem apenas BIOS. Isso apresenta outros desafios além do problema de interceptação dos dados da camada 2 - os clientes podem nem enviar dados pela rede. Se os clientes tiverem um BIOS que faça DHCP ou envie pacotes ARP, deve ser possível vê-los no switch. Não sei ao certo quais edições do BIOS suportam isso, sei que algumas o fazem.
Imoatama 01/09/10
1

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

  1. Ativar inicialização de 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.
Igor Ostrovsky
fonte
1

Um pequeno 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 endereço MAC e IP de qualquer dispositivo com o qual ele interaja. Isso é conhecido como ARP TABLE. Então a questão é como forçar uma interação com todos os dispositivos? Você pode simplesmente executar ping no endereço IP de broadcast. Isso não é perfeito, pois alguns dispositivos ou firewall podem bloquear a solicitação de ping do 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 uso do Linux:

ping -b 192.168.0.255

Aguarde alguns segundos para os dispositivos responderem e faça:

arp -a

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

Não é perfeito, mas não há ferramentas, nenhuma pesquisa, nenhuma perda de tempo, funciona em todos os principais sistemas operacionais e é rápido.

Giovanni Silva
fonte
Acho mais fácil e confiável fazer esses pings no IPv6 do que no IPv4. Um comando de exemplo pode ser assim ping6 -c2 -n ff02::1%wlan0. Só é necessário atualizar o nome da interface de rede a ser usada, o endereço IP a ser usado para essa finalidade é sempre, ff02::1independentemente da rede em que você estiver.
precisa saber é o seguinte
1

Examine a rede com o Nmap e verifique a tabela ARP ( arp -anas distribuições do Linux).

MihaiM
fonte
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 endereços IP, você poderá conectar-se à mesma LAN, poderá usar o NMAP (ou uma versão da GUI como o Zenmap) em http://nmap.org/ ... se executar Na mesma LAN, você deve obter informações de endereço MAC para todas as máquinas que responderem.

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

Mitch Miller
fonte
0

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

Máquinas desligadas não enviarão respostas ARP.

Para acelerar o processo, você pode usar uma verificação de nmap ping (nmap -sP) na rede a partir do servidor em que está executando o arpalert, a fim de acionar todos os hosts possíveis (ativos e em execução) para responder à sua consulta arp. Com a execução do nmap ping scan regularmente mais tarde, você tem melhores chances de pegar um host em breve.

snippet do arpalert:

Se o MAC não estiver na lista, o arpalert lança um script de usuário predefinido com o endereço MAC e o endereço IP como parâmetros.

trecho do nmap:

O Nmap ("Network Mapper") é um utilitário gratuito e de código aberto (licença) para exploração de rede ou auditoria de segurança

Olhe por aqui:

asdmin
fonte
0

Eu uso: nmap -sP 192.168.1.1/24

(substitua 192.168.1.1/24 pelo seu intervalo de IPs)

Ele mostrará apenas as máquinas ativadas e fornecerá 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 possui um sistema operacional instalado, pode usar um live cd do linux, o nmap provavelmente está disponível na maioria deles

neofutur
fonte