Сейчас на форуме: igorcauret, Rio (+6 невидимых) |
![]() |
eXeL@B —› Вопросы новичков —› Помогите решить уравнение расчета проверки пароля |
Посл.ответ | Сообщение |
|
Создано: 06 апреля 2015 08:15 · Личное сообщение · #1 Добрый день! Ситуация такова имеется ЧПУ станок система ITNC530 последнее время выползло окно с требованием ввести пароль так как прошло 2000 часов его работы, и надо провести его сервисное обслуживание производителем . В связи с санкциями немцы, а они производители станка больно то не хотят с нами общаться. Вообщем решил я попробовать сам добыть пароль сделал бекап системы нашел как я думаю те файлы которые как раз отвечают за проверку пароля . Пароль генерируется по ID ключа он есть. Ну вот дальше привожу код Python 2.7. Code:
Вот вставил участок кода который как я думаю отвечает за проверку пароля, теперь собственно вопросы которые меня пока ставят в тупик и заставили обратится к Вам Code:
Вот эта функция self.smartKeyID как я понял равна self.smartKeyID = 130000161 А вот ,что это такое self.m_BTIndex это ID моего ключа? И еще я не знаю как решить вот эту формулу Code:
Мне непонятен вот этот участок (self.smartKeyID ^(((self.smartKeyID%7)+1)*0x06000000 Ну вот вкратце объяснил проблему , да часы переводить на системе пробовал словил глюк, станок начал ощутимо притормаживать. Патчить не вариант .Да прикладываю полностью скрипт . ![]() ![]() |
|
Создано: 06 апреля 2015 11:11 · Поправил: DimitarSerg · Личное сообщение · #2 EvgenyAly пишет: И еще я не знаю как решить вот эту формулу Я так понял её и не надо "решать". Это в одну сторону расчёт m_iKeyPw (self.m_iKeyPw = value1 + value2), а проверка вроде isInspektionKeyValid. Как я вижу - надо только свой smartKeyID и BTIndex в функу передать и получить готовый ключ. ----- ds ![]() |
|
Создано: 06 апреля 2015 12:03 · Личное сообщение · #3 m_BTIndex читается из файла basetechnology.xml, вот тут код: Code:
По коду видно что сначала оно читает тип вашего станка с COM-порта, потом выбирает m_BTIndex согласно типу станка (m_MTypNummer). Выше оно читает SmartKeyID с СОМ порта двумя способами. Code:
Согласно коду внутри CallBackSmartKeyID и CallBackKeySwitchID выходит следующее: Если первый способ чтения сработает, то smartKeyID будет равен прочитанному значению. Если первый способ не сработает, то smartKeyID будет равен либо 130000161 либо 0. ![]() |
|
Создано: 06 апреля 2015 12:21 · Личное сообщение · #4 не может у ЧПУ станка стоят защита в каких то питон файлах если что то и есть, то с ком порта итд куда отправляются какие то ответы на полученные хеши(результаты) я так думаю Добавлено спустя 1 минуту все начало темы ![]() |
|
Создано: 06 апреля 2015 13:00 · Личное сообщение · #5 Ну да там тоже я запостил просто там по существу ничего пока не подсказали поэтому сюда обратился. Защита конечно не может ,в моем случае это не защита а надоедливый банер просящий бабла. На функцианальность никак не влияющий, но все же когда все оплачено и опять денег просят как то напрягает. Добавлено спустя 3 минуты DimitarSerg пишет: Я так понял её и не надо "решать". Это в одну сторону расчёт m_iKeyPw (self.m_iKeyPw = value1 + value2), а проверка вроде isInspektionKeyValid. а для чего это тогда EvgenyAly пишет: value1 = (self.smartKeyID ^(((self.smartKeyID%7)+1)*0x06000000-1))+100000000 value2 = (65535 ^( self.m_BTIndex*(((self.m_BTIndex%7)+1) + 1000))) * 10000000 ![]() |
|
Создано: 06 апреля 2015 14:29 · Личное сообщение · #6 |
|
Создано: 06 апреля 2015 14:47 · Личное сообщение · #7 |
|
Создано: 06 апреля 2015 15:05 · Личное сообщение · #8 smartKeyID у меня есть официальный лицензионный, а вот с этим я не совсем понял self.m_BTIndex , а за разумные деньги никто не возьмется помочь ,просто станок не мой ![]() ![]() ![]() |
|
Создано: 06 апреля 2015 15:25 · Личное сообщение · #9 Берете файл basetechnology.xml, ищите там данные между двумя тэгами BASIS и MTYP. Где MTYP тип станка, а BASIS это ваш m_BTIndex, потом подставляете smartKeyID и m_BTIndex сюда (вместо 11111111 и 222222222): Code:
Сохраняете как .py файл запускаете и наслаждаетесь результатом. PS. Если не знаете какой у вас MTYP, то действуйте перебором. ![]() |
![]() Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг" |
Создано: 06 апреля 2015 18:08 · Личное сообщение · #10 iTNC 530 - это слово мне знакомо! ![]() BfoX пишет: а smartKeyID это случаем не номер ключа smartKey/eutron? речь идет о DMG MORI SMARTkey https://ru.trademarks.directory/view/DE500000307501779/ эта хрень в стойку втыкается, наскольк я помню! EvgenyAly а как Вы вытаскивали файлы? Там, вроде, кроме основной папки расшаренной (которую через TNCremoNT можно юзать открыто), существуют две системные папки, которые запаролены. ![]() |
|
Создано: 06 апреля 2015 18:22 · Личное сообщение · #11 |
|
Создано: 06 апреля 2015 18:38 · Личное сообщение · #12 |
![]() Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг" |
Создано: 06 апреля 2015 18:45 · Личное сообщение · #13 EvgenyAly пишет: Через tncremo и вытаскивал делал бекап системы на симулятор itnc530 Там жетский диск должен стоять, к нему доступа прямого нет? Питоновские файлы в отдельной папке хранятся? EvgenyAly пишет: plc 807667 в смысле, коды? Code:
там, кстати у этой чпшуной фирмы HEIDENHAIN (может путаю) должно существовать удаленное подключенние к стану (при условии корректной настройки сети с выходом в инет). Я читал в гайдах по станку с iTNC 530. Добавлено спустя 1 минуту BfoX пишет: так все же эта хрень DMG MORI SMARTkey - донгл или нет? я думаю нечто среднее между донглом и картой доступа, которой контролирует этот самый доступ к станку (оператор, наладчик, рабочий, инженер по обслуживанию). ![]() |
|
Создано: 06 апреля 2015 21:00 · Поправил: EvgenyAly · Личное сообщение · #14 |
![]() Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг" |
Создано: 07 апреля 2015 17:40 · Личное сообщение · #15 EvgenyAly пишет: доступ к hdd есть ко мне попал список файлов в PLC - ничего интересного, основные данные в SYS лежат?? а от него какой дер паролен?EvgenyAly пишет: я тоже думаю что это нечто среднее там 4 уровня доступа переключаются кнопкой я еще прочитал, что ось iTNC не запустится без данного девайса (DMG MORI SMARTkey), но это ж, наверняка, можно "вылечить" ![]() сама ITNC - linux подобная ось ?! ![]() |
|
Создано: 07 апреля 2015 17:48 · Поправил: EvgenyAly · Личное сообщение · #16 |
|
Создано: 07 апреля 2015 18:34 · Поправил: dosprog · Личное сообщение · #17 ELF_7719116 пишет: сама ITNC - linux подобная ось ?! Там такая ситуация. Изначально они тулили интерфейс танка(iTNC) на самодельный сильно порезанный Linux. Назвали они эту свою чудо-недо-линукс-систему HerOS (придумали..). На этой системе запускается интерфейс станка - программа называется iTNC. На 1Гб флеш-диске три логических диска - система, параметры, программы ЧПУ. Логические диски отформатированы в FAT16. В симуляторе, кстати, тоже три каталога - SYS, PLC, PRG - это типа они, те логические диски. Поскольку привередливые юзеры не хотят чудо-HerOS, а желают вожделенную винду, хейденхайнщики придумали, как запустить свою iTNC под этой самой виндой - заделали самодельный эмулятор своего HerOS'a для винды, назвали его WinHerOS. Теперь для любителей винды они предлагают вариант - не HerOS, а винда+WinHerOS. СтОит, естественно, значительно дороже. EvgenyAly пишет: Вот только не получается пока прогу на эмуляторе запустить. Всё типа как на станке, какие проблемы?.. Эта iTNC программа очень высокого уровня (в смысле верхнего), разницы нету никакой - винда, HerOS, - в ней всё едино. ![]() |
|
Создано: 07 апреля 2015 20:11 · Личное сообщение · #18 |
|
Создано: 07 апреля 2015 21:33 · Поправил: dosprog · Личное сообщение · #19 reversecode пишет: не может у ЧПУ станка стоят защита в каких то питон файлах если что то и есть, то с ком порта итд куда отправляются какие то ответы на полученные хеши(результаты) я так думаю В данном случае может. Считается, что в тех питон-файлах никто не лазит. Хотя так считать действительно странно. Впрочем, это .лядские художества заводчан фирмы DMG MORI, открывших для себя прелесть программирования на питоне. В двоичные файлы системы фирма Heidenhain им бы лазить так смело не позволила. Думаю, у них там действует лицензионное соглашение, где это оговорено. EvgenyAly пишет: а на эмуляторе то есть на винде я не знаю как запустить попробую поковырять завтра может чего и выйдет ---Удален ошибочный вариант на Си с переполнением unsigned long --- А вообще можно попробовать поковырять функцию в питоновском файле MachineCheck.py и засунуть его обратно на станок, тогда пароль можно вводить любой понравившийся: Code:
![]() |
|
Создано: 08 апреля 2015 11:22 · Личное сообщение · #20 Чем дальше тем интересней получилось два варианта расчета пароля ,станок пока все равно в работе к нему не подпускают просто для себя интересно какое решение верное вот это от dosprog: Code:
Или вот это от bbuk : Code:
Да и вот этот скрипт от dosprog : Code:
не получилось запустить пишет ошибка синтаксиса пробовал и на питоне Python27 и Python34 просто результаты разные ![]() ![]() |
|
Создано: 08 апреля 2015 11:32 · Личное сообщение · #21 |
|
Создано: 08 апреля 2015 11:54 · Поправил: dosprog · Личное сообщение · #22 EvgenyAly пишет: просто результаты разные ![]() проверил пару тамошних результатов от OKOB'а - у меня вышли другие. Не знаю, чьи верные. Потому и выложил свой вариант. Проверяйте. Программа на Си. --Добавлено-- EvgenyAly пишет: ... пробовать все подряд или еще порассуждать Погляжу ещё в чём там дело. В Python2.7 действительно результаты, совпадающие с результатами OKOB'а. --Добавлено2-- Различные результаты на Си и на Питоне2.7 получаются при вычислении value2: value2 = (65535 ^(m_BTIndex*(((m_BTIndex%7)+1) + 1000))) <-----тут ещё результаты совпадают value2= value2*10000000 <---------------------------а тут происходит умножение с переполнением 32-бит unsigned long в Си, в Питоне же результат расширяется автоматически до 64 бит, поэтому оказывается верным. ********************************************************************************* ИТАК, вариант от OKOB'а на Питоне верный, мой вариант ошибочный. Потру-ка я предыдущий пост, чтобы не морочить голову... ********************************************************************************* --Добавлено3-- Просто из принципа - исправленный вариант на Си, но костыльно, через использование double: Code:
Code:
Результаты совпадают с питоновской процедурой. ![]() |
|
Создано: 09 апреля 2015 10:09 · Личное сообщение · #23 |
|
Создано: 09 апреля 2015 13:27 · Поправил: dosprog · Личное сообщение · #24 Попробуйте запихнуть на станок поправленный файл MachineCheck.py. Там и старый и новый файлы, старый в ней сохранён как MachineCheck_OLD.py . --Добавлено-- 3 июля 2015 г. )) -- и ни ответа, ни привета.. ![]() |
![]() |
eXeL@B —› Вопросы новичков —› Помогите решить уравнение расчета проверки пароля |