31 августа 2015 г.

Способ обойти пароли 1С 8.х в серверной информационной базе (SQL)

1С при работе на SQL хранит список пользователей в двух местах: в таблице v8users и в файле users.usr,  который бинарно расположен в таблице Params.

Надо заставить платформу думать что в базе нет ни одного пользователя. Для этого необходимо переименовать таблицу v8users и строчку с файлом users.usr. Открываем SQL Server Management Studio и создаем запрос к базе данных с содержанием:

EXEC sp_rename 'v8users', 'v8users_old'
GO
UPDATE Params
SET FileName = 'users.usr_old'
WHERE FileName = 'users.usr'
GO


После этого открываем базу данных в конфигураторе и видим что платформа не спрашивает пользователя и пароль, при этом в SQL Server будет заново создана таблица v8users. Теперь чтобы всех пользователей вернуть обратно не закрывая конфигуратора выполним в SQL Server Management Studio запрос:


DROP TABLE v8users
GO
EXEC sp_rename 'v8users_old', 'v8users'
GO
UPDATE ParamsSET FileName = 'users.usr'
WHERE FileName = 'users.usr_old'
GO


После выполнения запроса в списке пользователей появятся все пользователи, останется только найти нужного и изменить ему пароль.


Предохранение:


До начала всех описанных действий создайте резервную копию базы данных.

    BACKUP DATABASE [ИмяБазыДанных] TO  DISK = N'ПутьКФайлу' WITH NOFORMAT, NOINIT,  NAME = N'ИмяРезервнойКопии', SKIP, NOREWIND, NOUNLOAD,  STATS = 10 GO