bin | ||
crodump | ||
docs | ||
templates | ||
test_data/all_field_types | ||
.gitignore | ||
LICENSE | ||
README.md | ||
setup.py |
cronodump
Утилита cronodump может анализировать большинство баз данных, созданных с помощью программного обеспечения CronosPro, и экспортировать их в несколько выходных форматов.
Это программное обеспечение пользуется популярностью среди российских государственных учреждений, компаний и правоохранительных органов.
Быстрый старт
В своей самой простой форме, без каких-либо зависимостей, команда croconvert создаёт CSV-представление всех таблиц базы данных, а также копию всех файлов, содержащихся в базе данных:
bin/croconvert --csv test_data/all_field_types
По умолчанию создаётся каталог cronodump-YYYY-mm-DD-HH-MM-SS-ffffff/
, содержащий CSV-файлы для каждой найденной таблицы. В этом каталоге также будет создана директория Files-FL/
, содержащая все файлы, хранящиеся в базе данных, независимо от того, ссылаются ли они (до сих пор) на какие-либо данные в таблицах. Все файлы, которые фактически ссылаются (и, таким образом, известны по своим именам), будут сохранены в директории Files-Referenced
. С помощью опции --outputdir
можно выбрать место для сохранения дампа.
Если вы получаете сообщение об ошибке или просто нечитаемые данные, вероятно, ваша база данных защищена. Вам может потребоваться изучить опции --dbcrack
или --strucrack
, которые описаны ниже.
Шаблоны
Команда croconvert
может использовать мощный фреймворк шаблонов Jinja для создания дополнительных форматов файлов, таких как PostgreSQL и HTML.
Действие по умолчанию для croconvert
— это преобразование базы данных с использованием шаблона html
. Для использования других шаблонов вы можете настроить параметры соответствующим образом.
python3 -m venv ./venc
. venv/bin/activate
pip install jinja2
bin/croconvert test_data/all_field_types > test_data.html
чтобы выгрузить HTML-файл, содержащий все таблицы, найденные в базе данных, список файлов с возможностью их скачивания через встроенные data URI, а также встроенные изображения из таблиц. Обратите внимание, что полученный HTML-файл может быть огромным для больших баз данных, что может вызвать значительную нагрузку на браузеры при попытке открыть его.
Команда -t postgres
выведет схемы таблиц и записи в формате валидных выражений CREATE TABLE
и INSERT INTO
в стандартный поток вывода. Этот дамп затем можно импортировать в базу данных PostgreSQL. Учтите, что символ обратного слэша не экранируется, поэтому параметр standard_conforming_strings
должен быть отключён.
Инспекция
Существует инструмент bin/crodump
, предназначенный для дальнейшего изучения баз данных. Это может быть полезно для извлечения метаданных, таких как пути к файлам изображений таблиц или формы ввода и вывода. Не все метаданные пока полностью разобраны, поэтому может потребоваться опыт работы с бинарными дампами.
Скрипт crodump
предлагает множество опций, но в самом базовом виде команда strudump
предоставляет обширный набор метаданных для дальнейшего анализа:
bin/crodump strudump -v -a test_data/all_field_types/
Опция -a
указывает команде strudump выводить данные в ASCII вместо шестнадцатеричного дампа.
Для низкоуровневого дампа содержимого базы данных используйте:
bin/crodump crodump -v test_data/all_field_types/
Опция -v
указывает crodump включать все неиспользуемые диапазоны байтов. Это может быть полезно для идентификации удалённых записей.
Для более высокоуровневого дампа содержимого базы данных используйте:
bin/crodump recdump test_data/all_field_types/
Эта команда выведет шестнадцатеричный дамп всех записей для всех таблиц.
Расшифровка защищённых паролем баз данных
Начиная с версии Cronos v4, базы данных могут быть защищены паролем. Эта защита работает за счёт изменения KOD sbox. Утилита cronodump
предоставляет два метода для извлечения KOD sbox из базы данных:
Оба метода основаны на статистическом анализе и не всегда могут дать корректный результат.
1. strudump
Если файл CroStru.dat в базе данных достаточно большой, то можно легко извлечь изменённый KOD-sbox из файла CroStru. Для этого используется опция --strucrack
:
crodump --strucrack recdump <dbpath>
2. dbdump
Если файлы Bank и Index сжаты, то KOD sbox можно извлечь путём анализа четвёртого байта каждой записи, который должен декодироваться в ноль.
Для этого используется опция --dbcrack
crodump --dbcrack recdump <dbpath>
Установка
cronodump
требует Python версии 3.7 или выше. Программа протестирована на Linux, MacOS и Windows. Есть одно необязательное требование: использование движка шаблонов Jinja2
, однако установка возможна и без него.
Существует несколько способов установки cronodump
:
- Вы можете запускать
cronodump
напрямую из клонированного git-репозитория, используя скрипты в подкаталогеbin
. - Вы можете установить
cronodump
в своей среде Python, запустив команду:python setup.py build install
. - Вы можете установить
cronodump
из публичного from the public pypi repository с помощью командыpip install cronodump
. - Вы можете установить
cronodump
вместе с движком шаблоновJinja2
из публичного pypi repository с помощью командыpip install cronodump[templates]
.
Терминология
Мы решили использовать более общепринятую терминологию для обозначения баз данных, таблиц, записей и других элементов. Ниже представлена таблица, демонстрирующая, как Cronos называет эти элементы:
what | cronos english | cronos russian |
---|---|---|
Database | Bank | Банк |
Table | Base | Базы |
Record | Record | Записи |
Field | Field | поля |
recid | System Number | Системный номер |
License
cronodump выпущен по лицензии MIT license.
Ссылки
cronodump
основан на документации формата файлов, найденной в старых версиях Cronos, а также на последующей реализации парсера для старого формата файлов. Однако вместо эвристического подхода для предположения смещений и параметров обфускации, используется более строгий парсер. Подробности можно найти в документации.