Перейти к содержимому
Форумы SkyCentre Прыжки с парашютом

Recommended Posts

Вот такая вот мыслишка пришла в голову. Не смотря на то что я уже давно не прыгаю скайдайв я считаю отсутствие опенсурс проги для снятия данных и учёта оных с Нептуна минусом. На мою просьбу прислать мне протокол передачи и стандарты по которым происходит данная передача информации с нептуна альти-2 ответили что не могут так как у них договор с паралогом. Может кто сможет? С удовольствием помогу в разработке программы. Так как я больше знаком с прикладным нежели с системным программированием.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ну чисто теоретически (не учитывая возможные юридические барьеры) можно отсниферить обмен данных между девайсом и паралогом. Есть такие штуки для винды? Как альтернатива - линух.

Правда paralog под линухом пока еще толком не заработал с нептуном. Недавно из паралога прислали, что нашли таки баг в стеке ирда, который не позволял им нормально работать. Поправка должна была выйти с очередной версией ваниллы. Номера патчей и ядра я еще не уточнял.

Лично мне интересно нептун именно с линухом связать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Если нужны снифферы под винду, то это прямая дорога с Русиновичу на http://www.sysinternals.com , где лежит куча снифферов под все, что только можно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

честно говоря, не помню на сисинтерналсах ничего сниферящего ЮСБшные устройства, но это, скорее всего, не сложная задача. во всяком случае когда речь идет о конкретном устройстве.

я бы справился, но вопрос во времени и целесообразности.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Если у Русиновича нет, то можно взять здесь http://sourceforge.net/projects/usbsnoop/ и здесь http://benoit.papillault.free.fr/usbsnoop/doc.php.en Ну, а настоящие джедаи старой крэкерской школы, начинавшие еще во времена FIDO и Turbo Debugger, заюзают для этого WinIce :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А если такой вариант.. Берем Neptune Maintenance Utility.. в поставке несколько DLL в том числе для работы с IrCom импортируем список функций. И пробуем с ними разобраться. Просто рассуждая...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

:)

да не нужны здесь ни ВинАйс, ни особые логические измышления.

паттерн "мэн ин зе миддл":

пишется драйвер, регистрится под таким же именем, как нептуновский. родной драйвер переименовывается и загружается под низ. фсе.

если там без драйверов, то пишется ДЛЛина, обзывается как нептуновская, родная переименовывается и подгружается. фсе.

это проще, чем ковырять дебагером утилиту.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А мейтенанс разве че-нить с записями логбука делает?

Драйверы девайсов, подключаемых к паралогу, вроде сделаны на яве, как и сам паралог.

Девайс драйвера нет - все идет через стандартные средства ирда.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
А мейтенанс разве че-нить с записями логбука

Ну вообще он имеет достаточно общирный доступ к девайсу, и перепрошивка и конфигурация девайса.. наверняка есть доступ к логбуку

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

для перепрошивки логбук не нужен

а у меня в нем только перепрошивка доступна

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Посмотри внимательней.. функционал у утилиты достаточно богат. Я после прошивки не стал трахаться с кнопками а через NMU все отконфигурил. Блин под рукой ничего нет.. пойдет хоть implib.exe из делфей. список функций глянуть

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

На сколько я понимаю, NMU полнофункционально работает с версиями >=3.x.x, а у меня 2.6.2 по-моему.

При апгрейде до 3.x.x трется логбук, как пишут на форуме альти-2. А чтобы забэкапить логбук, нужен паралог с лицензией. А я не хочу покупать на него лицензию, пока он под линухом не заработает. :D

Заколдованный круг :D

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

WINE не пробывал? может через него получиться?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
А если такой вариант.. Берем Neptune Maintenance Utility.. в поставке несколько DLL в том числе для работы с IrCom импортируем список функций. И пробуем с ними разобраться. Просто рассуждая...

Проблема не в API (IDA Pro в руки и вперед), а в протоколе.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

мне так кааца, что если есть ДЛЛина, которая выдает наружу АПИ интерфейс к устройству, то нунах этот протокол.

мало ли чего они там поменяют. зачем с ним ковыряться, если есть высокоуровневый АПИ?

если кому интересно, у меня есть сделанная мною же програмулинка, которая берет любую ДЛЛину, смотрит на нее и генерит 2 файла - .c и .def. если их скомпилять, то получится другая ДЛЛина, которая выдает наружу точно такой же интерфейс, как первая. при загрузке она подгружает оригинальную ДЛЛ, а сама играет роль прокси для доступа к ней. сделано было специально, чтобы легко писать сниферы вызовов разных длл-ек.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
WINE не пробывал?

А в линухе дело даже не в этом. Проблема в том, что ядро (драйвер ирда) некорректно работает с контроллером нептуна.

Багу нашли. Жду, пока появится ядро для моего дистрибутива с этими исправлениями.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
мне так кааца, что если есть ДЛЛина, которая выдает наружу АПИ интерфейс к устройству, то нунах этот протокол.

мало ли чего они там поменяют. зачем с ним ковыряться, если есть высокоуровневый АПИ?

Там скорее всего протокол на уровне

LPBYTE ReadData ();

BOOL WriteData (LPBYTE data);

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Igor ну даже если так, лучше хватать его за это место, чем за DeveiceIoControl.

А ежели сама апликуха сделана на джаве, то дебугать ее нативным дебагером будет кисло...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Так вот в связи с тем что системным программированием я не занимался. Может кто сможет помочь с протоколом если в нём затыка.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Alexandr

извини, помог бы, но во-первых не располагаю подобным прибором ;)

во-вторых не понятно, что будет на выходе

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А может проще паралог поломать ? ;)

Давно руки у меня на него чешутся... :)

Кто-нибудь пробовал это дело. Не думаю, что там много сил на защиту потратили :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Дело не в паломать.. дело в open source :)

странные dll.. попробывал Dependency Walker'ом получить имена функций и обломался...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

jspWin.dll - java Native extension DLL для коммуникации с портом.

Как это понятно из названия, содержит имплементацию нативных функций из класса SerialPortLocal пакета Serialio

вот список функций

// szExportName nExportOrdinal pEntryPoint

{ "_Java_Serialio_SerialPortLocal_SerClosePort@12", 0x0001, NULL },

{ "_Java_Serialio_SerialPortLocal_SerConfigure@12", 0x0002, NULL },

{ "_Java_Serialio_SerialPortLocal_SerFlowTask@12", 0x0003, NULL },

{ "_Java_Serialio_SerialPortLocal_SerGetByte@12", 0x0004, NULL },

{ "_Java_Serialio_SerialPortLocal_SerGetData@20", 0x0005, NULL },

{ "_Java_Serialio_SerialPortLocal_SerGetInstanceLock@8", 0x0006, NULL },

{ "_Java_Serialio_SerialPortLocal_SerGetLibVer@8", 0x0007, NULL },

{ "_Java_Serialio_SerialPortLocal_SerGetPortList@8", 0x0008, NULL },

{ "_Java_Serialio_SerialPortLocal_SerGetStatusAPM@8", 0x0009, NULL },

{ "_Java_Serialio_SerialPortLocal_SerGetTimeoutRx@12", 0x000a, NULL },

{ "_Java_Serialio_SerialPortLocal_SerGetTimeoutTx@12", 0x000b, NULL },

{ "_Java_Serialio_SerialPortLocal_SerOpenPort@12", 0x000c, NULL },

{ "_Java_Serialio_SerialPortLocal_SerPutByte@16", 0x000d, NULL },

{ "_Java_Serialio_SerialPortLocal_SerPutData@20", 0x000e, NULL },

{ "_Java_Serialio_SerialPortLocal_SerRxFlush@12", 0x000f, NULL },

{ "_Java_Serialio_SerialPortLocal_SerRxOverflow@12", 0x0010, NULL },

{ "_Java_Serialio_SerialPortLocal_SerRxReadyCount@12", 0x0011, NULL },

{ "_Java_Serialio_SerialPortLocal_SerSendBreak@16", 0x0012, NULL },

{ "_Java_Serialio_SerialPortLocal_SerSetDTR@16", 0x0013, NULL },

{ "_Java_Serialio_SerialPortLocal_SerSetInstanceLock@12", 0x0014, NULL },

{ "_Java_Serialio_SerialPortLocal_SerSetRTS@16", 0x0015, NULL },

{ "_Java_Serialio_SerialPortLocal_SerSetTimeoutRx@16", 0x0016, NULL },

{ "_Java_Serialio_SerialPortLocal_SerSetTimeoutTx@16", 0x0017, NULL },

{ "_Java_Serialio_SerialPortLocal_SerSigBreak@12", 0x0018, NULL },

{ "_Java_Serialio_SerialPortLocal_SerSigCD@12", 0x0019, NULL },

{ "_Java_Serialio_SerialPortLocal_SerSigCTS@12", 0x001a, NULL },

{ "_Java_Serialio_SerialPortLocal_SerSigDSR@12", 0x001b, NULL },

{ "_Java_Serialio_SerialPortLocal_SerSigFrameErr@12", 0x001c, NULL },

{ "_Java_Serialio_SerialPortLocal_SerSigOverrun@12", 0x001d, NULL },

{ "_Java_Serialio_SerialPortLocal_SerSigParityErr@12", 0x001e, NULL },

{ "_Java_Serialio_SerialPortLocal_SerSigRing@12", 0x001f, NULL },

{ "_Java_Serialio_SerialPortLocal_SerTxBufCount@12", 0x0020, NULL },

{ "_Java_Serialio_SerialPortLocal_SerTxDrain@12", 0x0021, NULL },

{ "_Java_Serialio_SerialPortLocal_SerTxFlush@12", 0x0022, NULL },

с таким раскладом трейсить обмен еще проще - надо подменить класс в jar архиве

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

вот их Java декларации

native int SerGetLibVer();

native int SerOpenPort(SerialConfig serialconfig);

native int SerConfigure(SerialConfig serialconfig);

native int SerClosePort(int i);

native int SerPutByte(int i, byte i_32_);

native int SerPutData(int i, byte[] is, int i_33_);

native int SerGetByte(int i);

native int SerGetData(int i, byte[] is, int i_34_);

native int SerRxFlush(int i);

native int SerTxFlush(int i);

native int SerTxDrain(int i);

native int SerRxReadyCount(int i);

native int SerTxBufCount(int i);

native int SerRxOverflow(int i);

native int SerSetDTR(int i, boolean bool);

native int SerSetRTS(int i, boolean bool);

native int SerSendBreak(int i, int i_35_);

native int SerSetTimeoutRx(int i, int i_36_);

native int SerSetTimeoutTx(int i, int i_37_);

native int SerGetTimeoutRx(int i);

native int SerGetTimeoutTx(int i);

native int SerSigCTS(int i);

native int SerSigDSR(int i);

native int SerSigCD(int i);

native int SerSigFrameErr(int i);

native int SerSigParityErr(int i);

native int SerSigOverrun(int i);

native int SerSigRing(int i);

native int SerSigBreak(int i);

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

×
×
  • Создать...