Skip to content

Jopezzia/surgery_of_1c_storage

 
 

Repository files navigation

Surgery of 1C storage

Краткое описание

Инструмент для распаковки и обратной упаковки внутренних файлов конфигурации из таблиц базы данных 1С в текстовые файлы. Позволяет извлекать из таких таблиц как config, params, files и др. двоичные данные и декодировать их в utf. Если хранящиеся данные сжаты методом deflate, то они будут распакованы и доступны для текстового анализа и изменения. После чего их можно обратно закодировать и на свой страх и риск загрузить обратно.

Помимо работы с deflate кодировкой, инструмент позволяет распаковывать данные о пользователях, которые закодированные через xor по битовой маске. В частности так кодируется информация о пользователях в таблице v8users и в файле users.usr таблицы params. Данные файлы также выгружаются как текст и доступны для изменения и последующей упаковки. В частности на этом основана функция по непосредственному добавлению нового пользователя с правами администратора 1С в базу данных.

Технические ограничения

Программа работает со следующими СУБД:

  • PostgreSQL с использованием библиотеки psycopg2
  • и с MS SQL с использованием pyodbc 4.0 через ODBC (по умолчанию используется SQL Server Native Client)

Код написан в PyCharm с интерпретатором Python 3.7 под Windows. Тестировался с базами 1С на платформе 8.3.17. Библиотеки необходимые для работы перечислены в файле requirements.txt и дополнительно выгружены в каталог lib. Основным интерфейсом для работы является CLI, который построен с использованием пакета click.

Запуск

Программу можно запустить на любой ОС, для запуска требуется Python 3.7 (работоспособность на других версиях не гарантирована). Для запуска достаточно в терминале перейти в текущий каталог и выполнить команду: python3 surgery_of_1c_storage При условии, что у вас python3 доступен в пути поиска исполняемых файлов (PATH) и установлены все зависимости (для установки зависимостей можно воспользоваться командой pip install -r requirements.txt)

Быстрый запуск под Windows

Минимальный набор файлов для запуска:

  • Исходники из каталога surgery_of_1c_storage
  • Библиотеки из каталога lib
  • Батник starter.bat

Всё это скинуть в одну папку и выполнить батник из командной строки.

Как пользоваться

Если удалось запустить программу без ошибок, то при вызове без параметров, будет показана справка по командам. Для работы нужен конфигурационный файл config.ini. Чтобы его получить достаточно выполнить starter.bat init-config, после чего в папке появится файл config_template.ini. Его можно отредактировать в любом текстовом редакторе. Его основное назначение — задать параметры подключения к БД. После модификации его лучше переименовать в config.ini (или каждый раз ири запуске программы передавать ключ --config-file [filename])

Выгрузка и загрузка файлов конфигурации

starter.bat dump - выгружает все двоичные файлы из таблиц config, configsave, params, files и пр. в каталог ConfigFiles starter.bat load - загружает файлы из каталога ConfigFiles в соответствующие таблицы (таблица соответствует имени подкаталога) При выгрузке в каждом каталоге сохраняется файл .encode_modes - он сохраняет способ кодировки, в котором хранился файл в БД (utf, deflate, mask) Можно указать конкретную таблицу по ключу -t и/или имя файла -f.

Выгрузка и загрузка файлов с параметрами пользователей

Параметры пользователей хранятся в таблицу v8users и params в файле users.usr. При выгрузке данные с хешем пароля и правами расшифровываются по маске и сохраняются в отедльных файлах в каталоге UsersFiles. Файлы можно модифицировать - например, сбросить пароль. Соответствующие команды: starter.bat dump-users и starter.bat load-users Можно указать конкретного пользователя по ключу -U

Выгрузка и загрузка файлов через SQL запросы

Для некоторых таблиц требуется гибкость, например получить данные из schemastorage. Для этого пишем вот такой запрос SELECT 'currenschema', currentschema FROM schemastorage WHERE schemaid=0 и используем команду starter.bat dump-by-sql. Для загрузки обратно нужен запрос на обновление данных, например: UPDATE schemastorage SET currentschema = ? WHERE schemaid=0 через команду tarter.bat load-by-sql

Добавление нового администратора

По команде starter.bat add-admin будет добавлен новый пользователь Administrator без пароля. По ключам:

  • -U можно указать другое имя пользователя
  • -P можно задать пароль
  • -r указать имена Прав через запятую, которые ему будут назначены

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%