Я знаю, что могу проверить ping моей локальной сети, выполнив что-то вроде nmap -sP 192.168.0.0/24 которое работает просто отлично.

Мне было интересно, может ли nmap определить диапазон локальной подсети сам по себе, используя мой IP-адрес локальной сети и маску сети, без необходимости указывать диапазон IP-адресов.

У NMAP есть такая особенность?

Если это не так, можно ли это сделать с помощью bash line в Linux?

1 ответ1

3

ip route , вероятно, самый простой способ получить эту информацию, и в большинстве случаев он корректен.

root@myhost:~# ip route 
default via 192.168.2.1 dev eth1
192.168.2.0/24 dev eth1  proto kernel  scope link  src 192.168.2.30

Вот не очень элегантная команда оболочки «не очень элегантно и мог бы использовать больше», которая извлечет 192.168.2.0/24 из приведенного выше. Он извлечет вышеперечисленное и поместит его в переменную оболочки $MY_SUBNET_WITH_CIDR

DEFAULT_ROUTE_IFACE=`ip route | grep default | cut -f 5 -d " "`; \
MY_SUBNET_WITH_CIDR=`ip route | tail -n -1 | grep $DEFAULT_ROUTE_IFACE | cut -f 1 -d " "`

Конечно, если ваш шлюз по умолчанию предоставляется кабельным модемом или провайдером домашней широкополосной связи, вы будете пытаться nmap принадлежащую им сеть, что может выглядеть враждебно, поэтому будьте осторожны.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .