Посл.ответ |
Сообщение |
Ранг: 4.9 (гость) Активность: 0.01↘0 Статус: Участник
|
Создано: 11 августа 2004 07:11 · Личное сообщение · #1
Прога регистрируется паролем. В ней зашито куча шифрованных паролей. При введении пароля она шифрует мой и сверяет с одним из вшитых в нее.
Вот алгоритм шифрования:
004BF182 |. B9 01000000 MOV ECX,1
004BF187 |> 8BD8 /MOV EBX,EAX // в eax длина пароля
004BF189 |. C1E3 05 |SHL EBX,5
004BF18C |. C1E8 1B |SHR EAX,1B
004BF18F |. 33D8 |XOR EBX,EAX
004BF191 |. 8B45 FC |MOV EAX,DWORD PTR SS:[EBP-4] // в eax кладется мой введенный пароль
004BF194 |. 0FB64408 FF |MOVZX EAX,BYTE PTR DS:[EAX+ECX-1]
004BF199 |. 33D8 |XOR EBX,EAX
004BF19B |. 8BC3 |MOV EAX,EBX
004BF19D |. 41 |INC ECX
004BF19E |. 4A |DEC EDX // в edx длина моего пароля
004BF19F |.^75 E6 \JNZ SHORT XSpider.004BF187
004BF1A1 |> 69C0 453F359E IMUL EAX,EAX,9E353F45
В итоге в eax получается мой шифрованный пароль и потом сравнивается с правильным, но зашифрованным.
Правильный зашифрованный в hex - 4ee1602d.
Реально ли расшифровать его? Или тут надо еще знать длину пароля?
| Сообщение посчитали полезным: |
|
Ранг: 5.0 (гость) Активность: 0.01↘0 Статус: Участник
|
Создано: 11 августа 2004 07:56 · Личное сообщение · #2
Если ты знаешь алгоритм, по которому идет шифрация, то тебе надо взять правильный пароль и пройтись по нему этим алгоритмом в обратном порядке.
| Сообщение посчитали полезным: |
Ранг: 160.1 (ветеран) Активность: 0.07↘0 Статус: Участник
|
Создано: 11 августа 2004 08:28 · Личное сообщение · #3
это не шифровка а хеш. Выглядит примерно так:
#define rol5(x) (((x) << 5) | ((x) >> 0x1b))
DWORD getCRC( char *pass, int len )
{
DWORD crc = len;
for( int i = 0; i < len; ++i )
{
crc = ~rol5(crc);
crc ^= pass[i];
}
crc *= 0x9E353F45;
return crc;
}
навскидку однозначно не обращается, т.е. перебором. Какая может быть длина и какие символы в правильном пароле используются ?
| Сообщение посчитали полезным: |
Ранг: 0.0 (гость) Активность: 0=0 Статус: Участник
|
Создано: 11 августа 2004 15:16 · Личное сообщение · #4
а хеш функция не правильная-то...
| Сообщение посчитали полезным: |
Ранг: 4.9 (гость) Активность: 0.01↘0 Статус: Участник
|
Создано: 11 августа 2004 15:25 · Личное сообщение · #5
2 MARcoDEN
это и так ясно
2 infern0
Длина примерно символов 10, а символы - цифры и буквы вроде.
Видимо прийдется брутфорсить.
| Сообщение посчитали полезным: |
Ранг: 160.1 (ветеран) Активность: 0.07↘0 Статус: Участник
|
Создано: 12 августа 2004 06:14 · Личное сообщение · #6
d_chaos пишет:
а хеш функция не правильная-то...
возможно, тестового примера входа и выхода не привели.
Вообще-то в оригинале так:
#define rol5(x) (((x) << 5) ^ ((x) >> 0x1b))
и так:
crc = rol5(crc); // убрать ~
| Сообщение посчитали полезным: |
Ранг: 4.9 (гость) Активность: 0.01↘0 Статус: Участник
|
Создано: 12 августа 2004 15:31 · Личное сообщение · #7
Есть еще несколько вопросов:
1)Подскажите пожалуйста процедуру на асме для получения длины строки.
2)И как реализовать этот код на дельфи?
Вот есть такой код на асме:
MOV EAX,DWORD PTR SS:[EBP-4]
MOVZX EAX,BYTE PTR DS:[EAX+ECX-1]
Я пытаюсь на дельфях сделать тоже самое асмовской вставкой:
sn:=strtoint(edit1.Text);
asm
pushad
mov eax,dword ptr [sn]
movzx eax,byte ptr [eax+ecx-1]
popad
end;
Но в eax кладется sn только в шестнадцатиричном виде и это ясно, но как положить в eax адрес того что находится в sn?
| Сообщение посчитали полезным: |
Ранг: 145.8 (ветеран) Активность: 0.07↘0 Статус: Участник www.int3.net
|
Создано: 12 августа 2004 16:23 · Личное сообщение · #8
Destroyer пишет:
положить в eax адрес того что находится в sn?
насколько я понял, тебе надо так:
lea eax, sn
mov ebx, [eax]
mov eax, [ebx]
ну и сохранять/восстанавливать регистры не надо. это ж дельфи.
| Сообщение посчитали полезным: |
Ранг: 4.9 (гость) Активность: 0.01↘0 Статус: Участник
|
Создано: 12 августа 2004 16:28 · Личное сообщение · #9
NG
Спасибо попробую
Остается еще 1 вопрос:
Подскажите пожалуйста процедуру на асме для получения длины строки.
| Сообщение посчитали полезным: |
Ранг: 145.8 (ветеран) Активность: 0.07↘0 Статус: Участник www.int3.net
|
Создано: 12 августа 2004 16:37 · Личное сообщение · #10
Destroyer пишет:
процедуру на асме для получения длины строки.
лол.
на асме можно, конечно, ручками писать. но апишки, имхо, рулят.
msdn те в руки. lstrlen
| Сообщение посчитали полезным: |
Ранг: 1288.1 (!!!!), 273thx Активность: 1.29↘0 Статус: Участник
|
Создано: 12 августа 2004 16:38 · Личное сообщение · #11
Destroyer
function lstrlen(Str: PChar): Integer;
| Сообщение посчитали полезным: |
Ранг: 145.8 (ветеран) Активность: 0.07↘0 Статус: Участник www.int3.net
|
Создано: 12 августа 2004 16:45 · Личное сообщение · #12
Ara
это асм?
invoke lstrlen, ADDR Str
mov length, eax
| Сообщение посчитали полезным: |
Ранг: 1288.1 (!!!!), 273thx Активность: 1.29↘0 Статус: Участник
|
Создано: 12 августа 2004 16:49 · Личное сообщение · #13
NG, как написано "Подскажите пожалуйста процедуру на асме ", вот и процедура.
| Сообщение посчитали полезным: |
Ранг: 1288.1 (!!!!), 273thx Активность: 1.29↘0 Статус: Участник
|
Создано: 12 августа 2004 16:57 · Поправил: Ara · Личное сообщение · #14
NG пишет:
invoke lstrlen, ADDR Str
mov length, eax
........................
.data
length dd 0
Str db 128 dup(0)
..........................
.code
..........................
invoke lstrlen, ADDR Str
mov length, eax
| Сообщение посчитали полезным: |
Ранг: 4.9 (гость) Активность: 0.01↘0 Статус: Участник
|
Создано: 12 августа 2004 17:01 · Личное сообщение · #15
Круто, спасибо пойду все пробовать. А про lstrlen я что-то вообще забыл, спасибо.
| Сообщение посчитали полезным: |
Ранг: 4.9 (гость) Активность: 0.01↘0 Статус: Участник
|
Создано: 12 августа 2004 17:06 · Личное сообщение · #16
2 infern0
А есть какая-нибудь стандартная процедура для подсчета хэша на дельфях?
| Сообщение посчитали полезным: |
Ранг: 145.8 (ветеран) Активность: 0.07↘0 Статус: Участник www.int3.net
|
Создано: 12 августа 2004 17:07 · Личное сообщение · #17 |
Ранг: 1288.1 (!!!!), 273thx Активность: 1.29↘0 Статус: Участник
|
Создано: 12 августа 2004 17:11 · Личное сообщение · #18
NG пишет:
БРЕД! называется, найди 5 ошибок в посте Ары!!!
Сорри, поправил!
Пить меньше надо!
| Сообщение посчитали полезным: |
Ранг: 145.8 (ветеран) Активность: 0.07↘0 Статус: Участник www.int3.net
|
Создано: 12 августа 2004 17:19 · Личное сообщение · #19
а точечки ж вроде не компилятся!
| Сообщение посчитали полезным: |
Ранг: 1288.1 (!!!!), 273thx Активность: 1.29↘0 Статус: Участник
|
Создано: 12 августа 2004 17:21 · Личное сообщение · #20 |
Ранг: 145.8 (ветеран) Активность: 0.07↘0 Статус: Участник www.int3.net
|
Создано: 12 августа 2004 17:37 · Личное сообщение · #21
Ara пишет:
MASM64
ой, а хто ето?
| Сообщение посчитали полезным: |
Ранг: 160.1 (ветеран) Активность: 0.07↘0 Статус: Участник
|
Создано: 13 августа 2004 08:23 · Поправил: infern0 · Личное сообщение · #22
Destroyer пишет:
А есть какая-нибудь стандартная процедура для подсчета хэша на дельфях?
я не пишу на паскакале, только реверсирую
да и зачем оно тебе ? алгоримтм есть, надо только немного подумать как сузить поле поиска...
| Сообщение посчитали полезным: |
Ранг: 4.9 (гость) Активность: 0.01↘0 Статус: Участник
|
Создано: 17 августа 2004 16:36 · Личное сообщение · #23
А пойдет ли какая-нибудь библиотека для подсчета хэша? Как узнать какой алгоритм применяются (MD5 и т.д.)?
| Сообщение посчитали полезным: |
Ранг: 145.8 (ветеран) Активность: 0.07↘0 Статус: Участник www.int3.net
|
Создано: 17 августа 2004 17:19 · Личное сообщение · #24
Destroyer
а зачем, если у тебя УЖЕ есть весь код?
| Сообщение посчитали полезным: |
Ранг: 4.9 (гость) Активность: 0.01↘0 Статус: Участник
|
Создано: 17 августа 2004 17:26 · Личное сообщение · #25
Хотя правда, ладно накатал тут кое-что, пойду проверять.
| Сообщение посчитали полезным: |
Ранг: 4.9 (гость) Активность: 0.01↘0 Статус: Участник
|
Создано: 19 августа 2004 16:32 · Личное сообщение · #26
Всем спасибо забрутфорсил я это всё!
infern0, а как ты узнал что это хэш?
| Сообщение посчитали полезным: |
Ранг: 145.8 (ветеран) Активность: 0.07↘0 Статус: Участник www.int3.net
|
Создано: 19 августа 2004 16:53 · Личное сообщение · #27
Destroyer пишет:
infern0, а как ты узнал что это хэш?
потому что инферно -- матерый крякер, который не раз сталкивался к порн... криптографией.
а вообще, алгоритм и так видно.
| Сообщение посчитали полезным: |
Ранг: 203.3 (наставник) Активность: 0.22↘0 Статус: Участник UPX Killer -d
|
Создано: 19 августа 2004 16:58 · Личное сообщение · #28
Destroyer пишет:
004BF19F |.^75 E6 \JNZ SHORT XSpider.004BF187
Это XSpider(сканер безопасности)? Так он же бесплатный. Что за версия?
----- Я медленно снимаю с неё UPX... *FF_User* | Сообщение посчитали полезным: |
Ранг: 4.9 (гость) Активность: 0.01↘0 Статус: Участник
|
Создано: 19 августа 2004 17:40 · Личное сообщение · #29
AlexZ
Да, он не бесплатный. Версия 6.01
| Сообщение посчитали полезным: |
Ранг: 4.9 (гость) Активность: 0.01↘0 Статус: Участник
|
Создано: 20 августа 2004 14:17 · Личное сообщение · #30
infern0, а как ты узнал что это хэш?
| Сообщение посчитали полезным: |