Скорая Компьютерная Помощь г. Калуга

Полный спектр компьютерных услуг!

Здравствуйте, гость ( Вход | Регистрация )

> Внимание!

  • Вся информация, расположенная в данном и других разделах форума получена из открытых источников (интернет-ресурсы, средства массовой информации, печатные издания и т.п.) и/или добавлена самими пользователями. Администрация форума предоставляет его участникам площадку для общения / размещения файлов / статей и т.п. и не несет ответственности за содержание сообщений, а также за возможное нарушение авторских, смежных и каких-либо иных прав, которое может повлечь за собой информация, содержащаяся в сообщениях.
Ремонт компьютеров в калуге Рекламное место сдается
3 страниц V  < 1 2 3 >  
Ответить в эту темуОткрыть новую тему
> Восстановление утерянного пароля к 1С 8.1, Небольшая инструкция
Decker
сообщение 24.11.2012, 21:43
Сообщение #21


Администратор
*****

Группа: Главные администраторы
Сообщений: 14349
Регистрация: 12.10.2007
Из: Twilight Zone
Пользователь №: 1



sahon51 Пользователь "Света" у вас в базе без пароля, пароль пользователя "Программист" - 911, пароль пользователя "Администратор" - "пароль" (без кавычек).


--------------------

Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Decker
сообщение 26.11.2012, 5:46
Сообщение #22


Администратор
*****

Группа: Главные администраторы
Сообщений: 14349
Регистрация: 12.10.2007
Из: Twilight Zone
Пользователь №: 1



В продолжении темы ... как еще можно подобрать SHA1 хеши ... Если ни один из публичных ресурсов по подбору SHA-1 хеша не дал положительного результата, а перебирать на домашней / офисной машине вы считаете долгим или нецелесообразным, можно попробовать провести подбор по Rainbow Tables (заранее рассчитанным таблицам).

Цитата
Радужная таблица (англ. rainbow table) — специальный вариант таблиц поиска (англ. lookup table), использующий механизм разумного компромисса между временем поиска по таблице и занимаемой памятью (time-memory tradeoff). Радужные таблицы используются для вскрытия паролей, преобразованных при помощи сложнообратимой хеш-функции, а также для атак на симметричные шифры на основе известного открытого текста.


Скачать софт для перебора по ражужным таблицам можно например с сайта этого проекта: http://project-rainbowcrack.com/ со страницы загрузок, ну или использовать уже упоминавшийся здесь PasswordsPro или Extreme GPU Bruteforcer. Сами таблицы для SHA-1 найти будет сложнее, но тоже вообщем-то можно. Вот несколько ссылок:

http://tbhost.eu/rt.php?algorithm=8
http://freerainbowtables.mirror.garr.it/mi...erainbowtables/

А вот по этой ссылке располагается Advanced RT Calculator с помощью которого можно просчитать, сколько времени займет самостоятельная генерация Ranbow Tables для вашего набора символов (впрочем, для тех, кто не будет постоянно заниматься обратным поиском SHA-1 хешей расчет таких таблиц скорее всего не понадобится).

Ну и напоследок еще одно зеркало с возможностью закачки Rainbow Tables через HTTP и (!) торренты: http://www.freerainbowtables.com/en/tables2/


--------------------

Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Decker
сообщение 29.12.2012, 14:47
Сообщение #23


Администратор
*****

Группа: Главные администраторы
Сообщений: 14349
Регистрация: 12.10.2007
Из: Twilight Zone
Пользователь №: 1



Собственно еще несколько статей по сбросу / восстановлению забытого пароля для 1С 8.x:

p.s. Если у вас не получилось сбросить пароль ни по одной из описанных методик - вы можете обратиться за помощью к нашим специалистам, написав на e-mail. В случае невозможности восстановления пароля - возможен вариант с добавлением в вашу базу нового пользователя с административными правами, при этом предыдущий список пользователей сохранится. Для этого нашим специалистам понадобится резервная копия вашей базы, срок выполнения работ - один рабочий день с момента получения нами копии базы.


--------------------

Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Decker
сообщение 4.1.2013, 3:26
Сообщение #24


Администратор
*****

Группа: Главные администраторы
Сообщений: 14349
Регистрация: 12.10.2007
Из: Twilight Zone
Пользователь №: 1



Алгоритм дешифровки BLOB-поля DATA в таблице v8users


Итак, как известно пароли пользователей в 1С 8.2 хранятся в таблице v8users в BLOB поле DATA. Допустим мы имеем следующее поле DATA для пользователя User3:


Прикрепленное изображение


Напишем небольшую программу для дешифровки (здесь массив block - это и есть содержимое BLOB):

Код
uses SysUtils;

var block: array [0..265] of byte = ($01E,$02D,$078,$0BF,$020,$0EB,$057,$034,$06E,$09F,$04C,$079,$00F,$0D0,$026,$08A,
$012,$0CF,$005,$097,$065,$0A6,$042,$0B6,$07A,$07F,$057,$028,$01A,$04F,$04F,$0C2,

$0C3,$000,$05B,$0D9,$066,$004,$05A,$0AF,$02E,$01D,$038,$0FD,$043,$0E8,$025,$0AC,
$028,$0A3,$006,$093,$07B,$09B,$018,$048,$064,$04C,$037,$02D,$07B,$01A,$019,$0DD,
$043,$08D,$06F,$007,$05A,$0FB,$02E,$055,$02D,$085,$055,$0EF,$060,$0FC,$027,$0BB,
$047,$049,$0FD,$00B,$058,$053,$075,$07D,$069,$02A,$03D,$01E,$05A,$093,$010,$0DB,
$067,$004,$05E,$0AF,$07C,$049,$022,$0E0,$016,$0BA,$022,$0E2,$035,$0A7,$055,$096,
$06F,$086,$04A,$04F,$067,$005,$02A,$07F,$07F,$01D,$048,$08F,$010,$0DB,$067,$004,
$05E,$0AF,$060,$074,$005,$0AB,$016,$0F7,$03E,$0FF,$035,$0A7,$055,$096,$072,$086,
$04A,$052,$067,$018,$02A,$07F,$062,$01D,$048,$08F,$010,$0C6,$067,$004,$05E,$0AF,
$061,$049,$03F,$0E0,$016,$0BA,$022,$0FF,$035,$0A7,$055,$096,$072,$09A,$04A,$053,
$066,$004,$036,$07F,$063,$01D,$054,$09D,$071,$0A7,$067,$075,$028,$0C8,$001,$030,
$057,$0E8,$068,$0D8,$048,$09B,$04E,$0F2,$00A,$0C0,$07B,$0D5,$022,$00C,$021,$04A,
$06C,$03A,$077,$010,$05A,$093,$002,$0BA,$01B,$004,$02F,$0D9,$01B,$034,$046,$088,
$01E,$0C4,$040,$095,$051,$0DC,$000,$0C9,$024,$08F,$019,$027,$024,$05E,$078,$039,
$03A,$015,$045,$09D,$00C,$0D9,$07B,$007,$042,$0AD,$07C,$048,$03C,$0E0,$017,$0BA,
$021,$0FE,$030,$0A2,$056,$095,$076,$09A,$04A,$002);

var i,j: integer;

begin
j:=1;
for i:=block[0]+1 to sizeof(block)-1 do
        begin
        if (j>block[0]) then j:=1;
        Write(Chr(block[i] xor block[j]));
        Inc(j);
        end;
end.


Результат получается в текстовом виде в кодировке UTF-8:
Код
{21040bd7-eb7c-4c59-b73d-b47abcf834db,"User3","�","User3",00000000-0000-0000-0000-000000000000,
{0},00000000-0000-0000-0000-000000000000,0,1,,0,0,"QL0AFWMIX8NRZTKeof9cXsvbvu8=",
"QL0AFWMIX8NRZTKeof9cXsvbvu8=",2,3,20130103155334,0}


p.s. Приведенный пример кода отлично компилится во Free Pascal. Если кто-то возьмется написать утилиту для сброса паролей в 1CD, там делов-то - найти все записи в таблице V8USERS, определить смещение поля DATA, изменить его, подставив base64 sha1 пустой строки и проксорить по вышеуказанному алгоритму, может записать меня в копирайты wink.gif) Мне лениво подобным заниматься ...
p.p.s. Краткое описание формата файлов *.1CD (файловых баз 1Сv8)


--------------------

Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
quares
сообщение 21.2.2013, 1:19
Сообщение #25


Newbie
*

Группа: Пользователи
Сообщений: 4
Регистрация: 21.2.2013
Пользователь №: 1493



Подскажите правильно ли делаю?
8.2.17.169
Таблица V8USERS нашел пользователя (сам создал и задал пароль)
В поле DATA -> {IMAGE} вижу:
CODE
14 64 1a 56 69 41 17 68 30 ad 62 5c 5f 41 64 85 46 04 51 07 16 4b 20 39 40 e4 39 12 25 75 0c 04 20 3a 51 6a 3c 43 b2 d6 60 44 0c 2a 22 2f 53 2b 7b 0b 72 73 5f 1d 41 e5 23 83 a4 42 7d 35 04 40 33 f7 42 d4 83 86 44 b6 d3 52 02 14 0f 10 40 70 7d 44 46 a7 85 64 2a 63 20 2a 51 2d 61 44 27 2f 5d 56 40 25 66 d6 94 5e 65 6c 56 42 d6 23 b7 c5 32 f3 55 07 42 f5 f5 49 80 63 a7 34 1b 42 2f 51 20 1d 3f 21 7b 5d 2a 34 5a 70 3a 5a 53 41 95 27 16 ba 47 c6 14 d4 02 65 24 7f 49 7f 30 0d 23 25 5b 08 45 b0 06 d3 e4 44 35 78 50 20 ac 37 26 7b 54 2a 66 44 71 27 58 00 40 25 26 c6 f4 46 65 64 50 20 ac 37 3b 7b 54 2a 66 59 71 27 58 00 45 c5 26 c7 34 47 64 65 4c 20 1d 37 3a 7a 48 38 64 03 22 73 5b 4a 42 a3 63 02 b4 0a 06 0d 2d 42 f5 f7 92 55 17 10 c2 10 a6 35 97 72 12 25 f7 e7 34 34 27 3a 0d 41 84 16 c7 f2 62 a1 b1 c3 02 e1 b6 64 1c 29 2d 67 45 f3 23 c5 74 29 4f 5e 7b 59 38 7a 5b 6d 26 44 02 45 c5 36 f6 f4 44 7a 65 50 20 ac 37 22 79 5d 36 66 45 71 6a

Из, по моему, из параллельной темы взял алгоритм на Paskal`е и переписал его на 1С ку (8ку) для извлечения информации вида:
CODE
{1,
{dbd4636c-e2d5-4d71-b3d7-c0de45ad98bf,"2","�","2",6bd6a577-f85f-416d-86ee-775c9587d5df,
{1,87090b31-2cd0-4b45-8b24-efdb2383b1a2},00000000-0000-0000-0000-000000000000,1,1,,0,1,"2jcd3zwTltJNYMgXon5kZHKt1G4=","onmpFz4B0Muq9sVaKq8Yzh7aHH0=",2,1,20130221000429,0,0},1,1}

Но после прохода алгоритма получается только два символа "@@" (без кавычек)
Где косяк?
Обработка для 8.2 лежит тут: http://f-bit.ru/76232
на форме текстовое поле куда пишутся двоичные данные вида (указано выше) 00 01 02 и т.д. и т.п.
алгоритм для Paskal`я в модуле в процедуре а() в каментах.
Спасибо если кто найдет время разобраться и что-нибудь посоветовать или, что еще лучше, ткнуть носом в ошибку.


--------------------
c8 e3 ee f0 fc 20 c7 f3 e9 ea ee e2
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
quares
сообщение 21.2.2013, 14:36
Сообщение #26


Newbie
*

Группа: Пользователи
Сообщений: 4
Регистрация: 21.2.2013
Пользователь №: 1493



Цитата(Decker @ 4.1.2013, 3:26) *
Алгоритм дешифровки BLOB-поля DATA в таблице v8users


Итак, как известно пароли пользователей в 1С 8.2 хранятся в таблице v8users в BLOB поле DATA. Допустим мы имеем следующее поле DATA для пользователя User3:


Прикрепленное изображение


Напишем небольшую программу для дешифровки (здесь массив block - это и есть содержимое BLOB):

Код
uses SysUtils;

var block: array [0..265] of byte = ($01E,$02D,$078,$0BF,$020,$0EB,$057,$034,$06E,$09F,$04C,$079,$00F,$0D0,$026,$08A,
$012,$0CF,$005,$097,$065,$0A6,$042,$0B6,$07A,$07F,$057,$028,$01A,$04F,$04F,$0C2,

$0C3,$000,$05B,$0D9,$066,$004,$05A,$0AF,$02E,$01D,$038,$0FD,$043,$0E8,$025,$0AC,
$028,$0A3,$006,$093,$07B,$09B,$018,$048,$064,$04C,$037,$02D,$07B,$01A,$019,$0DD,
$043,$08D,$06F,$007,$05A,$0FB,$02E,$055,$02D,$085,$055,$0EF,$060,$0FC,$027,$0BB,
$047,$049,$0FD,$00B,$058,$053,$075,$07D,$069,$02A,$03D,$01E,$05A,$093,$010,$0DB,
$067,$004,$05E,$0AF,$07C,$049,$022,$0E0,$016,$0BA,$022,$0E2,$035,$0A7,$055,$096,
$06F,$086,$04A,$04F,$067,$005,$02A,$07F,$07F,$01D,$048,$08F,$010,$0DB,$067,$004,
$05E,$0AF,$060,$074,$005,$0AB,$016,$0F7,$03E,$0FF,$035,$0A7,$055,$096,$072,$086,
$04A,$052,$067,$018,$02A,$07F,$062,$01D,$048,$08F,$010,$0C6,$067,$004,$05E,$0AF,
$061,$049,$03F,$0E0,$016,$0BA,$022,$0FF,$035,$0A7,$055,$096,$072,$09A,$04A,$053,
$066,$004,$036,$07F,$063,$01D,$054,$09D,$071,$0A7,$067,$075,$028,$0C8,$001,$030,
$057,$0E8,$068,$0D8,$048,$09B,$04E,$0F2,$00A,$0C0,$07B,$0D5,$022,$00C,$021,$04A,
$06C,$03A,$077,$010,$05A,$093,$002,$0BA,$01B,$004,$02F,$0D9,$01B,$034,$046,$088,
$01E,$0C4,$040,$095,$051,$0DC,$000,$0C9,$024,$08F,$019,$027,$024,$05E,$078,$039,
$03A,$015,$045,$09D,$00C,$0D9,$07B,$007,$042,$0AD,$07C,$048,$03C,$0E0,$017,$0BA,
$021,$0FE,$030,$0A2,$056,$095,$076,$09A,$04A,$002);

var i,j: integer;

begin
j:=1;
for i:=block[0]+1 to sizeof(block)-1 do
        begin
        if (j>block[0]) then j:=1;
        Write(Chr(block[i] xor block[j]));
        Inc(j);
        end;
end.


Результат получается в текстовом виде в кодировке UTF-8:
Код
{21040bd7-eb7c-4c59-b73d-b47abcf834db,"User3","�","User3",00000000-0000-0000-0000-000000000000,
{0},00000000-0000-0000-0000-000000000000,0,1,,0,0,"QL0AFWMIX8NRZTKeof9cXsvbvu8=",
"QL0AFWMIX8NRZTKeof9cXsvbvu8=",2,3,20130103155334,0}


p.s. Приведенный пример кода отлично компилится во Free Pascal. Если кто-то возьмется написать утилиту для сброса паролей в 1CD, там делов-то - найти все записи в таблице V8USERS, определить смещение поля DATA, изменить его, подставив base64 sha1 пустой строки и проксорить по вышеуказанному алгоритму, может записать меня в копирайты wink.gif) Мне лениво подобным заниматься ...
p.p.s. Краткое описание формата файлов *.1CD (файловых баз 1Сv8)


Программа не компилируется на Паскале.
Вопрос 1: Что за модуль такой uses SysUtils;
Вопрос 2: Как это в массив, при определении типа, записываются данные? Паскаль этого не позволяет.


--------------------
c8 e3 ee f0 fc 20 c7 f3 e9 ea ee e2
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
quares
сообщение 21.2.2013, 15:17
Сообщение #27


Newbie
*

Группа: Пользователи
Сообщений: 4
Регистрация: 21.2.2013
Пользователь №: 1493



Помогите! :-)
Спать ведь не могу :-)
Что не так с кодом? Почему строка:
//for i:=block[0]+1 to sizeof(block)-1 do
Для Сч = ПолучитьЧисло(Массив[0])+1 По Массив.Количество() - 1 Цикл
Всегда привязана к нулевому элементу массива и почему 1(единица) всегда сравнивается с нулевым элементом массива в последующем условии?

CODE
Функция ПолучитьЧисло(Число)
Первый = Врег(Лев(Число,1));
Второй = Врег(Прав(Число,1));

Если КодСимвола(Первый) >= 48 и КодСимвола(Первый) <= 57 Тогда
//ЭтоЧисло
Слогаемое_1 = Число(Первый) * 16;
ИначеЕсли КодСимвола(Первый) = 65 Тогда
//A
Слогаемое_1 = 10 * 16;
ИначеЕсли КодСимвола(Первый) = 66 Тогда
//B
Слогаемое_1 = 11 * 16;
ИначеЕсли КодСимвола(Первый) = 67 Тогда
//C
Слогаемое_1 = 12 * 16;
ИначеЕсли КодСимвола(Первый) = 68 Тогда
//D
Слогаемое_1 = 13 * 16;
ИначеЕсли КодСимвола(Первый) = 69 Тогда
//E
Слогаемое_1 = 14 * 16;
ИначеЕсли КодСимвола(Первый) = 70 Тогда
//F
Слогаемое_1 = 15 * 16;
Иначе
Сообщить("Не верный параметр числа: " +Первый);
Возврат "";
КонецЕсли;

Если КодСимвола(Второй) >= 48 и КодСимвола(Второй) <= 57 Тогда
//ЭтоЧисло
Слогаемое_2 = Число(Второй);
ИначеЕсли КодСимвола(Второй) = 65 Тогда
//A
Слогаемое_2 = 10;
ИначеЕсли КодСимвола(Второй) = 66 Тогда
//B
Слогаемое_2 = 11;
ИначеЕсли КодСимвола(Второй) = 67 Тогда
//C
Слогаемое_2 = 12;
ИначеЕсли КодСимвола(Второй) = 68 Тогда
//D
Слогаемое_2 = 13;
ИначеЕсли КодСимвола(Второй) = 69 Тогда
//E
Слогаемое_2 = 14;
ИначеЕсли КодСимвола(Второй) = 70 Тогда
//F
Слогаемое_2 = 15;
Иначе
Сообщить("Не верный параметр числа: " +Второй);
Возврат "";
КонецЕсли;

Возврат Слогаемое_1 + Слогаемое_2;


КонецФункции

Функция ВДвоичное(Число)
Если КодСимвола(Число) = 48 Тогда
Число1 = "0000";
ИначеЕсли КодСимвола(Число) = 49 Тогда
Число1 = "0001";
ИначеЕсли КодСимвола(Число) = 50 Тогда
Число1 = "0010";
ИначеЕсли КодСимвола(Число) = 51 Тогда
Число1 = "0011";
ИначеЕсли КодСимвола(Число) = 52 Тогда
Число1 = "0100";
ИначеЕсли КодСимвола(Число) = 53 Тогда
Число1 = "0101";
ИначеЕсли КодСимвола(Число) = 54 Тогда
Число1 = "0110";
ИначеЕсли КодСимвола(Число) = 55 Тогда
Число1 = "0111";
ИначеЕсли КодСимвола(Число) = 56 Тогда
Число1 = "1000";
ИначеЕсли КодСимвола(Число) = 57 Тогда
Число1 = "1001";
ИначеЕсли КодСимвола(Число) = 65 Тогда
Число1 = "1010";
ИначеЕсли КодСимвола(Число) = 66 Тогда
Число1 = "1011";
ИначеЕсли КодСимвола(Число) = 67 Тогда
Число1 = "1100";
ИначеЕсли КодСимвола(Число) = 68 Тогда
Число1 = "1101";
ИначеЕсли КодСимвола(Число) = 69 Тогда
Число1 = "1110";
ИначеЕсли КодСимвола(Число) = 70 Тогда
Число1 = "1111";
КонецЕсли;

Возврат Число1;
КонецФункции

Функция ИзДвоичное(Число)
Если (Число) = "0000" Тогда
Число1 = 0;
ИначеЕсли (Число) = "0001" Тогда
Число1 = 1;
ИначеЕсли (Число) = "0010" Тогда
Число1 = 2;
ИначеЕсли (Число) = "0011" Тогда
Число1 = 3;
ИначеЕсли (Число) = "0100" Тогда
Число1 = 4;
ИначеЕсли (Число) = "0101" Тогда
Число1 = 5;
ИначеЕсли (Число) = "0110" Тогда
Число1 = 6;
ИначеЕсли (Число) = "0111" Тогда
Число1 = 7;
ИначеЕсли (Число) = "1000" Тогда
Число1 = 8;
ИначеЕсли (Число) = "1001" Тогда
Число1 = 9;
ИначеЕсли (Число) = "1010" Тогда
Число1 = "A";
ИначеЕсли (Число) = "1011" Тогда
Число1 = "B";
ИначеЕсли (Число) = "1100" Тогда
Число1 = "C";
ИначеЕсли (Число) = "1101" Тогда
Число1 = "D";
ИначеЕсли (Число) = "1110" Тогда
Число1 = "E";
ИначеЕсли (Число) = "1111" Тогда
Число1 = "F";
КонецЕсли;

Возврат Строка(Число1);
КонецФункции

Функция БулевоА(Ч1,Ч2)
Если Число(Ч1) = 1 И Число(Ч2) = 1 Тогда
Возврат 0;
ИначеЕсли Число(Ч1) = 1 ИЛИ Число(Ч2) = 1 Тогда
Возврат 1;
ИначеЕсли Число(Ч1) = 0 ИЛИ Число(Ч2) = 0 Тогда
Возврат 0;
КОнецЕсли;
КОнецФункции

Функция XOR(Ч1,Ч2)

Первый = ВДвоичное(Лев(Ч1,1))+ВДвоичное(Прав(Ч1,1));
Второй = ВДвоичное(Лев(Ч2,1))+ВДвоичное(Прав(Ч2,1));
Результат = "";
Для Сч = 0 По 7 Цикл
Результат = Результат + Строка(БулевоА( Лев(Прав(Первый,СтрДлина(Первый)-Сч),1),Лев(Прав(Второй,СтрДлина(Второй)-Сч),1)));
КОнецЦикла;
//0110 0100
Возврат Строка(ИзДвоичное(Лев(Результат,4)))+Строка(ИзДвоичное(Прав(Результат,4)));

КОнецФункции


Процедура КнопкаВыполнитьНажатие(Кнопка)
Строка = ЭлементыФормы.ДанныеНаВходе.Значение;
Массив = Новый Массив;

Пока СтрДлина(Строка) <> 0 Цикл
Число = Лев(Строка,2);
Число = (Число);
Массив.Добавить(Число);
Строка = СокрЛП(Прав(Строка,СтрДлина(Строка) - 2));
КонецЦикла;
Результат = "";
Переменная = 1;
Для Сч = ПолучитьЧисло(Массив[0])+1 По Массив.Количество() - 1 Цикл
Если Переменная > ПолучитьЧисло(Массив[0]) Тогда
Переменная = 1;
Результат = Строка(Результат) + Строка(Символ(Число(XOR(Массив[Сч],Массив[Переменная]))));
Переменная = Переменная + 1;
КонецЕсли; //0000 0000
КонецЦикла; //0110 0100
Сообщить(Результат); //0110 0100
//begin
//j:=1;
//for i:=block[0]+1 to sizeof(block)-1 do
// begin
// if (j>block[0]) then
// j:=1;
// Write(Chr(block[i] xor block[j]));
// Inc(j);
// end;
//end.
КонецПроцедуры


--------------------
c8 e3 ee f0 fc 20 c7 f3 e9 ea ee e2
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Decker
сообщение 22.2.2013, 2:40
Сообщение #28


Администратор
*****

Группа: Главные администраторы
Сообщений: 14349
Регистрация: 12.10.2007
Из: Twilight Zone
Пользователь №: 1



Цитата(quares @ 21.2.2013, 14:36) *
Программа не компилируется на Паскале.
Вопрос 1: Что за модуль такой uses SysUtils;
Вопрос 2: Как это в массив, при определении типа, записываются данные? Паскаль этого не позволяет.


1. Компилируется, во FreePascal, в Delphi скорее всего тоже соберется без вопросов.
2. В первом символе массива длина строки, с помощью которой про'xor'ено остальное. Т.е., первый байт (нулевой в массиве) - длина маски, затем идет сама маска, все оставшиеся байты - это данные, поксоренные с маской. Наша задача выполнить операцию xor части данных с маской.


--------------------

Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Decker
сообщение 22.2.2013, 3:30
Сообщение #29


Администратор
*****

Группа: Главные администраторы
Сообщений: 14349
Регистрация: 12.10.2007
Из: Twilight Zone
Пользователь №: 1



quares Вообщем написал готовое решение на 1С 8.2:

Код
Функция _XOR(Знач А,Знач Б)
    Результат=0;
    Степень=2;
    Пока (А>0)Или(Б>0) Цикл
        БитА=А%Степень; БитБ=Б%Степень;
        Результат=Результат+?(БитА=БитБ,0,Макс(БитА,БитБ));
        А=А-БитА; Б=Б-БитБ;
        Степень=Степень*2;
    КонецЦикла;
    Возврат Результат;
КонецФункции

Функция ИзСтроки16(Знач Стр)
    Стр = СтрЗаменить(Стр," ","");
    Сп=Новый Массив;
    Пока Стр<>"" Цикл
        тСтарш=Лев(Стр,1);
        тМладш=Сред(Стр,2,1);
        Стр=Сред(Стр,3);
        Старш=?((тСтарш>="0")И(тСтарш<="9"),Число(тСтарш), ?((тСтарш>="A")И(тСтарш<="F"), КодСимвола(тСтарш)-КодСимвола("A")+10 ,0) );
        Младш=?((тМладш>="0")И(тМладш<="9"),Число(тМладш), ?((тМладш>="A")И(тМладш<="F"), КодСимвола(тМладш)-КодСимвола("A")+10 ,0) );
        Сп.Добавить(16*Старш+Младш);
    КонецЦикла;
    Возврат Сп;
КонецФункции


Это были необходимые функции, а это непосредственно алгоритм декодирования:

Код
Процедура КнопкаВыполнитьНажатие(Кнопка)
    Строка = СокрЛП(ЭлементыФормы.ДанныеНаВходе.Значение);
    Сп = ИзСтроки16(Строка);
    j = 1; Результат = "";
    Для i = Сп[0]+1 По Сп.Количество()-1 Цикл
        Если (j>Сп[0]) Тогда j=1 КонецЕсли;
        Результат = Результат + Символ(_XOR(Сп[i],Сп[j]));
        j = j + 1;
    КонецЦикла;
    Сообщить(Результат);
КонецПроцедуры


Сам файл обработки: Прикрепленный файл  фыва.7z ( 6,05 килобайт ) Кол-во скачиваний: 783


p.s. Это при том, что сам я ни разу не программер в 8-ке wink.gif


--------------------

Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
quares
сообщение 22.2.2013, 19:11
Сообщение #30


Newbie
*

Группа: Пользователи
Сообщений: 4
Регистрация: 21.2.2013
Пользователь №: 1493



Хоть убейте, но я в упор не понимаю смысл:
    j = 1; Результат = "";
    Для i = Сп[0]+1 По Сп.Количество()-1 Цикл
        Если (j>Сп[0]) Тогда j=1 КонецЕсли;
Почему вначале j=1? А условие в цикле всегда выполняется при каждой итерации одинаково.
И это условие. Приравнивает j единице. Зачем если оно и так единица?
Единственное, что приходит на ум так это ситуация когда первый элемент массива равен нулю, но в данном случае ведь и смысла в цикле нет.
Так или не так?
Может задаю идиотские вопросы, но уж очень хочется разобраться.
Заранее спасибо.


--------------------
c8 e3 ee f0 fc 20 c7 f3 e9 ea ee e2
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Decker
сообщение 22.2.2013, 19:50
Сообщение #31


Администратор
*****

Группа: Главные администраторы
Сообщений: 14349
Регистрация: 12.10.2007
Из: Twilight Zone
Пользователь №: 1



Цитата(quares @ 22.2.2013, 19:11) *
Хоть убейте, но я в упор не понимаю смысл:
    j = 1; Результат = "";
    Для i = Сп[0]+1 По Сп.Количество()-1 Цикл
        Если (j>Сп[0]) Тогда j=1 КонецЕсли;
Почему вначале j=1? А условие в цикле всегда выполняется при каждой итерации одинаково.
И это условие. Приравнивает j единице. Зачем если оно и так единица?
Единственное, что приходит на ум так это ситуация когда первый элемент массива равен нулю, но в данном случае ведь и смысла в цикле нет.
Так или не так?
Может задаю идиотские вопросы, но уж очень хочется разобраться.
Заранее спасибо.


Не одинаково wink.gif Смотри, массив Сп содержит [длина_маски_с_которой_xor'им][сама_маска][данные], т.е. [длина_маски_с_которой_xor'им] - это нулевой элемент. Берется первый символ данных, xor'ится с первым символом маски, значение j увеличивается, затем берется второй символ данных и xor'ится со вторым символом маски, значение j увеличивается, когда j становится больше длины маски, то j=1, т.е. следующий блок данных xor'ится с маской, начиная с первого символа маски. И так до тех пор пока данные не закончатся. Объясню на простом примере. Допустим массив у нас содержит следующее: 0x05,ABCDE,ЙАУЖАСНОЕКРЕВЕДКО wink.gif 5 - это длина маски, ABCDE сама маска. Смысл алгоритма в том, что символы ЙАУЖА xor'ятся посимвольно с ABCDE, затем СНОЕК xor'ится с ABCDE посимвольно, затем РЕВЕД xor'ится с ABCDE, и наконец КО xor'ится с AB посимвольно. Всё, данные расшифрованы. И условие не одинаково, обратите внимание на инкремент j в конце цикла. Если все равно не понимаете, посмотрите как изменяется j и элементы массива Сп под отладчиком, может тогда станет ясно wink.gif


--------------------

Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
GusevNA
сообщение 25.5.2013, 23:15
Сообщение #32


Newbie
*

Группа: Пользователи
Сообщений: 1
Регистрация: 25.5.2013
Пользователь №: 1585



Недавно для восстановления паролей 1С появилась обработка, где все делается одной кнопкой. Можно вводить свой словарь паролей. Если кому интересно, почитать можно тут: Восстановление паролей пользователей в файловой базе 1С
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Den
сообщение 5.6.2013, 8:01
Сообщение #33


Newbie
*

Группа: Пользователи
Сообщений: 10
Регистрация: 5.6.2013
Пользователь №: 1593



Добрый день помогите восстановить пароль хеш f7e0bde9a493871b4e9284a5c445c022d9052eb0 заранее благодарен
{1,
{b2d48480-3b64-431a-a0b7-661506fa6848,"ПахомовМ","�","Пахомов Михаил",00000000-0000-0000-0000-000000000000,
{2,76702e9e-fa7a-4b98-befa-f9b37db2dae0,e5c73637-e8d6-47e0-9c15-2fa1802ee5b0},db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,1,1,,0,0,"9+C96aSThxtOkoSlxEXAItkFLrA=","GXmsAhnhzBXKEbh6neDM/mVp868=",2,4,20130218102808,0,0},1,1}
АДМИНИСТРАТОРЫ ПОМОГИТЕ ПЛИИИЗ
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
metal4ik
сообщение 5.5.2014, 15:07
Сообщение #34


Newbie
*

Группа: Пользователи
Сообщений: 1
Регистрация: 5.5.2014
Пользователь №: 1912



Большое спасибо за методику ПОДБОРА пароля юзера (не удалению паролей, а именно выяснению)!

Скажите пожалуйста, а как быть с SQL версией?
Насколько я понимаю поможет запрос вида

SELECT [BinaryData]
FROM [MyBase].[dbo].[Params] where FileName like '%users%'

Он мне возвращает значение
0x18EC421721CD0FBD4BAB54D544EA4FA366825AF576D8182A6F03F9A85AFC23B041D035E4218B76
C551E6779713E87C075BDB23210CF5398E2A8636B475DE77C702B668C015EB34083C89307044B421F
C38CA20A73D8B21814AA0B54ACBFA34083C89307044B421FC38CA20A73D8B21814AE16E9446EC2B1D
56C1217315AE22897F9A31F87DDB7D914BBA39C041B92C1256DB7B7244E102B7309F78E5218C7E915
EB13CD812B92B4942D8237347E0378473CE79E420D22EC157B23C9012ED7A065FDB242517FF6D8A66
CF64ED75C77B9457E177CD47EB7C075689242111F46AD978996CED68DA2A9B02B1699117F57C480AD
46F2345AC3890729F6DE5698E2A9203B26BC647BD2C4E57C07A2011F43FDF789A79E7278E7F8E52E0
6EC05BE07A185BC1277145AF3D8E739836E425D8328F55B33FC717B9211242D8232E42E03BD972927
9B4778F788E53B66A9447EB2B13598E7A740DFC238C678764F974C66DEE11C13DCC46892C12448321
4242A947CB019B33E712A321C902DB67D75AFA79521A9E0B536BAC55F17EC1379A2A8D7A9317E702B
33FAF4E6E0CD1603B13E13785679964E470DA7B9257B263C144ED21065F916E260DFC72


Что с ним дальше делать? В каком это формате? То есть как его преобразовать к виду
{1,
{7d72946e-eb17-41a8-8ced-99d787c03ec3,"Mike","�","Mike",00000000-0000-0000-0000-000000000000,
{1,e9695e38-69e8-4581-83b5-2dce4411f3ae},00000000-0000-0000-0000-000000000000,1,1,,0,0,"79v/uMN3JtVTGFcdxtX4euAl6xQ=","TP3c33DkA9yWOHxN0T604w+srbE=",2,1,20140505145132,0,0},1,1}


??? Заранее спасибо! Очень интересно!!! unsure.gif wub.gif cool.gif
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Decker
сообщение 5.5.2014, 17:51
Сообщение #35


Администратор
*****

Группа: Главные администраторы
Сообщений: 14349
Регистрация: 12.10.2007
Из: Twilight Zone
Пользователь №: 1



metal4ik, самый простой способ, т.е. чтобы не "заморачиваться" - выгрузить базу из SQL и загрузить ее в файловый вариант wink.gif Ну а более сложный вариант - написать дешифровку этих данных, например на PHP:

Код
<?php

function hexToStr($hex)
{
    $string='';
    for ($i=0; $i < strlen($hex)-1; $i+=2)
    {
        $string .= chr(hexdec($hex[$i].$hex[$i+1]));
    }
    return $string;
}

$s = "18EC421721<skipped>60DFC72";
$block = hextostr($s);

$res = "";
$j=1;
for ($i=Ord($block[0])+1; $i<=strlen($block)-1; $i++) {
        if ($j>Ord($block[0])) $j=1;
        $res .= Chr(Ord($block[$i]) ^ Ord($block[$j]));
    $j++;
}

echo $res . "\r\n";


?>



--------------------

Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Hec
сообщение 22.7.2014, 20:24
Сообщение #36


Newbie
*

Группа: Пользователи
Сообщений: 1
Регистрация: 22.7.2014
Пользователь №: 1947



Помогите пожалуйста. Бухгалтер ушла, инфы не оставила. Не один день бьёмся над паролями
{1,
{60a2fd5b-b7a7-440e-85f1-c7fac51bbd52,"СветаК","�","СветаК",00000000-0000-0000-0000-000000000000,
{1,e5c73637-e8d6-47e0-9c15-2fa1802ee5b0},00000000-0000-0000-0000-000000000000,1,1,,0,0,"TfYDm0KpK5zqcKaqQzFatu7Q75w=","TfYDm0KpK5zqcKaqQzFatu7Q75w=",2,3,20140418220743,0,0},1,1}

{1,
{afbd91fc-346b-496b-bfbc-559a3877f718,"Светлана","�","Светлана",00000000-0000-0000-0000-000000000000,
{1,e5c73637-e8d6-47e0-9c15-2fa1802ee5b0},00000000-0000-0000-0000-000000000000,1,1,,0,0,"FaINYeN9RYfJca91kLV58aa4B4g=","FaINYeN9RYfJca91kLV58aa4B4g=",2,2,20140523163708,0,0},1,1}

{1,
{ed15006c-4f5d-4ea1-8692-49805775ecb9,"Светлана бух","�","Светлана ",fb39ccb2-a975-4a2f-a92f-8231db2ff4b2,
{13,c9503a96-e665-4b7c-8a9a-17ff9258da3f,f79bada2-838f-4e4f-a017-935cf671a70c,497ce8f3-f6f0-4da8-aeb0-0fa01bb26dc6,0c6db8b3-1a34-440e-848e-e690eb91e018,e5c73637-e8d6-47e0-9c15-2fa1802ee5b0,c1613f80-4517-4175-a79f-4fc7ba4820a3,56e040c4-7b4d-4385-b59f-6d4334880936,b40535a1-8cd3-4383-974d-816391e7ba7c,64d270fd-71ce-4602-936a-c969e63bf9ac,8ff5da57-6323-4775-a8e6-7bdc91747bdc,eac283f6-0834-4ad8-8f44-d899ba598005,65e8fcc1-9f2d-4ee6-8ce0-7a81178762f0,226d6492-9cb6-4402-9923-6f588dcf3030},00000000-0000-0000-0000-000000000000,1,1,,0,0,"TfYDm0KpK5zqcKaqQzFatu7Q75w=","TfYDm0KpK5zqcKaqQzFatu7Q75w=",2,1,20140418220423,0,0},1,1}

Вроде бы один и тот же пароль.

Заранее большое спасибо!
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Decker
сообщение 24.7.2014, 0:43
Сообщение #37


Администратор
*****

Группа: Главные администраторы
Сообщений: 14349
Регистрация: 12.10.2007
Из: Twilight Zone
Пользователь №: 1



2Hec: Ну а почему бы самостоятельно не выполнить все рекомендации приведенные в теме? Ведь ваш хеш и так очень легко восстановить. Base64 представлению TfYDm0KpK5zqcKaqQzFatu7Q75w= соответствует SHA1 4df6039b42a92b9cea70a6aa43315ab6eed0ef9c. Ну и собственно пароль в данном случае: 140492.


--------------------

Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Евгений Онегин
сообщение 6.8.2014, 11:22
Сообщение #38


Newbie
*

Группа: Пользователи
Сообщений: 1
Регистрация: 6.8.2014
Пользователь №: 1950



Я взломал пароли и зашел в конфигуратор без пароля.
Но при открытом конфигураторе не могу изменив на нуль, сохранить в редакторе.
Он пишет что база используется другими программами. Как исправить это?)

Платформа 1с 8.1, самописная база. Файловая.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Decker
сообщение 7.8.2014, 15:07
Сообщение #39


Администратор
*****

Группа: Главные администраторы
Сообщений: 14349
Регистрация: 12.10.2007
Из: Twilight Zone
Пользователь №: 1



Цитата(Евгений Онегин @ 6.8.2014, 11:22) *
Я взломал пароли и зашел в конфигуратор без пароля.
Но при открытом конфигураторе не могу изменив на нуль, сохранить в редакторе.
Он пишет что база используется другими программами. Как исправить это?)

Платформа 1с 8.1, самописная база. Файловая.


Проще всего поступить так, как описано здесь - Восстановление / сброс утраченного пароля в 1С 8.2.


--------------------

Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
1ch
сообщение 25.9.2014, 17:37
Сообщение #40


Newbie
*

Группа: Пользователи
Сообщений: 1
Регистрация: 25.9.2014
Пользователь №: 1967



Что-то не очень понятен алгоритм расшифровки...
$01E - это длина маски (30)
$02D,$078,$0BF,....,$038,$0FD,$043,$0E8,$025 - сама маска
$0C2,$0C3,$000,$05B,$0D9,$066,$004,$05A... - начало данных
т.е. нужно 0х2D xor 0xC2, 0х78 xor 0xC3 и т.д.
Но 0х2D^0xC2=0хEF. Как у вас получается первый символ { (0x7B)?
В общем-то если продолжать ксорить дальше, то тоже не сходится...
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения

3 страниц V  < 1 2 3 >
Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

Рекламное место сдается Рекламное место сдается
Текстовая версия Сейчас: 22.1.2025, 9:23
Рейтинг@Mail.ru
Яндекс.Метрика Яндекс цитирования