Я веб-разработчик, который пытается лучше справиться с безопасностью. Я пытаюсь найти способ (в дистрибутивах на основе Linux / Debian) перечислить все компьютеры в той же локальной сети, где находится мой нетбук. Я попробовал "arp -n", но я не чувствую, что это полный список, так как мой iPhone находится на том же Wi-Fi-маршрутизаторе, что и мой нетбук, и это не помогло. Есть ли какой-нибудь лучший способ получить полный список машин, которые используют один и тот же шлюз?
networking
wireless-networking
security
CaptSaltyJack
источник
источник
Ответы:
Получите Nmap . Это программа Trinity, используемая в The Matrix, и вы можете выполнить сканирование, чтобы найти все устройства, подключенные к локальной сети, в которой вы находитесь, и многое другое.
Вот справочник.
источник
sudo apt-get install nmap
Это то, что я использую, nmap и адрес, используя блочную нотацию CIDR для сети, которую вы хотите сканировать. Для начала вам нужно установить nmap, так как он может не поставляться с предустановленным дистрибутивом. На Ubuntu:
Затем выясните ваш сетевой адрес, используя ifconfig:
вывод ifconfig для интерфейса, который я хочу сканировать:
Используйте inet addr и Mask для определения сетевого адреса в нотации CIDR, подробнее о CIDR здесь . Адрес:
Запустите nmap, используя параметр -sP, который будет сканировать только после проверки, подключен ли хост:
Вывод nmap будет выглядеть примерно так:
Вот и все, если вам нужна дополнительная помощь по nmap, посмотрите официальную документацию по nmap или запустите:
источник
nmap -sA 192.168.1.0/24
Опция nmap-sA
показывает аналогичные описательные результаты с лучшей читабельностью, которая включает имя устройства, IP, mac и т. д., как и с опцией-sP
. Я лично предпочитаю -sA -SP для удобства чтения.arp -n
показывает только те машины в вашей локальной сети, с которыми ваша машина уже общалась. Вы можете получить этот список для лучшего заполнения, отправив эхо-запросы на широковещательные и многоадресные адреса всех хостов:«Все единицы» (в двоичном формате) широковещательный адрес. Обратите внимание, что большинство IP-стеков преобразует это в широковещательные адреса подсетей для всех подсетей, к которым вы подключены:
Широковещательный адрес подсети для вашей текущей подсети. Итак, если вы находитесь на 192.168.1.0/24:
Многоадресный адрес «все хосты». Мне это очень нравится, потому что больше шансов найти хосты, настроенные для других IP-подсетей, которые подключены к той же локальной сети Ethernet, что и вы:
Обратите внимание, что этот метод и другие методы, о которых я уже упоминал в других ответах, ищут только узлы с достижимым IP-адресом в текущей сети. Это, вероятно, все, что вам нужно заботиться, но злоумышленник может отслеживать или совершать плохие действия в сети, не будучи видимым через IP.
источник
ip neigh
иhosts
. НЕТ Nmap требуется / НЕТ sudo требуется .Основываясь на этом, вы можете создать скрипт на Python:
Скачать через
(или просто
arp
... я этого раньше не видел)источник
ip neigh | awk '{ print $1 }' | xargs -n1 host
ip n
для краткости. Может быть , лучшеip n | grep REACHABLE
.Я не нашел существующие ответы достаточно удовлетворительными, поэтому я решил попробовать. В конце концов, FAQ предлагает предоставить контекст для ссылок .
nmap
отлично, если немного запутать в использовании. Вот кое-что, что я запускаю, чтобы обнаружить локальные сетевые устройства, которые в основном способны копировать и вставлять.nmap -sP
(илиnmap -sn
) сканирует с помощью пинга . Существуют и другие варианты «обнаружения хоста», например, с помощьюnmap -sL
илиnmap -Pn
.Способ № 1.
Способ № 2. Я знаю, что это работает, но я не могу сказать, если это правильный путь.
Буду рад узнать, есть ли более эффективные способы. До тех пор я придерживаюсь этого.
источник
Например, вы можете попробовать пропинговать всю данную подсеть с помощью небольшого сценария оболочки Linux.
источник
ip n
сказать FAILED для всех.Hunt - это инструмент командной строки, способный создавать список машин, передаваемых по сети для получения информации. Он использует данные TCP, UDP, ICMP и ARP для создания списка активных MAC-адресов в сети. Это пассивный инструмент, который работает, слушая по проводам.
источник
Для более компактного списка подключенных устройств:
Объяснение.
nmap -sL 192.168.0.*
перечислит все IP-адреса в подсети и отметит те, которые имеют имя:Поскольку все интересные записи начинаются с круглых скобок
(
и цифр1
, мы фильтруем их с помощью| grep \(1
(обратная косая черта необходима, чтобы избежать скобок)Причудьте,
что если два устройства имеют одинаковое имя,
nmap
будет отображаться только то, которое было подключено к маршрутизатору последнимисточник
Для сканирования состояния диапазона IP-адресов это удобно и просто:
Где:
Примечание:
-sn
был известен как-sP
Я сделал это на Mac OS X (которая основана на BSD). Я не уверен, если версия для Linux имеет какие-либо различия.
источник
Вы можете использовать fping
sudo apt-get install fping
(в Debian-подобных ОС).fping похож на ping, но гораздо лучше работает при пинге нескольких хостов. -R 1 флаг указан Fping выполнить только один раунд. Часть 2> 1 позволяет grep фильтровать вывод.
Будет отображать что-то вроде:
Существует также интересный флаг для nmap , который позволит вам увидеть продавца MAC - если он известен. Используйте с sudo для просмотра MAC-адресов.
Вы получите, например:
источник
1. Альтернативное решение, если вещание
nmap
не доступно:2а. или просто спросите свой сервер доменных имен :
2b. без awk
пингует все проверяемые сетевые устройства в подсети 192.168.2.0/24 параллельно (для сокращения времени выполнения). После этого
arp
должно отображаться каждое устройство, которое ответило.не проверяет наличие активных или текущих соединений, но перечисляет все соединения, которые хранит служба локального домена, даже очень старые.
Более подробное объяснение:
seq 254
создать все числа от 1 до 254 (для всех чисел от 100 до 150:seq 100 150
)xargs
вызываетping
и заменяет «IP» (-iIP
) наseq
номер uence из stdin, поэтому 192.168.2.IP меняется на 192.168.2.1 для первогоseq
номера,-P
указывает количество одновременныхping
процессов, которыеxargs
должны начаться, я выбираю то же количество +1, что и адреса ( = 254) Мне интересно.ping
с ip-адресом, измененным функцией xargs (192.168.2.IP
) и только ping один раз (-c1
);-i
в этом случае вы должны использовать тот же идентификатор, который указан для аргумента xargs, вместо аргументаIP
grep time=
чтобы удалить каждую строку, содержащую лишнюю информацию, нас интересуют только ответы, которые обеспечивают время прохождения туда-обратно (= получил ответ)arp -a
отображать действительные пары имен (ip)Я называю это моей командой pingall и сделал ее доступной через псевдоним в
~/.bashrc
:источник