![]() |
eXeL@B —› Вопросы новичков —› алгоритм ключа |
Посл.ответ | Сообщение |
|
Создано: 26 апреля 2009 20:50 · Поправил: Mavlyudov · Личное сообщение · #1 Вот, пытаюсь понять, как зашифрован пароль. Есть сам пароль и есть он же в зашифрованном виде(в hex). Вот несколько примеров: abcdefghijklmnopqrstuvw 17 4C F3-1F 46 44 29-49 F4 44 BE-20 7D 35 10 99 0F FE 59-59 3E D8 AE-55 ABCDEFGHIJKLMNOPQRSTUVW 17 6C D3-3F 66 64 09-69 D4 64 9E-00 5D 15 30 B9 2F DE 79-79 1E F8 8E-75 0123456789 0A 1D A0-4E 11 15 7A-18 AB 15 ED Единственное, что я понял, так это то, что первый байт в зашифрованном пароле означает его длину. Каждый символ, видимо, кодируется отдельно. Буду рад, если кто поможет. ![]() |
|
Создано: 26 апреля 2009 21:20 · Личное сообщение · #2 |
|
Создано: 26 апреля 2009 21:21 · Личное сообщение · #3 |
|
Создано: 26 апреля 2009 21:23 · Поправил: arnix · Личное сообщение · #4 |
|
Создано: 26 апреля 2009 21:24 · Личное сообщение · #5 |
|
Создано: 26 апреля 2009 21:26 · Поправил: Mavlyudov · Личное сообщение · #6 |
|
Создано: 26 апреля 2009 21:29 · Личное сообщение · #7 |
|
Создано: 26 апреля 2009 21:31 · Личное сообщение · #8 |
|
Создано: 26 апреля 2009 21:32 · Поправил: Mavlyudov · Личное сообщение · #9 |
|
Создано: 26 апреля 2009 21:33 · Личное сообщение · #10 |
|
Создано: 26 апреля 2009 21:37 · Поправил: arnix · Личное сообщение · #11 Mavlyudov пишет: Кстати, откуда взялось это 2D 91 7C ... Твой пример abcdefghijklmnopqrstuvw 17 4C F3-1F 46 44 29-49 F4 44 BE-20 7D 35 10 99 0F FE 59-59 3E D8 AE-55 'а' соттветствует 4C 'b' соттветствует F3 .. .. 'a' - это ascii 61 'b' - это ascii 62 .. .. делаем 4C xor 61 получаем 2D делаем F3 xor 62 получаем 91 .. .. ![]() |
|
Создано: 26 апреля 2009 21:40 · Поправил: Mavlyudov · Личное сообщение · #12 |
|
Создано: 26 апреля 2009 21:42 · Личное сообщение · #13 Mavlyudov пишет: Кстати, откуда взялось это 2D 91 7C ... abcdefghijklmnopqrstuvw 17 4C F3-1F 46 44 29-49 F4 44 BE-20 7D 35 10 99 0F FE 59-59 3E D8 AE-55 17 - ты сам сказал, это длина, отбрасываем её дальше побайтовый xor : 'a' xor 0x4C = 0x2D 'b' xor 0xF3 = 0x91 'c' xor 0x1F = 0x7C 'd' xor 0x46 = 0x22 'e' xor 0x44 = 0x21 'f' xor 0x29 = 0x4F 'g' xor 0x49 = 0x2E 'h' xor 0xF4 = 0x9C Дальше сам сможешь? ![]() |
|
Создано: 26 апреля 2009 21:45 · Личное сообщение · #14 |
|
Создано: 26 апреля 2009 21:46 · Личное сообщение · #15 |
|
Создано: 26 апреля 2009 21:48 · Личное сообщение · #16 |
|
Создано: 26 апреля 2009 22:13 · Личное сообщение · #17 Итак, мы имеем следующее: 0123456789abcdefghijklmnopqrstu 1F 1D A0-4E 11 15 7A-18 AB 15 ED-2A 73 3B 1A 93 19 E8 43-43 20 C6 B4-4F 65 3D 3E-DA 6D 76 81 31 Я уже доказал выше, что это XOR. Если посмотреть внимательно на хэш, можно заметить, что цикличности в нём нет, то есть каждый байт ксорится своим значением. Зная хэш максимальной длины, мы можем получить ключ, которым сможем расшифровать любой пароль по его хэшу. Ключ мы получаем побайтово делая операцию XOR. То есть: отсекаем байт длины, дальше побайтово ставим пароль и его хэш и ксорим: 0 1 2 3 4 5 6 7 8 9 a b c d e f g h i j k l m n o p q r s t u XOR 1D A0 4E 11 15 7A 18 AB 15 ED 2A 73 3B 1A 93 19 E8 43 43 20 C6 B4 4F 65 3D 3E DA 6D 76 81 31 = 2D 91 7C 22 21 4F 2E 9C .......... (дальше сами) Зная ключ, пробуем расшифровать хэш "08 3С E3 13 45 4E 3F 47 EF " Длина 8, отлично, берём первые 8 байт ключа (я их уже нашёл). Процесс расшифровки: 3С E3 13 45 4E 3F 47 EF XOR 2D 91 7C 22 21 4F 2E 9C = p r o g o p i s Мини-справка: "тетрада" - блок из 4 бит, шестнадцатеричная цифра ( 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F) "сложение по модулю 2" - он же XOR, операция, при которой происходит побитовое сложение операндов, результат округляется по модулю 2, то есть 1 xor 0=1, 0 xor 1 = 1, 1 xor 1=0, 0 xor 0 = 0 Верно следующее (докажите): Если a xor b =c, то a xor c =b и b xor c = a, поэтому если у нас есть некий пароль pass и хэш hash полученный операцией pass xor key = hash, мы можем определить этот ключ key = pass xor hash ![]() |
|
Создано: 26 апреля 2009 22:16 · Личное сообщение · #18 |
|
Создано: 26 апреля 2009 22:33 · Личное сообщение · #19 progopis Вообще-то есть. Я тут набросал на паскале код. Как можно его оптимизировать, чтобы по зашифрованному паролю получать настоящий. Что-то я пока не понимаю. Code:
![]() |
|
Создано: 26 апреля 2009 23:00 · Личное сообщение · #20 Я это себе вот так представляю: Code:
![]() |
|
Создано: 27 апреля 2009 00:12 · Личное сообщение · #21 progopis Спасибо за помощь! Вот, я доделал. Code:
Тему закрывать можно! Всем спасибо! ![]() |
![]() |
eXeL@B —› Вопросы новичков —› алгоритм ключа |
Эта тема закрыта. Ответы больше не принимаются. |