вторник, 31 июля 2012 г.

Восстановление утерянного пароля к 1С 8.1 / 8.2


 Способ №1. 

Иногда требуется открыть базу данных 1С:Предприятие 8.1 не зная пароль (например, в ситуациях когда пользователей обслуживал один человек, потом он по каким-то причинам пропал и "забыл" сообщить им пароль пользователя обладающего административными правами) или же когда пароль просто утерян. На самом деле выходов из данной ситуации масса, есть даже утилита 1C v8.1 Password Viewer v2.0 (26.11.08) by SERRGE для восстановления забытых или утерянных паролей конфигураций программы 1С v8.1, но есть способ проще и быстрее.
Единственное что нам понадобится это любой Hex редактор, можно взять, например WinHEX или консольный Hacker's View (hiew). Предположим что все необходимое у нас есть (я буду пользоваться hiew), последовательность действий следующая:

1. Открываем 1Cv8.1CD и находим в нем строку users.usr в Unicode, т.е. нажимаем F7 и ищем последовательность символов


Код
75 00 73 00 65-00 72 00 73-00 2E 00 75-00 73 00 72
В файле их может быть несколько (этот момент нигде не описывался), нам нужна та, после которой "видно данные".
 


На втором скриншоте видно, что мы нашли верную строку, т.к. после нее присутствуют данные.  
2. Перед самой строкой users.usr идет последовательность символов 00 09 00, т.е. фактически строка выглядит как:
Код
00 09 00 75 00 73 00 65-00 72 00 73-00 2E 00 75-00 73 00 72

Заменяем первый ноль перед девяткой на 01, т.е. получаем:
Код
01 09 00 75 00 73 00 65-00 72 00 73-00 2E 00 75-00 73 00 72

Для этого нажимаем в нужном месте F3, вписываем 01 и нажимаем F9 для непосредственного сохранения результатов в файл.

3. Не закрывая Hacker's View (hex редактор) запускаем 1С Предприятие в режиме Конфигуратор. Если вы все сделали правильно, то он запустится без пароля. Но если зайти в меню Администрирование -> Пользователи, то список пользователей будет пустым.

Это произошло потому, что при входе в конфигуратор, фактически "файл" users.usr в базе данных для него отсутствовал. Вернем все как было. 

4. Помните я говорил, что закрывать hex-редактор не нужно, так вот, переключаемся обратно в окошко Hacker's View и делаем обратную замену, т.е. меняем 01 на 00, собственно как и было изначально. После чего обязательно закрываем hex-редактор, иначе на следующем шаге получите ошибку разделенного доступа к данным.
5. Несмотря на то, что мы сделали обратную замену, список пользователей все еще пуст, потому что Конфигуратор не перечитал его из БД. Чтобы он это сделал заходим в меню Администрирование -> Региональные установки информационной базы ... , ничего не изменяем, а просто нажимаем Ок. В этот момент конфигуратор перечитывает список пользователей.
6. Открываем Администрирование -> Пользователи и вуаля, они все появились.

з.ы. На самом деле подобных инструкций в интернете достаточно много, так что Америку я не открыл, однако в большинстве из них не сказано не слова, про то что вхождений строки, которую мы ищем может быть больше одного и не описано как отыскать нужное, а во-вторых - ничего не сказано про то как "проявить" список пользователей в конфигураторе (в большинстве попыток он так и оказывается пустым). Надеюсь что этот небольшой мануал поможет вам.
з.з.ы. Для того чтобы предыдущий список пользователей "проявился" и конфигуратор все-таки перечитал его, иногда, зайти в региональные установки может оказаться недостаточным. Тут уже необходимо экспериментировать - можно например запустить реиндексацию таблиц ИБ в тестировании и исправлении, а потом прервать ее. А можно попробовать еще какие-то варианты.

Способ №2.

Ну а здесь я расскажу про еще один способ восстановления паролей к 1С 8.1, который до этого нигде (по-крайней мере на моей памяти) не описывался. Для работы нам потребуется утилита Tool_1CD версии не ниже 0.2.0 (к слову, последняя версия 0.2.1 умеет распаковывать файл users.usr таблицы PARAMS, а также записи таблицы V8USERS, но об этом после). Итак, запускаем Tool_1CD и открываем в ней нашу базу. Далее открываем в ней таблицу PARAMS и в ней файл users.usr:
В поле с дешифрованной информацией о пользователях мы видим примерно следующее:   
{1,  
{3ad414ad-92d6-4bc5-81e5-9c1af6f113fb,"Администратор","100500","Администратор",
00000000-0000-0000-0000-000000000000,
{1,87090b31-2cd0-4b45-8b24-efdb2383b1a2},00000000-0000-0000-0000-000000000000,
1,1,,0,0,"de+xRUgs4i9FRDkMrSM8dJwbQ+Q=","de+xRUgs4i9FRDkMrSM8dJwbQ+Q="},1}
Где строка de+xRUgs4i9FRDkMrSM8dJwbQ+Q=, есть Base64 представление SHA-1 хеша пароля пользователя Администратор. Наша первоначальная задача это перести его из Base64 в обычное представление. Открываем онлайн-инструментhttp://home.paulschou.net/tools/xlate/ и в поле BASE64 вводим наш хеш, после чего нажимаем кнопку Decode:
В окне Hex получаем наш искомый хеш:  
Код
75 ef b1 45 48 2c e2 2f 45 44 39 0c ad 23 3c 74 9c 1b 43 e4
Удаляем из него пробелы, чтобы получилось вот так:  
Код
75efb145482ce22f4544390cad233c749c1b43e4
А далее используем любое ПО или онлайн сервисы для подбора SHA1 хешей. Например, можно воспользоваться программой PasswordsPro от InsidePro Software или Extreme GPU Bruteforcer для перебора с использованием GPU. Как видно в нашем примере, мы нашли пароль:
В нашем случае паролем оказалось: 100500. Как видно, достоинство этого способа в том, что мы не редактируем .1CD, нет риска повредить какие-то данные в результате неумелого обращения с hex-редактором и т.п., ну а недостаток - т.к. в базе хранится не сам пароль, а его хеш, то собственно успех восстановления пароля зависит от его сложности / наличия в словарях и т.д. и т.п.

p.s. Этот же способ подходит и для 8.2 ... В последней версии Tool_1CD была добавлена поддержка 8.2.14 и алгоритм распаковки записей таблицы V8USERS. Для 8.2 инструкция остается той же, только открывать надо не таблицу PARAMS и запись users.usr в ней, а таблицу V8USERS и запись об интересующем нас пользователе.

Комментариев нет:

Отправить комментарий