Сейчас на форуме: Rio, YDS (+10 невидимых)

 eXeL@B —› Основной форум —› похоже на base64, но не оно.. а что? :)
Посл.ответ Сообщение


Ранг: 124.7 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 22 апреля 2006 06:56
· Личное сообщение · #1

на входе будет строка "BZTOygzN5QTOykTR1cjQ4kzN4ITO5kjQ5kTO1czM0UUMCVzN4M0Q1cDMBRjQFNDR3MTQ4 MTO2UTOxIzM1cDN5A=="
на выходе получаем:
output db "A6928794929E57B89782999B9995734E1B578CC570A4BE3D73A8396591235749",0

вот так вызывается дешифровка:
loc_463AA8:
lodsd
xor edx, edx
xor ebx, ebx
call sub_463AFA
shr eax, 8
call sub_463AFA
shr eax, 8
call sub_463AFA
shr eax, 8
call sub_463AFA
shr edx, 8
or bl, bl
jz short loc_463AF5
dec bl
jz short loc_463AF5
mov al, dl
stosb
inc [ebp+var_C]
dec bl
jz short loc_463AF5
shr edx, 8
mov al, dl
stosb
inc [ebp+var_C]
dec bl
jz short loc_463AF5
shr edx, 8
mov al, dl
stosb
inc [ebp+var_C]

loc_463AF5:

dec ecx
jnz short loc_463AA8

sub_463AFA proc near

cmp al, 3Dh
jz short loc_463B49
cmp al, 2Bh
jb short loc_463B49
cmp al, 7Ah
jg short loc_463B49
cmp al, 2Bh
jnz short loc_463B12
mov dl, 3Eh
jmp short loc_463B47
loc_463B12:
cmp al, 2Fh
jnz short loc_463B1B
mov dl, 3Fh
jmp short loc_463B47
loc_463B1B:
cmp al, 30h
jb short loc_463B49
cmp al, 39h
jg short loc_463B2C
mov dl, al
add dl, 4
jmp short loc_463B47
loc_463B2C:
cmp al, 41h
jb short loc_463B49
cmp al, 5Ah
jg short loc_463B3D
mov dl, al
sub dl, 41h
jmp short loc_463B47
loc_463B3D:
cmp al, 61h
jb short loc_463B49
mov dl, al
sub dl, 47h
loc_463B47:

inc bl

loc_463B49:

ror edx, 6
retn
sub_463AFA endp


в принципе есть идя, что просто "алфавит" другой, но какой?



Ранг: 136.5 (ветеран)
Активность: 0.030
Статус: Участник

Создано: 22 апреля 2006 09:02
· Личное сообщение · #2

Мне кажется, на входе текстовый ключ, на выходе значение хэш-функции.



Ранг: 310.8 (мудрец), 29thx
Активность: 0.430
Статус: Участник

Создано: 22 апреля 2006 12:15
· Личное сообщение · #3

Nitrogen пишет:
просто "алфавит" другой, но какой

A-Z => 0x00-0x19 a-z => 0x1a-0x33 0-9 => 0x34-0x3D + => 0x3E / => 0x3F
Это чистый base64.
Nitrogen пишет:
на выходе получаем:
output db "A6928794929E57B89782999B9995734E1B578CC570A4BE3D73A8396591235749",0

На выходе этой программы мы не можем текстовую строку получить - там хекс и совсем другой.
Ну правда есть код 05 94 - они есть в "хвосте" твоего output-а. Ты что-то напутал.




Ранг: 124.7 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 22 апреля 2006 13:20
· Личное сообщение · #4

tundra37
ну я же сказал, что это похоже на b64, но не оно.
смотри аттач. я там все это отдельно скомпилил. глянь что на входе, и что имеем на выходе, так же попробуй вбить любую b64-строку

ef94_22.04.2006_CRACKLAB.rU.tgz - base64mod.zip



Ранг: 310.8 (мудрец), 29thx
Активность: 0.430
Статус: Участник

Создано: 22 апреля 2006 16:26
· Личное сообщение · #5

Nitrogen пишет:
ну я же сказал, что это похоже на b64, но не оно.

Ты спрашивал про кусок программы. Я тебе сказал - это чистый b64.
В кейген-е, который ты теперь положил 6 кило и кейген явно не сводится к "огрызку".
Т.к. кейген защишен, то невежливо больше ничего не говорить.
Считай я обиделся Тем более, что это творение Trsh Team.




Ранг: 124.7 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 22 апреля 2006 16:36
· Личное сообщение · #6

tundra37
ты сказал, что там b64, но ведь ты ошибаешься, если это и b64, но модифицированный вариант (что собственно говоря я и сам знаю) и задача состоит в том, что бы написать b64mod_enc на основе декодера который был в аттаче
ты вообще во внутрь этого "кейгена" заглядывал? в аттаче та часть, которая делает т.н b64mod_dec
ты хоть его запускал? там даже нет банального upx-а, а ты говоришь о защите

3210_22.04.2006_CRACKLAB.rU.tgz - keygen.asm



Ранг: 310.8 (мудрец), 29thx
Активность: 0.430
Статус: Участник

Создано: 22 апреля 2006 17:34
· Личное сообщение · #7

У меня в olly нет таких адресов, как у тебя. Нашел я программу и протрассировал.
Интуиция меня не обманула : в нормальном base64 используют сдвиг влево, а здесь
вправо. В результате все шестерки битов внутри 4-х байтного слова переставлены слева направо.
И все вроде - сам смотри. Т.е. таблица - чистый base64, только сборка другая.



Ранг: 62.8 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 22 апреля 2006 20:48
· Личное сообщение · #8

tundra37
Так алгоритм-то другой, я не понял?



Ранг: 310.8 (мудрец), 29thx
Активность: 0.430
Статус: Участник

Создано: 23 апреля 2006 10:47
· Личное сообщение · #9

В оригинальном base64 из каждой буквы(цифры,знака) получают 6 бит, их пишут в младшие разряды
32-битного регистра и сдвигают влево. В данной программе сдвигают вправо. Что делается при переходе от слова к слову не проверял, но судя по минимальности команд - ничего особенного. Т.к. ты с битами похоже слабо разбираешься, а Интел еще сумел все запутать, читая байты в 32-битном слове задом наперед, то тебе еще предстоит долго разбираться. Либо на отладчике - это попроще, либо с карандашом и большим листом бумаги. Чтобы не мучиться, можно вызвать Виндовый калькулятор, перевести его в инженерный режим и наслаждаться просмотром в побитном и шестнадцатиричном виде. Для имитации сдвига можно использовать умножение на степень двойки. Есть специализированные калькуляторы в разных HexShop-ах, но это лишнее по-моему. Лучше все-таки olly.




Ранг: 124.7 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 23 апреля 2006 11:47
· Личное сообщение · #10

tundra37
а ты не путаешь b64 enc/dec?




Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

Создано: 24 апреля 2006 00:23
· Личное сообщение · #11

tundra37 пишет:
Это чистый base64.

для нормального base64 выход должен быть таким:
05 94 CE CA 0C CD E5 04
CE CA 44 D1 D5 C8 D0 E2
4C CD E0 84 CE E6 48 D0
E6 44 CE D5 CC CC D1 45
...
в данном же случае:
"A6928794929E57B89782999B9995734E1B578CC570A4BE3D73A8396591235749"
tundra37 пишет:
Ну правда есть код 05 94 - они есть в "хвосте" твоего output-а. Ты что-то напутал.

никаких намёков на корректный base64 нет
в "хвосте" нет 05 94 ! там 5749 - не очень то похоже!
так что, tundra, напутал ты.

я попробовал менять ближайшие слова/байты местами и рорить/ролить, но на base64 всё равно не похоже ;)

-----
EnJoy!





Ранг: 124.7 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 24 апреля 2006 09:06
· Личное сообщение · #12

Jupiter
там короче отличие в том, что 6ки-байт берутся справа, а не слева как по стандарту

b64mod_enc proc input_str:dword,output_str:dword,input_size:dword
mov ecx,input_size
mov edi,output_str
mov esi,input_str
encbegin:
lodsd
dec esi
mov ebx,eax
push ecx
mov ecx,4
encloop:
mov al,bl
shr ebx,6
and al,0111111b

.if (al>=0) && (al<26)
add al,41h
.elseif (al>=26) && (al<52)
sub al,26
add al,61h
.elseif (al>=52) && (al<62)
sub al,52
add al,30h
.elseif al==62
mov al,'-'
.elseif al==63
mov al,'+'
.endif
stosb
loop encloop
pop ecx
sub ecx, 3
jns encbegin
neg ecx
sub edi, ecx
mov al, '='
rep stosb
ret
b64mod_enc endp




Ранг: 310.8 (мудрец), 29thx
Активность: 0.430
Статус: Участник

Создано: 24 апреля 2006 10:49
· Личное сообщение · #13

Jupiter пишет:
в "хвосте" нет 05 94 ! там 5749 - не очень то похоже!
так что, tundra, напутал ты.

Все что вначале написано можешь забыть. Если бы я сразу ror правильно промоделировал, то и олли не понадобился. А про хвост это от отчаяния - я видел что байты кладут с головы, но там совсем не похоже было. В хвосте хоть три цифры совпадают. Как только прислали экзешник и я в олли увидел, как
A6 появилось в буфере после пары шагов - стало ясно, что есть перестановка. Так переставлены
шесть бит, то увидеть это сложно.

0 5 9 4 C E
0000 0101 1001 0100 1100 1110
000001 011001 010011 001110
переставляем 4 шестерки - 3 байта
001110 010011 011001 000001
0011 1001 0011 0110 0100 0001
читаем как текст - и т.д.
9 6 А




Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

Создано: 25 апреля 2006 07:03
· Личное сообщение · #14

Nitrogen
Сделал конвертер (см.аттач) для нормального Base64 и данного (изменённого).
Выводит одновременно Base64, ASCII, Hex Dump.
Алгоритм можно переключать на лету.

Для простоты использования можно вбить строку по умолчанию в файл Base64.ini:
[Base64Conv]
Data=Default text
Mode=1 ; 1-Original, 0-Modified


0ab7_25.04.2006_CRACKLAB.rU.tgz - Base64Conv.v1.0.rar

-----
EnJoy!





Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

Создано: 25 апреля 2006 07:15
· Личное сообщение · #15

Для твоего примера файл Base64.ini (должен лежать в папке с прогой)

[Base64Conv]
Data=BZTOygzN5QTOykTR1cjQ4kzN4ITO5kjQ5kTO1czM0UUMCVzN4M0Q1cDMBRjQFNDR3 MTQ4MTO2UTOxIzM1cDN5A==
Mode=0 ; 1-Original, 0-Modified


7e9e_25.04.2006_CRACKLAB.rU.tgz - Base64.ini

-----
EnJoy!





Ранг: 124.7 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 25 апреля 2006 08:04
· Личное сообщение · #16

Jupiter
красивенько




Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

Создано: 25 апреля 2006 18:12
· Личное сообщение · #17

Nitrogen пишет:
красивенько

спасибо ;) главное, что ещё и работает ;)

а в какой проге тебе попался подобный алго?

-----
EnJoy!





Ранг: 124.7 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 25 апреля 2006 20:10
· Личное сообщение · #18

я кстати работоспособность не проверял ))))
Chip-Explorer(Loader,Scaner)




Ранг: 124.7 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 26 апреля 2006 13:41
· Личное сообщение · #19

Jupiter
ты б еще конверт в обе стороны сделал а то оказыается тока енкриптит


 eXeL@B —› Основной форум —› похоже на base64, но не оно.. а что? :)
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати