Ресурсы Vericut:  Кодирование ctl и mch файлов.

Как Вы знаете начиная с версии 6.1 в Vericut появилась возможность кодировать (шифровать) файлы настройки контролеров и станка. Лучше Вам об этом расскажут слайды из файла презентации фирмы: цель, зачем и что.

Что же мы уяснили из этой презентации? В том, что xctl и xmch состоят из 1-го файла и следующих свойств:

  1. xctl = ctl + sub (подпрограммы для конкретной стойки), точнее - xctl включает в себя все ссылочные файлы так или иначе связанные с ctl.
  2. xmch = mch + stl\ply (модели станка)
  3. xctl\xmch - бинарные и сжатые
  4. после кодирования xctl\xmch файлы контролера стойки и модели станка не могут быть редактированы средствами Vericut.
  5. X-file cannot be decrypted/expanded

Вот последние свойство мы и попытаемся проверить.

День 1 и День 2.

 В эти дни я ознакомился с native-библиотекой \cgtech\windows\vericut\CGTech.dll которая обрабатывает вызовы из классов: \cgtech\classes\CGTech.jar  и   \cgtech\classes\iText.jar

Несмотря, на угрожающие и устрашающие тексты в классах и коде dll:

 EncryptFile

@(#)mulder.c 17.2

*.xmch;*.xctl *.mch;*.ctl
.nt.MulderNoInputFileSpecified:No input file specified.
.nt.MulderProcessingComplete:Created encrypted file: {%s name}
.nt.MulderInternalError:Internal error!
.nt.MulderCannotOpenOutputFile:Cannot open output file
.nt.MulderProcessing:Processing...
.nt.MulderFileCompleted:File read completed. @(#)nt.c

private static final String enkwd = "BUILD_ENCRYPTED_";

 Что то толковое или важное обнаружить не удалось. Всё было стандартным. Классы для работы zip\pdf\lzw\jpeg\avi\xml\.... Каких то алгоритмов отвечающих за сильную и стойкую криптографию я не обнаружил.

 

День 3.

  Я решил обдумать сложившееся положение и отмотал на велосипеде все ( 6+17+2+14+8 ) км. Очень сильно болели ноги и попа, на которую трудно было сесть. Открыл сезон.
 

День 4.  В этот день я решил поподробнее изучить формат закодированного файла.
  • Размер x-файла был меньше чем исходный файл.
  • их содержимое было разным
  • у всех файлов был один и тот же одинаковый заголовок, состоящий из 10 символов:

  

  Меньший размер закодированного файла говорил лишь о том, что файл после кодирования был сжат. Алгоритм сжатия был неизвестен.

  Меня привлекли эти 10 символов - они были очень знакомы и я не мог вспомнить, где  видел подобное. Первые 3-и символа "CGT" - были явно связаны с фирмой CGTech, а вот остальные "...91AY&SY" были знакомы, но вспомнить не удавалось.

  Что-то нашло на меня и я решил проверить заголовки сжатых архивов, файлов сжатых разными архиваторами:

7z формат
Bza формат
Rar формат
Zip формат - характерные PK+8 символов=10
Bzip2 формат ( http://ru.wikipedia.org/wiki/Bzip2 )

О, а вот и знакомые  BZh91AY&SY.  Дальше, после 1 сек раздумья. Я открыл xctl-файл в редакторе поддерживающем бинарное редактирование ( Блокнот - не подойдет !!!), заменил CGT на BZh, сохранил. Затем попробывал открыть измененный xctl в архиваторе, в данном случае в WinRar-e. Файл открылся без ошибок!!! Разархивировал и присвоил файлу расширение .ctl. В текстовом редакторе данный файл имел полную структуру ctl с включением sub-файла (в зависимости от системы ЧПУ). Полученный файл не только загрузился в Vericut-e, но и позволял редактировать себя. 

 Сформулируем ручной способ декодирования файлов "X-FILES":  xctl\xmch

  1. Открыть xctl\xmch в любом редакторе позволяющем редактировать в двоичном виде (бинарном) UltraEdit\Notepad++\...

  2. Заменить первые 3-и символа CGT на BZh

  3. Сохранить.

  4. Изменим расширение сохраненного файла убрав префикс "x" и добавив расширение .bz2 , то-есть, если Ваш файл назывался sin840d.xctl, то должны получить: sin840d.ctl.bz2  

  5. Откройте модифицированный выше способом файл в любом архиваторе поддерживающем формат Bzip2 (рекомендуем WinRar? а также любые бесплатные) и разархивируйте.

  6. Всё. Таким образом, Вы получите декодированный из xctl\xmch файл ctl\mch .

  7. Для лучшего редактирования Вы можете сохранить полученный ctl\mch в формате Dos, преобразованием Unix->Dos.

 

День 5.

 Набросал утилиту для небольшого автоматизирования процесса:
 Сами проекты :

  Утилита выполняет подготовительные 1-4 Шаги выше описанного процесса.

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

 Вывод: таким образом, мы выяснили, что X-Files Vericut-a (.xctl\xmch) являются на самом деле простым архивом, заархивированным методом Bzip2.


May/1/ 2013 year, че