Обратный Инженерный Протокол Часов с использованием Wireshark
У меня есть часы с проприетарным программным обеспечением, которое опрашивает удары пальцем по нему, программное обеспечение находится на сервере и подключается к часам через Ethernet. Я хочу попробовать написать свой собственный скрипт, который опрашивает эти часы, так как программа не может делать это чаще, чем раз в час.
Я установил wireshark на сервере и опросил таймер, затем проследил за потоком tcp, чтобы я мог видеть все данные, которые были отправлены туда и обратно, и я вижу, что он выдает: .00P. на порте 3001 часов времени часы затем отвечают всеми ударами.
Я попытался использовать putty и подключиться к порту 3001 и скопировать и вставить эту команду, однако ничего не было возвращено, затем я понял, что периоды в команде - потому что мой редактор не может отображать фактические данные, которые в блокноте выглядят как обратные буквы L.
В любом случае, как лучше всего попытаться отправить эту команду, как она есть в двоичном файле, который я сохранил из wireshark, есть ли способ отправить пакет, содержащий данные из файла, на таймер и как-то записать результаты?
2 ответа
Трудно сказать что-либо из одного пакета - довольно быстрый способ:
... заменить часы один раз в ночное время:
например, настроить Linux с тем же IP-адресом, что и у часов (с временным отключением часов),
Затем просто запустите netcat, дайте ему прослушать:3001, передайте в файл - и дождитесь опроса.
(Я использую его для опроса TCP, поэтому я предполагаю, что его можно захватить в режиме прослушивания)
Кроме того, вы можете подключить часы к нему - однажды зная, как сервер опрашивает.
Если вы сохранили бинарный файл из записи WireShark, следующим хорошим шагом будет более пристальное внимание к этому файлу. Как вы обнаружили, блокнот, вероятно, не справится с этой задачей. Используйте шестнадцатеричный редактор, такой как frhed, чтобы точно понять, какие байты отправляются.
После определения команды вы можете написать скрипт для установления TCP-соединения и точно отправить команду. Вы можете использовать PowerShell или Python для этой цели.