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
|
September 14, 2009 at 12:25 AM
интересная утила, может добавить в колекцию портов FreeBSD?
September 14, 2009 at 1:48 AM
Клёвенько, тока бы ещё autotools приклеить и libnet в этот проект перетянуть.
September 14, 2009 at 1:58 AM
Настораживает команда sudo...
September 14, 2009 at 2:32 AM
В общем, респект за идею, ужос за исходный код !
September 14, 2009 at 4:48 AM
Них..я оно не работает
192.168.1.192 - бука с Вендой
1. arp -a видит
amd64:/usr/src/lltdscan # arp -a
? (192.168.1.1) at 00:19:5b:c1:da:97 [ether] on eth0
? (192.168.1.129) at 08:00:27:8f:9c:e3 [ether] on eth0
2. Сделал шару, её видно.
amd64:/usr/src/lltdscan # smbclient -L 192.168.1.129
Enter pavel's password:
Domain=[VS-4297F2DEE9D8] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager]
Sharename Type Comment
--------- ---- -------
Мои документы Disk
IPC$ IPC Удаленный IPC
ADMIN$ Disk Удаленный Admin
C$ Disk Стандартный общий ресурс
session request to 192.168.1.129 failed (Called name not present)
session request to 192 failed (Called name not present)
session request to *SMBSERVER failed (Called name not present)
NetBIOS over TCP disabled -- no workgroup available
amd64:/usr/src/lltdscan # ./lltdscan -t1300 -vv 08:00:27:8f:9c:e3
interface eth0
found 0 hosts in 1.308 seconds, but '08:00:27:8f:9c:e3' is not found.
amd64:/usr/src/lltdscan # ./lltdscan -t1300 -vv
interface eth0
found 0 hosts in 1.311 seconds
September 14, 2009 at 2:40 PM
на XP надо ставить пакет LLTD.
September 14, 2009 at 2:42 PM
а топологию можно по этому построить?
еще и сервак написать...