Как определить, когда известные беспроводные устройства подключаются к моей беспроводной локальной сети в Linux - PullRequest
5 голосов
/ 19 января 2012

Я собираюсь сделать детектор мобильного устройства, используя одноплатный компьютер (SBC) под управлением ОС на базе Linux.SBC будет иметь беспроводной адаптер USB / 802.11.SBC будет сервером DHCP.Мобильное устройство подключится к беспроводной сети (adhoc или инфраструктура, не имеет значения) SBC.Когда мобильное устройство подключается к сети, SBC обнаружит его.Он проверит MAC-адрес входящего мобильного устройства с набором принятых адресов.Если есть совпадение, SBC выполнит команду.

У меня есть базовые знания Linux.Я не могу писать сценарии оболочки, но я знаю C ++ / Qt.Я не знаю с чего начать.Знаете ли вы соответствующие утилиты командной строки или библиотеки для использования в этом проекте?

PS: Может быть, мне нужен только способ определить, когда меняется список клиентов dhcp.Вместе с фильтрацией MAC-адресов это может работать.

Ответы [ 2 ]

0 голосов
/ 19 января 2012

nmap тестирует уровень IP, но беспроводные устройства не обязаны его использовать.

Вы также можете использовать режим «Монитор» на своем беспроводном интерфейсе и / или в сочетании с соответствующей программой прослушивания, такой как, например, airodump.-ng.Обратите внимание, что если в беспроводной сети используется изоляция клиентов, вы можете увидеть гораздо меньше клиентов, чем на самом деле участвует, а также обратите внимание, что, как и при правильно коммутируемом Ethernet, удаленные клиенты не обязательно будут находиться в другом сегменте.

0 голосов
/ 19 января 2012

Вы можете использовать nmap для обнаружения вашей сети. Здесь вы можете найти несколько примеров.

Затем вы должны проанализировать его вывод.Например:

while true; do
    nmap -v -sT 192.168.0.0/24 | fgrep "YOUR_SEARCHED_IP" && \
    echo BINGO "YOUR_SEARCHED_IP" IS IN THE 192.168.0.0/24 NETWORK
done  

И nmap имеет опцию -sn для пропуска проверок портов.

Еще лучше, если вы используете ip neighbor show, чтобы увидеть IP-адрес своих соседних сетей.

Или вы можете использовать простой ping тест, например:

for ip in $(seq 1 254); do 
    ping -c 1 192.168.1.$ip>/dev/null && \
    echo “192.168.1.$ip is UP"
done

И вы можете объединить его с nslookup, чтобы увидеть имена хостов.

...