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.
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.
Respostas:
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á.
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.
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
Scantype n not supported
. Aparentemente, o sinalizador -sn
não é suportado no Nmap 4.x.
show mac-address-table
).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.
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.
Aqui está uma solução que funcionou para mim:
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.
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::1
independentemente da rede em que você estiver.
Como já foi dito, se você possui comutadores não gerenciados ou o BootP / PXE, não há maneira fácil de obter os MACs de máquinas sem SO.
Se suas máquinas em execução estiverem executando janelas, é fácil criar scripts (geralmente via WMI)
Existem vários exemplos aqui: http://gallery.technet.microsoft.com/ScriptCenter/en-us/site/search?f[0orgeous.Type=SearchText&f[0orgeous.Value=MAC+address&x=0&y= 0 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.
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:
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