zed.0xff.me

LLTD scanner for Linux/FreeBSD

(или используем “ответчик обнаружения топологии канального уровня” в своих интересах)

Факт первый:
Не так давно стал замечать в настройках сети машин под виндой новые строчки, связанные с топологией сети. Ну как бы новые и ладно, вроде не мешают. Тем более что виндой сам не пользуюсь.. :)

Факт второй:
Есть такая полезная утилита arping, которая позволяет пинговать машины в сети по протоколу ARP (и не только). Но. Но пинговать машины мы можем только если у них уже настроен IP-адрес. Т.е. это спасает от, допустим, неверно настроенной маски, или там DNS, или фаервола. Но не более.
Заманчиво иметь такую утилиту, которой можно было бы “пинговать” машину пользователя, даже если у него все настройки пропали или потерялись, или “племянница приходила”.. ;)
arping 2.х вроде бы такую возможность имеет, надо только знать MAC-адрес машины:

arping -i em0 11:22:33:44:55:66
Но умеет, да не совсем. При этом на указанный мак посылается всего лишь широковещательный ICMP запрос.. и я пока среди окружающих машин не увидел ни одной, которая бы на него ответила..
Везде ответы на широковещательные пинги запрещены.. :(

А теперь – совмещаем факты :)
Удивительно, но Microsoft в этот раз своим внедрением нового протокола сыграл нам на руку :)
Протокол LLTD как раз и нужен для того чтобы обнаруживать в локалке машины не зависимо от их ipv4/ipv6/ipx адресов.
При посылке одной из машин в сеть специального магического пакета – все остальные (естественно, где этот протокол установлен и включен) сразу же отзываются, радостно сообщая свой айпишник(!), сетевое имя, мак, ну и разные флаги.
Спецификация на протокол открыта.

Собственно, за пару дней и была написана утилита lltdscan.
Взять можно на http://github.com/zed-0xff/lltdscan
Вот примеры работы:

1
2
3
4
#sudo ./lltdscan -t1300             
interface eth0
101 bytes from 00:01:33:ed:54:a1 (192.168.123.12 ): time=929 ms name="XZ"
found 1 hosts in 1.303 seconds
1
2
3
4
5
6
7
8
9
10
11
12
#sudo ./lltdscan -t1300 -v          
interface eth0
101 bytes from 00:01:33:ed:54:a1 (192.168.123.12 ): time=929 ms name="XZ"
     Host ID: 00 01 ee ff 22 a1 
    Charact.: 20 00 00 00       (full-duplex)
       Media: 00 00 00 06       (Ethernet)
   Perf.cntr: 00 00 00 00 00 36 9e 99 
  Link speed: 100 Mbit/s
        Name: 31 00 43 00 
         QoS: 60 00 00 00       (802.1q-support, 802.1p-support)

found 1 hosts in 1.302 seconds