use por exemplo
nmap -sP -PR 192.168.1.0/24
(Use o endereço de rede e a máscara apropriados)
Para mapear os anfitriões. -sP
ignora o portscan, enquanto -PR
solicita uma varredura ARP, que funciona apenas em redes locais, mas não pode ser bloqueada por firewalls (na verdade, é possível, mas é insanamente impraticável).
Você pode filtrar isso para uma lista de amostra com alguns scripts:
nmap -sP -PR 192.168.1.0/24 2>/dev/null |grep "appears to be up" |awk '{print $2}'
Para obter a localização física, você precisa de um switch gerenciável. Os bons switches gerenciáveis responderão ao SNMP e permitirão que você consulte a localização de um endereço MAC específico.
Primeiro você precisa mapear endereços IP para MAC, você pode tentar processar a saída do nmap, mas é mais fácil consultar a tabela ARP do sistema (leia /proc/arp
on * nix, ou tente o comando arp
) .
Uma vez que você tenha um endereço MAC, o modo padrão de obter a porta via SNMP será geralmente através do Q-BRIDGE-MIB se o seu switch manuseia VLANs, ou (IIR) o P-BRIDGE-MIB. Você pode consultá-lo, por exemplo, com as ferramentas net-snmp:
snmpget -v2c -c public 192.168.1.1 Q-BRIDGE-MIB::dot1qTpFdbPort.y.x.x.x.x.x.x
Em que public
é o nome da comunidade SNMP, 192.168.1.1
é o endereço da opção , y
é o ID da VLAN e x
são os bytes com código decimal do endereço MAC. Você provavelmente precisará ativar o SNMP no comutador, permitir o acesso de sua estação, usar um nome de comunidade e / ou uma versão de protocolo diferentes.
Para switches que não lidam com VLANs, existem entradas equivalentes no iirc da P-BRIDGE-MIB.
Para ver como funciona a codificação de endereço, você pode usar snmpwalk
para recuperar a tabela de encaminhamento completa do switch, desta forma:
smpwalk -v2c -c public 192.168.1.1 Q-BRIDGE-MIB::dot1qTpFdbPort
Se você tiver vários comutadores, cada MAC aparecerá na porta correta no comutador correto, mas também nas portas de troncos relevantes dos outros comutadores, portanto, você precisará de uma maneira de filtrar as portas de troncos.