Jump to content
    

Компорт-сниффер под Виндоуз и ЛабВию

Нам продали оборудование связанное с управляющим софтом под Виндовз64, нарисованным на LabView (ну по внешним признакам так получается, без указания деталей).

Интерфейс управления - ком-порты по USB. Точнее в виндовз видны только ком-порты, других устройств при подключении USB-кабеля не появляется.

Очень-очень хочется написать собственный софт. Но для этого надо разобраться с протоколом общения с железом.

Никак не могу заснифить передаваемое содержимое.

Попробовал Serial Port Sniffer by Electronic Team, Free Serial Analyzer by HHD.

Ни та ни другая не видят соединения. Даже инициализации порта.

 

Т.е. если порт открыть в терминале, скажем, фирменная программа ругнется что порт недоступен и отключит канал. 

А если проследить сниффером как она пользуется портом в штатном режиме - пустота. Т.е. вообще ничего.

 

Это какая-то фича LabView с защитой от фнифферов? Или они используют RS232 мост просто для идентификации, а потом шлют данные байпасом по USB протоколу? Но это нелепо т.к. для этого в принципе не нужен компорт. В общем вот такая незадача. 

 

P.S. на линукс перенести не получится т.к. нам поставили одну  лицензированную копию записанную на конкретную предустановленную OS Windows. И да, их инженер преконфигурировал на определенные порты и я честно осторожничаю менять порты номерами и прокладывать софтовый мост на виртуальный  порт. Слетит шифрованный конфиг. потом объясняться долго и дорого.

Share this post


Link to post
Share on other sites

2 часа назад, Hale сказал:

Точнее в виндовз видны только ком-порты, других устройств при подключении USB-кабеля не появляется

Может там композитное устройство ? ( или как-то так звучит )

Посмотрите USB порт через эту программу ( ну и сюда можно логи )

https://www.usbdev.ru/files/usbtreeview/

Share this post


Link to post
Share on other sites

8 часов назад, Hale сказал:

Интерфейс управления - ком-порты по USB. Точнее в виндовз видны только ком-порты, других устройств при подключении USB-кабеля не появляется.

А разобрать-то устройство нельзя? Может там стоят мосты усб-уарт, туда и подцепиться уже проще...

Share this post


Link to post
Share on other sites

у этих ваших лабвью там есть собственный NI I/O Trace, который всё общение через ихнюю дурацкую visu сниффить умеет.

Share this post


Link to post
Share on other sites

11 часов назад, Hale сказал:

Это какая-то фича LabView с защитой от фнифферов? Или они используют RS232 мост просто для идентификации, а потом шлют данные байпасом по USB протоколу? Но это нелепо т.к. для этого в принципе не нужен компорт.

Воспользуйтесь любым USB-сниффером. Например USBTrace или другим. Им можно посмотреть и как именно используется USB-устройство и что оно имеет (интерфейсы, эндпоинты, etc.).

11 часов назад, Hale сказал:

Попробовал Serial Port Sniffer by Electronic Team, Free Serial Analyzer by HHD.

Ни та ни другая не видят соединения. Даже инициализации порта.

 

Т.е. если порт открыть в терминале, скажем, фирменная программа ругнется что порт недоступен и отключит канал. 

Если программа позволяет задавать номер COM-порта, то просниффить COM-порт можно просто:

С помощью TDST (https://tibbo.com/soi/software.html) создаёте 2 виртуальных COM-порта, замкнутых друг на друга (спарка COM-портов): один из них - клиент, второй - сервер.

Пишете своё приложение, которое тупо открывает COM-порт железяки и сервер-COM-порт спарки. В приложении просто копируете байты из одного порта в другой. В обе стороны. Потом запускаете вражеское приложение. Указываете ему на клиент-COM-порт спарки. Как только вражеское приложение открыло COM-порт и начало общаться, вы в своём приложении видите весь поток байтов в обе стороны. И можете его исследовать или записывать как угодно.

При конфиге TDST нужно конечно поотключать всё ненужное у виртуальных портов спарки.

Параметры открытия COM-порта железяки (скорость, etc.) узнаете при помощи USBTrace. Если конечно они имеют значение.

 

PS: Вместо спарки виртуальных COM-портов, можно использовать спарку 2-х реальных COM-портов. Замкнутых между собой нуль-модемным кабелем. Только это менее надёжный способ, так как не известно - с какими параметрами порта (скорость, кол-во бит) вражеская программа открывает порт. И хватит ли скорости при этих параметрах (ведь оригинальные COM-порты - это USB-CDC, а для них параметры открытия не влияют на скорость)? Лучше использовать спарку виртуальных COM-портов.

 

PPS: Также можно обойтись одним виртуальным портом TDST (клиентским). А в своём приложении вместо серверного COM-порта TDST, открывать TCP-порт (в режиме сервера) и на него принимать входящее соединение от клиентского COM-порта TDST. А байты уже гонять между открытым TCP-сокетом и COM-портом железяки. Это может быть сложнее (так как придётся в своём приложении работать и с COM-портом (Serial WinAPI) и с TCP-стеком (winsock)), но надёжнее.

 

PPPS: 3-й способ - написать своё приложение, в котором через hook-API винды перехватить всё общение вражеской программы с COM-портом железяки. Но это только теоретически - хуки для таких целей я не использовал (только для других). Не уверен полностью, что можно ими перехватывать всю работу с "Serial WinAPI". Надо почитать. Но в то же время - штатные COM-снифферы ведь как-то работают? А работают они скорее всего как раз через hook-API.

Share this post


Link to post
Share on other sites

21 hours ago, megajohn said:

Может там композитное устройство ? ( или как-то так звучит )

Посмотрите USB порт через эту программу ( ну и сюда можно логи )

https://www.usbdev.ru/files/usbtreeview/

 image.thumb.png.39c67a2582df5c6bdcd990246fb63fd4.png
интересно конечно. Только зачем в любительской программе целиком на винапи с какбы открытым кодом использовали процедуры маскировки бинарного кода? как-то стремно.

Я взял оригинальную майкрософтовскую из дебагтулс. Но ничего там особого пока не заметил. Мосты как мосты сидят на портах. Моэет я неправильно смотрю.

 

15 hours ago, mantech said:

А разобрать-то устройство нельзя? Может там стоят мосты усб-уарт, туда и подцепиться уже проще...

нельзя. как я сказал все залицензировано до безобразия. а родной софт - 💩
Стоят скорее всего, не под Атмелину же эмулятор написали.

15 hours ago, _pv said:

у этих ваших лабвью там есть собственный NI I/O Trace, который всё общение через ихнюю дурацкую visu сниффить умеет.

Это не наши. У нас его нет. Программа уже скомпилена и установлена инженером производителя  с привязкой к ПК. Конфиги выглядят зашифроваными, или это какой-то лабвьюшный бинарный формат.

Виза у нас изначально стоит тектрониксовская и агилентовская в режиме совместимости. Хотя возможно они используют что-то встроенное в софт. Этот NI I/O Trace можно как-то отдельно заполучить?

>Воспользуйтесь любым USB-сниффером.

Как я сказал, компортовые не работают. Но USBTrace  не пробовал. У него в бесплатной версии функционала хватит? 

>Если программа позволяет задавать номер COM-порта, то просниффить COM-порт можно просто:

Конфиги заблокированы и лецензия подписана о недопустимости изменения кода или конфигурации. Поэтому ищу неразрущающий метод. Писать свое приложение я не квалифицирован, а других просить человекочасы надо пробивать. Но софт-мосты существуют уже написанные. Не хочу прост осломать чтобы программа "домой" не отзвонилась.

 

Я думаю, сниферы ваш 3 вариант и реализуют.

 

Поэтмоу вопрос, а существуют ли хардверные сниферы для USB-RS232 мостов со стороны USB? На Алике или Амазоне такие нарыть можно?

Share this post


Link to post
Share on other sites

32 минуты назад, Hale сказал:

нельзя. как я сказал все залицензировано до безобразия. а родной софт - 💩

Странно, т.е. железо трогать боитесь, а переписать софт управления - это не нарушение лицензии?)))

34 минуты назад, Hale сказал:

Как я сказал, компортовые не работают. Но USBTrace  не пробовал. У него в бесплатной версии функционала хватит? 

USBLuzer тоже не читает что-ли?

Share this post


Link to post
Share on other sites

54 минуты назад, Hale сказал:

интересно конечно. Только зачем в любительской программе целиком на винапи с какбы открытым кодом использовали процедуры маскировки бинарного кода? как-то стремно.

хм, локальный касперский не ругался на эти файлы

UsbTreeView_x64 на https://www.virustotal.com/gui/home/upload показало 0/74

UsbTreeView_Win32 - 2/74

Тады звиняйте

vvvvv.png

Share this post


Link to post
Share on other sites

> а переписать софт управления - это не нарушение лицензии?)))

Так я не буду переписывать. Я просто хочу выяснить команды и формат данных. Тогда на визуале набросаю сценарии автоматизации вообще без их софта. А их софт пусть стоит нетронутый, и железо не разобранное за всеми пломбами.

Короче я понял, надо пробовать не ком-порт, а USB сниферы и анализировать пакеты, може там что-то вылезет.

Share this post


Link to post
Share on other sites

 

1 hour ago, Hale said:

Это не наши.

image.jpeg.4d0411b551369c0b080c45d3af1fe5de.jpeg

полностью согласен.

1 hour ago, Hale said:

Виза у нас изначально стоит тектрониксовская и агилентовская в режиме совместимости. Хотя возможно они используют что-то встроенное в софт. Этот NI I/O Trace можно как-то отдельно заполучить?

https://knowledge.ni.com/KnowledgeArticleDetails?id=kA00Z000000kJcQSAU

правда там иногда даже собственное ПО/железо от NI через жопу работает, а со сторонними якобы совместимыми может ещё веселее быть.

но я этим io trace какой-то обмен между железкой и labview через usb->485 смотрел как-то.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...