| Сейчас на форуме: 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 Ну вот вкратце объяснил проблему , да часы переводить на системе пробовал словил глюк, станок начал ощутимо притормаживать. Патчить не вариант .Да прикладываю полностью скрипт .   4dd3_06.04.2015_EXELAB.rU.tgz - MachineCheck.py
![]()  | 
| 
 | 
Создано: 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 минуту все начало темы   | Сообщение посчитали полезным: dosprog | 
| 
 | 
Создано: 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, то действуйте перебором.   | Сообщение посчитали полезным: EvgenyAly | 
![]() Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг"  | 
Создано: 06 апреля 2015 18:08  · Личное сообщение · #10 iTNC 530 - это слово мне знакомо!   Есть TNCremoNT, написанный на VB, который просто проапргрейдить, наплевав на визги проги о просьбе подключить донгл. See also: https://exelab.ru/f/action=vthread&forum=2&topic=22400BfoX пишет: а smartKeyID это случаем не номер ключа smartKey/eutron? речь идет о DMG MORI SMARTkey https://ru.trademarks.directory/view/DE500000307501779/ эта хрень в стойку втыкается, наскольк я помню! EvgenyAly а как Вы вытаскивали файлы? Там, вроде, кроме основной папки расшаренной (которую через TNCremoNT можно юзать открыто), существуют две системные папки, которые запаролены.   | Сообщение посчитали полезным: EvgenyAly | 
| 
 | 
Создано: 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  | 
| eXeL@B —› Вопросы новичков —› Помогите решить уравнение расчета проверки пароля | 

 






 я по найму работаю за зарплату, а от репутации в карму себе на работе не отказался бы
 Есть TNCremoNT, написанный на VB, который просто проапргрейдить, наплевав на визги проги о просьбе подключить донгл. See also: https://exelab.ru/f/action=vthread&forum=2&topic=22400

 Для печати