Как сбросить или взломать пароль администратора 1С через PostgreSQL
Механизм аутентификации 1С и потеря доступа
Ситуация, когда утерян пароль единственного пользователя с правами Администратора 1С (Полные права) или база досталась в наследство от уволенного сотрудника, требует прямого вмешательства на уровне СУБД (PostgreSQL или MS SQL Server). Платформа 1С хранит список пользователей, их настройки и хэши паролей в бинарном виде (Secure Hash Algorithm) внутри таблицы v8users и таблицы параметров params. Бизнес-риски: невозможность обновить конфигурацию, заблокированная работа отдела кадров, простой компании.
Ключевые таблицы БД 1С для работы с пользователями
| Имя таблицы СУБД | Назначение в архитектуре 1С | Ключевые поля |
|---|---|---|
v8users | Содержит список пользователей 1С и хэши их паролей. | ID, Name, Data (Бинарные данные) |
params | Хранит системные настройки, включая флаг включенной аутентификации. | FileName (users.usr), Creation, BinaryData |
Алгоритм сброса пароля (Прямой SQL-запрос)
Сценарий 1: Метод подмены параметров (Отключение авторизации)
Этот метод временно заставляет 1С думать, что в базе нет ни одного пользователя, пуская вас без пароля.
-- 1. Переименовываем файл users.usr в таблице параметров (PostgreSQL/MSSQL)
UPDATE params SET FileName = 'users.usr_old' WHERE FileName = 'users.usr';
-- 2. Запускаем 1С в режиме Конфигуратора.
-- 1С не найдет файл параметров и пустит вас без авторизации.
-- 3. Не закрывая Конфигуратор, возвращаем имя обратно через СУБД:
UPDATE params SET FileName = 'users.usr' WHERE FileName = 'users.usr_old';
-- 4. В Конфигураторе открываем Администрирование -> Пользователи.
-- Находим нужного Админа и меняем ему пароль на новый. Сохраняем.Сценарий 2: Перенос хэша пароля от известного пользователя (MS SQL / Postgres)
Если вы знаете пароль от пользователя "Бухгалтер", вы можете скопировать его хэш Администратору.
-- Поиск ID Администратора и Бухгалтера
SELECT Name, ID FROM v8users;
-- Копируем поле Data (содержит хэш пароля и права) от ID 2 к ID 1
UPDATE v8users
SET Data = (SELECT Data FROM v8users WHERE ID = 0x[ID_Бухгалтера])
WHERE ID = 0x[ID_Администратора];Типовые ошибки администраторов
- Очистка таблицы v8users: Команда
TRUNCATE TABLE v8users;илиDELETE FROM v8users;без удаленияusers.usrприведет к разрушению логики базы. 1С выдаст ошибку целостности при запуске. - Забытый кэш сервера 1С: После манипуляций с БД необходимо перезапустить службу сервера 1С (
systemctl restart srv1cv83или перезапуск службы в Windows), иначе rphost будет использовать кэшированные данные авторизации.
Частые вопросы (FAQ)
Можно ли расшифровать пароль 1С из базы?
Нет. Платформа 1С (начиная с версий 8.3) использует одностороннее криптографическое хэширование паролей с солью (PBKDF2/SHA-256). Восстановить исходный текст пароля математически невозможно (только брутфорс).
Как сбросить пароль в файловой базе (.1cd)?
Вам потребуется утилита Tool_1CD (или ее аналоги для редактирования 1CD файлов). Откройте файл 1Cv8.1CD в утилите Hex-редактирования, найдите таблицу V8USERS и удалите записи, либо используйте встроенные функции Tool_1CD для сброса.
Сработает ли этот метод для 1С:Документооборот (Корп)?
Метод на уровне СУБД универсален для любых конфигураций 1С (ERP, ЗУП, БП), так как таблица v8users относится к ядру платформы, а не к прикладной логике конкретной конфигурации.
Почему после изменения params 1С все равно просит пароль?
Это кэширование на стороне сервера 1С. Обязательно остановите службу 'Агент сервера 1С:Предприятия 8.3', очистите папку кэша кластера (C:\Program Files\1cv8\srvinfo\reg_1541\snccntx) и запустите службу заново.