2012-01-18 4 views
5

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

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

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

+0

Вы должны изучить немного сценария оболочки. Если вы пишете деамон, вы должны написать сценарий запуска и уничтожения для init.d. Ну, это не сложно, но вам нужно знать основы :-) – rekire

+0

Я могу создать один из существующих сценариев запуска/уничтожения. Это не проблема. – niw3

+0

Вы должны дать более подробную информацию, например, какое программное обеспечение будет запускаться на этом SBC? Для чего-то вроде AP в программном обеспечении потребуется hostapd, который, как я полагаю, имеет встроенную возможность фильтрации MAC. –

ответ

0

Чтобы найти вашу сеть, вы можете использовать nmap. Here вы можете найти несколько примеров.

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

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, чтобы увидеть имена хостов.

+0

Спасибо. Однако nmap ищет открытые порты, поэтому мобильное устройство должно иметь открытые порты, иначе оно не будет обнаружено. – niw3

+0

Ну, если вы делаете 'nmap -o $ IP_RANGE', он сообщает что-то вроде отчета Nmap scan на $ IP, а затем на следующей строке' host is up'. Но см. Мой обновленный ответ. –

0

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

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