Страница 1 из 1
Как WTware узнаёт информацию о соседях?
Добавлено: Пн апр 15, 2024 11:48 am
Alex_rs
С недавних пор в web-интерфейсе тонкого клиента появилась возможность посмотреть "соседей" - терминалы в этой же сети. Вот как на скрине ниже. Собственно вопрос в том, как они узнают о друг друге? Если это, конечно, не коммерческая тайна.
Re: Как WTware узнаёт информацию о соседях?
Добавлено: Пн апр 15, 2024 1:13 pm
aka
Широковещательными сообщениями. UDP порт 779. Работает только в той же сети, через маршрутизатор не пройдёт.
Конфигуратор с самого начала так узнавал соседей, к терминалам позже прикрутили.
Re: Как WTware узнаёт информацию о соседях?
Добавлено: Пн апр 15, 2024 2:14 pm
Alex_rs
aka писал(а): Пн апр 15, 2024 1:13 pm
Широковещательными сообщениями. UDP порт 779. Работает только в той же сети, через маршрутизатор не пройдёт.
Конфигуратор с самого начала так узнавал соседей, к терминалам позже прикрутили.
Спасибо. А можно как-то узнать формат ответа?
Я к чему спрашиваю. Я не использую конфигуратор, нету в сети свободной виндовой машины. Всё на линуксах. Вот и хотел сделать свой мониторинг. Опять же, если не коммерческая тайна.
Re: Как WTware узнаёт информацию о соседях?
Добавлено: Ср апр 17, 2024 12:29 pm
aka
Что лучше: формат ответов или исполнимый файл под линукс, который запросит и распечатает?
Re: Как WTware узнаёт информацию о соседях?
Добавлено: Ср апр 17, 2024 3:25 pm
Alex_rs
aka писал(а): Ср апр 17, 2024 12:29 pm
Что лучше: формат ответов или исполнимый файл под линукс, который запросит и распечатает?
Надеюсь, правильно вас понял.
Я смотрел трафик по 779 порту WireShark'ом. Думаю, не ошибусь, если скажу, что там полезная нагрузка или шифрована, или XOR'ена. В целом, мне не принципиально, как получить нешифрованные данные. Хотелось бы, чтобы я вот эту информацию мог каким-либо образом отобразить в "человекочитаемом" виде. Тут у меня три скрина. На первом и втором данные, которые вижу при загрузке терминала. На третьем - данные при клике на кнопку "Список терминалов" в веб интерфейсе одного из терминалов. Будет вообще классно, если смогу видеть полезные данные в обоих случаях.
По поводу "формата ответов". Может выразился неправильно. Мне надо полезные данные. А каким образом я их получу, не суть важно. Скажете как их расшифровать - отлично, сам напишу скрипты, которые будут с данными работать дальше. Предоставите исполняемый файл под линукс, который сможет висеть на 779 порту на DHCP сервере и "расшифровывать" полезные данные - тоже отлично. Хотя, первый вариант меня устроил бы больше. Сдаётся мне, что и других пользователей вашего продукта тоже))).
Re: Как WTware узнаёт информацию о соседях?
Добавлено: Ср апр 17, 2024 9:55 pm
aka
Первый байт:
1 - discover, запрос переклички. Дальше ничего не будет.
2 - ответ на перекличку или самопредставление сразу после загрузки.
4 байта длины строки с версией.
Строка однобайтовых, версия.
4 байта длины строки имени хоста.
Строка однобайтовых, имя хоста.
6 байт МАК.
Дальше перечисление: "один байт команды, возможно полезная нагрузка".
Команда 1 - загрузились по сети, следом 4 байта IP dhcp сервера.
Команда 2 - загрузились с сидирома.
Команда 3 или 4 - загрузились с диска или USB флешки.
Команда 5 - платформа, следом 1 байт:
x86 = 1
uefi = 2
pi = 3
pi_64 = 4
Команда 6 - IP терминала. Следом 4 байта IP терминала. Может отличаться от IP отправителя пакета если терминал за NAT. Это чтобы работало discover= в конфиге.
Команда 8 - имя юзера с доменом. Следом один байт длины в двухбайтовых и затейливо ксореные двухбайтовые имя юзера с доменом.
Команда 7 - подпись всего что было в пакете до неё. Следом 64 байта подписи. Она должна быть последней в пакете. Не хочу открывать ключи.
Всё.
Re: Как WTware узнаёт информацию о соседях?
Добавлено: Пт апр 19, 2024 9:25 am
Alex_rs
Спасибо огромное за столь развёрнутый ответ.
К сожалению, он не даёт ответа на вопрос, как узнать имя пользователя. Я понимаю, что там
затейливо ксореные двухбайтовые имя юзера с доменом
Но может расскажете, как их расксорить? Вероятнее всего эти данные ксорятся чем-то, что есть ранее в пакете?
Ключи ненужны. Но если ключ участвует в ксоре, ну что поделать.
Re: Как WTware узнаёт информацию о соседях?
Добавлено: Сб апр 20, 2024 11:57 pm
aka
Проще собрать исполнимый файл для линуксов чем расписать, как оно ксорится. Вчера надо или подождёт неделю?
Re: Как WTware узнаёт информацию о соседях?
Добавлено: Пн апр 22, 2024 7:41 am
Alex_rs
aka писал(а): Сб апр 20, 2024 11:57 pm
Проще собрать исполнимый файл для линуксов чем расписать, как оно ксорится. Вчера надо или подождёт неделю?
Конечно подождет. Буду признателен.
Re: Как WTware узнаёт информацию о соседях?
Добавлено: Ср июн 05, 2024 3:49 pm
aka
Всего полтора месяца прошло
Попробуй это:
http://wtware.com/testing/202406051652.zip
Статический бинарник для 64-битного x86 линукса. Скажи если надо под другую платформу собрать.
Ответы надо слушать на 779 UDP порту. В юниксах нельзя юзеру слушать порты ниже 1024. Так что или запускать под рутом, или оно само ещё два варианта предложит:
Код: Выделить всё
sudo setcap 'cap_net_bind_service=+ep' ./wtbroadcast-amd64
И затем запускаешь wtbroadcast-amd64 от юзера.
Или другой вариант, портфорвардишь udp с 779 на например 10779:
Код: Выделить всё
sudo /sbin/iptables -A PREROUTING -t nat -p udp --dport 779 -j REDIRECT --to-port 10779
И затем запускаешь от юзера:
Оба изменения надо откатить если оно больше не нужно. setcap:
iptables:
Код: Выделить всё
sudo /sbin/iptables -D PREROUTING -t nat -p udp --dport 779 -j REDIRECT --to-port 10779