Инструмент для распаковки и обратной упаковки внутренних файлов конфигурации из таблиц базы данных 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
)
Минимальный набор файлов для запуска:
- Исходники из каталога 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
Для некоторых таблиц требуется гибкость, например получить данные из 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
указать имена Прав через запятую, которые ему будут назначены