
Есть ли способ сканировать компьютеры в сети через командную строку и получать их IP, MAC и DNS-имена, ничего о них не зная?
решение1
nmap -v -sn 192.168.1.0/24 | grep -v down
ps. конечно, вы можете изменить настройки подсети по своему усмотрению.
pps. в зависимости от версии nmap отображается или нет mac-адрес. 5.21+ (debian testing+) отображает. 5.0 (в настоящее время в стабильной версии Debian) — нет.
решение2
arp -a
сбросит всю эту информацию без необходимости установки nmap
. Однако, nmap
выполняет активное сканирование, поэтому будет более актуальной.
решение3
Если вы действительно не имеете ни малейшего понятия, вам следует сначала пассивно послушать сеть. Локальные сети довольно болтливы, и в основном пакет отправляется всем сетевым устройствам. Разложив слои пакетов, вы можете многое узнать о топологии. Будьте осторожны, иногда это вообще невозможно, это зависит от сети.
Например:
Кадры Ethernet предоставляют вам адреса Ethernet.
ARP (протокол разрешения адресов) связывает адрес Ethernet с сетевым адресом и дает неявные подсказки о связях между сетевыми устройствами.
IP (интернет-протокол) устанавливает связь между двумя хостами с IP-адресами.
TCP (протокол управления передачей) дает вам представление о том, какие службы (порты) активны и какие компьютеры обмениваются данными друг с другом.
UDP (протокол пользовательских датаграмм) дает ту же информацию, что и TCP. На самом деле вы можете узнать больше, чем просто выполнить активное сканирование.
Вы можете использовать tcpdump или использовать библиотеку pcap, если вы хотите найти конкретную информацию. Я сделалнебольшой примерна perl. Он выводит все аппаратные адреса, сетевые адреса, порты tcp и udp.