Hale 1 October 21 Posted October 21 · Report post Нам продали оборудование связанное с управляющим софтом под Виндовз64, нарисованным на LabView (ну по внешним признакам так получается, без указания деталей). Интерфейс управления - ком-порты по USB. Точнее в виндовз видны только ком-порты, других устройств при подключении USB-кабеля не появляется. Очень-очень хочется написать собственный софт. Но для этого надо разобраться с протоколом общения с железом. Никак не могу заснифить передаваемое содержимое. Попробовал Serial Port Sniffer by Electronic Team, Free Serial Analyzer by HHD. Ни та ни другая не видят соединения. Даже инициализации порта. Т.е. если порт открыть в терминале, скажем, фирменная программа ругнется что порт недоступен и отключит канал. А если проследить сниффером как она пользуется портом в штатном режиме - пустота. Т.е. вообще ничего. Это какая-то фича LabView с защитой от фнифферов? Или они используют RS232 мост просто для идентификации, а потом шлют данные байпасом по USB протоколу? Но это нелепо т.к. для этого в принципе не нужен компорт. В общем вот такая незадача. P.S. на линукс перенести не получится т.к. нам поставили одну лицензированную копию записанную на конкретную предустановленную OS Windows. И да, их инженер преконфигурировал на определенные порты и я честно осторожничаю менять порты номерами и прокладывать софтовый мост на виртуальный порт. Слетит шифрованный конфиг. потом объясняться долго и дорого. Quote Share this post Link to post Share on other sites More sharing options...
megajohn 8 October 21 Posted October 21 · Report post 2 часа назад, Hale сказал: Точнее в виндовз видны только ком-порты, других устройств при подключении USB-кабеля не появляется Может там композитное устройство ? ( или как-то так звучит ) Посмотрите USB порт через эту программу ( ну и сюда можно логи ) https://www.usbdev.ru/files/usbtreeview/ Quote Share this post Link to post Share on other sites More sharing options...
mantech 53 October 21 Posted October 21 · Report post 8 часов назад, Hale сказал: Интерфейс управления - ком-порты по USB. Точнее в виндовз видны только ком-порты, других устройств при подключении USB-кабеля не появляется. А разобрать-то устройство нельзя? Может там стоят мосты усб-уарт, туда и подцепиться уже проще... Quote Share this post Link to post Share on other sites More sharing options...
_pv 78 October 21 Posted October 21 · Report post у этих ваших лабвью там есть собственный NI I/O Trace, который всё общение через ихнюю дурацкую visu сниффить умеет. Quote Share this post Link to post Share on other sites More sharing options...
jcxz 241 October 21 Posted October 21 · Report post 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. Quote Share this post Link to post Share on other sites More sharing options...
Hale 1 October 22 Posted October 22 · Report post 21 hours ago, megajohn said: Может там композитное устройство ? ( или как-то так звучит ) Посмотрите USB порт через эту программу ( ну и сюда можно логи ) https://www.usbdev.ru/files/usbtreeview/ интересно конечно. Только зачем в любительской программе целиком на винапи с какбы открытым кодом использовали процедуры маскировки бинарного кода? как-то стремно. Я взял оригинальную майкрософтовскую из дебагтулс. Но ничего там особого пока не заметил. Мосты как мосты сидят на портах. Моэет я неправильно смотрю. 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? На Алике или Амазоне такие нарыть можно? Quote Share this post Link to post Share on other sites More sharing options...
mantech 53 October 22 Posted October 22 · Report post 32 минуты назад, Hale сказал: нельзя. как я сказал все залицензировано до безобразия. а родной софт - 💩 Странно, т.е. железо трогать боитесь, а переписать софт управления - это не нарушение лицензии?))) 34 минуты назад, Hale сказал: Как я сказал, компортовые не работают. Но USBTrace не пробовал. У него в бесплатной версии функционала хватит? USBLuzer тоже не читает что-ли? Quote Share this post Link to post Share on other sites More sharing options...
megajohn 8 October 22 Posted October 22 · Report post 54 минуты назад, Hale сказал: интересно конечно. Только зачем в любительской программе целиком на винапи с какбы открытым кодом использовали процедуры маскировки бинарного кода? как-то стремно. хм, локальный касперский не ругался на эти файлы UsbTreeView_x64 на https://www.virustotal.com/gui/home/upload показало 0/74 UsbTreeView_Win32 - 2/74 Тады звиняйте Quote Share this post Link to post Share on other sites More sharing options...
Hale 1 October 22 Posted October 22 · Report post > а переписать софт управления - это не нарушение лицензии?))) Так я не буду переписывать. Я просто хочу выяснить команды и формат данных. Тогда на визуале набросаю сценарии автоматизации вообще без их софта. А их софт пусть стоит нетронутый, и железо не разобранное за всеми пломбами. Короче я понял, надо пробовать не ком-порт, а USB сниферы и анализировать пакеты, може там что-то вылезет. Quote Share this post Link to post Share on other sites More sharing options...
_pv 78 October 22 Posted October 22 · Report post 1 hour ago, Hale said: Это не наши. полностью согласен. 1 hour ago, Hale said: Виза у нас изначально стоит тектрониксовская и агилентовская в режиме совместимости. Хотя возможно они используют что-то встроенное в софт. Этот NI I/O Trace можно как-то отдельно заполучить? https://knowledge.ni.com/KnowledgeArticleDetails?id=kA00Z000000kJcQSAU правда там иногда даже собственное ПО/железо от NI через жопу работает, а со сторонними якобы совместимыми может ещё веселее быть. но я этим io trace какой-то обмен между железкой и labview через usb->485 смотрел как-то. Quote Share this post Link to post Share on other sites More sharing options...