Giter Club home page Giter Club logo

passwordchanger1c's Introduction

Сброс паролей пользователей для файловой, клиент-серверной базы 1С и хранилища конфигураций

Скачать скомпиллированную версию можно в разделе с релизами - https://github.com/alekseybochkov/PasswordChanger1C/releases/

При утере паролей административных учеток к базам 1С есть разные варианты их восстановления. Если с клиент-серверными базами все просто, то с файловыми базами и хранилищем уже приходится использовать более сложные методы вплоть до ручного изменения определенных байтов в файлах. Данное приложение на .NET, позволяет забыть об этих проблемах и менять пароли пользователей в пару кликов для файловых, клиент-серверных баз 1С, а также хранилища конфигураций.

Правила использования

Запрещается использование приложения для несанкционированного доступа к данным! Используя данное приложение Вы подтверждаете, что базы данных, к которым будет предоставлен доступ, принадлежат Вашей организации и Вы являетесь Администратором с неограниченным доступом к информации этих баз данных. Несанкционированный доступ к информации преследуются по ст. 1301 Гражданского кодекса РФ, ст. 7.12 Кодекса Российской Федерации об административных правонарушениях, ст. 146 Уголовного кодекса РФ.

Отказ от ответственности

Внутренний формат файловой базы 1С не документирован, поэтому алгоритмы основываются на предположениях и догадках. Корректная работа приложения не гарантируется.
Используя приложение вы принимаете на себя всю ответственность и риски за некорректную работу алгоритмов и повреждение баз данных.
Проверяйте в первую очередь на копии, а перед использованием на рабочей версии делайте бэкапы.

Благодарность

Огромная благодарность Валерию Агееву за его работу по разбору внутренних форматов 1С и утилиту Tool_1CD.
Краткое описание формата файлов *.1CD (файловых баз 1Сv8)

Спасибо Pavel Fomin за работу по анализу изменений в 8.3.8 - Формат баз 1CD - классические и 8.3.8.

Принцип работы

В клиент-серверном варианте список пользователей хранится в таблице V8USERS, а хеш пароля в зашифрованном виде в поле DATA.
Приложение дешифрует строку из поля DATA, заменяет оба хеша (первый обычный, второй для пароля в верхнем регистре) на хеш введенной строки, шифрует строку с тем же ключем и записывает бинарные данные для указанного пользователя обратно в таблицу V8USERS.
Доступ к базе не требует монопольного режима.

В файловом варианте информационной базы логическая структура данных и алгоритмы обработки аналогичны, но данные упакованы в соответствии с внутренним форматом 1С.
Таблица пользователей считывается целиком, производится изменение в нужных строках, затем вся таблица BLOB данных для всех пользователей перезаписывается в файл информационной базы.
Требуется монопольный доступ для открытия ИБ и записи данных в нее.

В хранилище конфигурации 1С список пользователей хранится в таблице USERS, а некий хеш пароля в поле PASSWORD. Т.к. я не разобрал что это за формат хеша, то сделал только возможность установить пустой пароль (это фиксированная строка "d41d8cd98f00b204e9800998ecf8427e"). Таблица пользователей считывается целиком, производится изменение значений PASSWORD в нужных строках, затем вся таблица пользователей записывается в файл хранилища.
Требуется монопольный доступ для открытия ИБ и записи данных в нее.

Скриншоты с примерами

Файловая информационная база

 

Клиент-серверная информационная база

 

Хранилище конфигурации 1С

 

Поддержка и развитие

Предложения, вопросы, комментарии, а также обнаруженные ошибки оставляйте, пожалуйста, в Issues.

passwordchanger1c's People

Contributors

alex-bochkov avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

passwordchanger1c's Issues

Добавить лицензию

Необходимо добавить лицензию, чтобы понимать о возможностях использования для своих целей.

Ошибка платформа 8.3.16.1296

Ошибка возникает при выборе файла:

Подробная информация об использовании оперативной
(JIT) отладки вместо данного диалогового
окна содержится в конце этого сообщения.

************** Текст исключения **************
System.ArgumentOutOfRangeException: Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен превышать размер коллекции.
Имя параметра: index
в Microsoft.VisualBasic.CompilerServices.Symbols.Container.InvokeMethod(Method TargetProcedure, Object[] Arguments, Boolean[] CopyBack, BindingFlags Flags)
в Microsoft.VisualBasic.CompilerServices.NewLateBinding.CallMethod(Container BaseReference, String MethodName, Object[] Arguments, String[] ArgumentNames, Type[] TypeArguments, Boolean[] CopyBack, BindingFlags InvocationFlags, Boolean ReportErrors, ResolutionFailure& Failure)
в Microsoft.VisualBasic.CompilerServices.NewLateBinding.InternalLateIndexGet(Object Instance, Object[] Arguments, String[] ArgumentNames, Boolean ReportErrors, ResolutionFailure& Failure, Boolean[] CopyBack)
в Microsoft.VisualBasic.CompilerServices.NewLateBinding.ObjectLateInvokeDefault(Object Instance, Object[] Arguments, String[] ArgumentNames, Boolean ReportErrors, Boolean[] CopyBack)
в Microsoft.VisualBasic.CompilerServices.NewLateBinding.InternalLateInvokeDefault(Object Instance, Object[] Arguments, String[] ArgumentNames, Boolean ReportErrors, Boolean[] CopyBack)
в Microsoft.VisualBasic.CompilerServices.NewLateBinding.LateIndexGet(Object Instance, Object[] Arguments, String[] ArgumentNames)
в PasswordChanger1C.MainForm.GetUsers()
в PasswordChanger1C.MainForm.Button6_Click(Object sender, EventArgs e)
в System.Windows.Forms.Control.OnClick(EventArgs e)
в System.Windows.Forms.Button.OnClick(EventArgs e)
в System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
в System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
в System.Windows.Forms.Control.WndProc(Message& m)
в System.Windows.Forms.ButtonBase.WndProc(Message& m)
в System.Windows.Forms.Button.WndProc(Message& m)
в System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
в System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
в System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

************** Загруженные сборки **************
mscorlib
Версия сборки: 4.0.0.0
Версия Win32: 4.8.4121.0 built by: NET48REL1LAST_C
CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll

PasswordChanger1C
Версия сборки: 1.1.0.0
Версия Win32: 1.1.0.0
CodeBase: file:///D:/1%D0%A1/PasswordChanger1C/PasswordChanger1C.exe

Microsoft.VisualBasic
Версия сборки: 10.0.0.0
Версия Win32: 14.8.3752.0 built by: NET48REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/Microsoft.VisualBasic/v4.0_10.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.dll

System.Windows.Forms
Версия сборки: 4.0.0.0
Версия Win32: 4.8.4121.0 built by: NET48REL1LAST_C
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll

System
Версия сборки: 4.0.0.0
Версия Win32: 4.8.4001.0 built by: NET48REL1LAST_C
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll

System.Drawing
Версия сборки: 4.0.0.0
Версия Win32: 4.8.3752.0 built by: NET48REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll

System.Configuration
Версия сборки: 4.0.0.0
Версия Win32: 4.8.3752.0 built by: NET48REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll

System.Core
Версия сборки: 4.0.0.0
Версия Win32: 4.8.4121.0 built by: NET48REL1LAST_C
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll

System.Xml
Версия сборки: 4.0.0.0
Версия Win32: 4.8.3752.0 built by: NET48REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll

System.Runtime.Remoting
Версия сборки: 4.0.0.0
Версия Win32: 4.8.3752.0 built by: NET48REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Runtime.Remoting/v4.0_4.0.0.0__b77a5c561934e089/System.Runtime.Remoting.dll

mscorlib.resources
Версия сборки: 4.0.0.0
Версия Win32: 4.8.3752.0 built by: NET48REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/mscorlib.resources/v4.0_4.0.0.0_ru_b77a5c561934e089/mscorlib.resources.dll

System.Windows.Forms.resources
Версия сборки: 4.0.0.0
Версия Win32: 4.8.3752.0 built by: NET48REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms.resources/v4.0_4.0.0.0_ru_b77a5c561934e089/System.Windows.Forms.resources.dll

************** Оперативная отладка (JIT) **************
Для подключения оперативной (JIT) отладки файл .config данного
приложения или компьютера (machine.config) должен иметь
значение jitDebugging, установленное в секции system.windows.forms.
Приложение также должно быть скомпилировано с включенной
отладкой.

Например:

При включенной отладке JIT любое необрабатываемое исключение
пересылается отладчику JIT, зарегистрированному на данном компьютере,
вместо того чтобы обрабатываться данным диалоговым окном.

Отзыв

Спасибо, отличное приложение (для файловой базы 8.3.6 отработало отлично).

Неподтвержденная информация о формате хранения пароля

https://www.klerk.ru/soft/articles/320734/

пароль в 1С хранится в виде хэша, сформированного из строки пароля по алгоритму SHA-1 http://ru.wikipedia.org/wiki/SHA-1 и упакованного по алгоритму base64.

Т.о. хэш равен:

Хэш = СтрЗаменить(Base64Значение(Лев(СохраняемоеЗначение, Найти(СохраняемоеЗначение, ",") - 1)), " ", "");

Следует отметить, что СохраняемоеЗначение - это строка, которая хранит в себе два значения: для пароля и для пароля в верхнем регистре, разделенные запятой. Поэтому для получения хэша нужно взять первую (левую) часть сохраняемого значения.

Поддержка запуска из командной строки.

Есть потребность в автоматическом запуске обработки из командной строки при развертывании копий баз для разработчика.

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

Экспорт данных

Было бы не плохо добавить экспорт данных о пользователях во внешний файл

На платформе 8.3.1390 в МSSQL 2014 sp3 в ут11. 11.3.3.226 ошибка потока

Пробовал заменить пароль единственному пользователю в базе. Перед сменой пароля предлагало ввести логин пароль.
После подключения по строке
Data Source=MSSQL;Server=localhost;Integrated Security=true;Database=trade11
выдало этого пользователя.
Сменил пароль на пустой. После чего входил в базу получал ошибку формата потока, список пользователей был доступен. А в конфигураторе не могло зайти до списка пользователей.

работа с 8.1

При получении пользователей из базы sql для платформы 8.1 ошибка:
image

Поддержка PostgreSQL через ODBC

Здравствуйте, Алексей!

Спасибо за хороший инструмент, во многих случаях он очень полезен.
Я попытался модифицировать программу для работы с PostgreSQL через ODBC.
На чтение получилось, но никак не могу сделать update, не получается с байтовыми полями.
Может у вас есть желание посотрудничать по этому вопросу ?
Если да, то куда выложить доработки ?

Авторизация в SQL

Здравствуйте!
Не всегда юзер (админ) имеет доступ к БД тому же самому MS SQL.
Некоторые используют отдельные учетки специально для БД или того же sa юзера штатного админа.
Не плохо было бы добавить вариант авторизации на сервере БД. Ввод логина и пароля.
Обработка шикарная, как идея, потому как пока не смог ее заюзать по причине выше.
Развития вам!))

Необрабатываемое исключение на файловых базах

Платформа 8.3.15.1534
Windows 10 x64

На любой из файловых баз, которые у меня имеются, при попытке прочесть список пользователей выдается необрабатываемое исключение:

************** Текст исключения **************
System.ArgumentOutOfRangeException: Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен превышать размер коллекции.
Имя параметра: index
в Microsoft.VisualBasic.CompilerServices.Symbols.Container.InvokeMethod(Method TargetProcedure, Object[] Arguments, Boolean[] CopyBack, BindingFlags Flags)
в Microsoft.VisualBasic.CompilerServices.NewLateBinding.CallMethod(Container BaseReference, String MethodName, Object[] Arguments, String[] ArgumentNames, Type[] TypeArguments, Boolean[] CopyBack, BindingFlags InvocationFlags, Boolean ReportErrors, ResolutionFailure& Failure)
в Microsoft.VisualBasic.CompilerServices.NewLateBinding.InternalLateIndexGet(Object Instance, Object[] Arguments, String[] ArgumentNames, Boolean ReportErrors, ResolutionFailure& Failure, Boolean[] CopyBack)
в Microsoft.VisualBasic.CompilerServices.NewLateBinding.ObjectLateInvokeDefault(Object Instance, Object[] Arguments, String[] ArgumentNames, Boolean ReportErrors, Boolean[] CopyBack)
в Microsoft.VisualBasic.CompilerServices.NewLateBinding.LateIndexGet(Object Instance, Object[] Arguments, String[] ArgumentNames)
в PasswordChanger1C.MainForm.GetUsers()
в PasswordChanger1C.MainForm.Button6_Click(Object sender, EventArgs e)
в System.Windows.Forms.Control.OnClick(EventArgs e)
в System.Windows.Forms.Button.OnClick(EventArgs e)
в System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
в System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
в System.Windows.Forms.Control.WndProc(Message& m)
в System.Windows.Forms.ButtonBase.WndProc(Message& m)
в System.Windows.Forms.Button.WndProc(Message& m)
в System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
в System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
в System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

************** Загруженные сборки **************
mscorlib
Версия сборки: 4.0.0.0
Версия Win32: 4.8.4010.0 built by: NET48REL1LAST_B
CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll

PasswordChanger1C
Версия сборки: 1.1.0.0
Версия Win32: 1.1.0.0
CodeBase: file:///F:/Install/1%D0%A1/PasswordChanger1C/PasswordChanger1C.exe

Microsoft.VisualBasic
Версия сборки: 10.0.0.0
Версия Win32: 14.8.3752.0 built by: NET48REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/Microsoft.VisualBasic/v4.0_10.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.dll

System
Версия сборки: 4.0.0.0
Версия Win32: 4.8.4001.0 built by: NET48REL1LAST_C
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll

System.Core
Версия сборки: 4.0.0.0
Версия Win32: 4.8.4001.0 built by: NET48REL1LAST_C
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll

System.Windows.Forms
Версия сборки: 4.0.0.0
Версия Win32: 4.8.4001.0 built by: NET48REL1LAST_C
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll

System.Drawing
Версия сборки: 4.0.0.0
Версия Win32: 4.8.3752.0 built by: NET48REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll

System.Configuration
Версия сборки: 4.0.0.0
Версия Win32: 4.8.3752.0 built by: NET48REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll

System.Xml
Версия сборки: 4.0.0.0
Версия Win32: 4.8.3752.0 built by: NET48REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll

System.Runtime.Remoting
Версия сборки: 4.0.0.0
Версия Win32: 4.8.3752.0 built by: NET48REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Runtime.Remoting/v4.0_4.0.0.0__b77a5c561934e089/System.Runtime.Remoting.dll

Accessibility
Версия сборки: 4.0.0.0
Версия Win32: 4.8.3752.0 built by: NET48REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/Accessibility/v4.0_4.0.0.0__b03f5f7f11d50a3a/Accessibility.dll

mscorlib.resources
Версия сборки: 4.0.0.0
Версия Win32: 4.8.3752.0 built by: NET48REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/mscorlib.resources/v4.0_4.0.0.0_ru_b77a5c561934e089/mscorlib.resources.dll

System.Windows.Forms.resources
Версия сборки: 4.0.0.0
Версия Win32: 4.8.3752.0 built by: NET48REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms.resources/v4.0_4.0.0.0_ru_b77a5c561934e089/System.Windows.Forms.resources.dll

`

Ошибка "Переполнение в результате выполнения арифметической операции"

2020-03-01_20-33-21
Объем базы около 25гб, база сама по себе серверная, но в текущий момент развернута локально.
При указании файла базы получаем данную ошибку

1С:Предприятие 8.3 (8.3.16.1063)
1С Розница 2.2.11.24
Win10 x64
Intel(R) Core(TM) i7-8700k
DDR 4 32Gb
SSD Samsung 970 Pro NVMe

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.