Сейчас на форуме: Rio, johnniewalker, vsv1, Magister Yoda (+6 невидимых)

 eXeL@B —› Крэки, обсуждения —› Помогите опознать блочный алгоритм
. 1 . 2 . >>
Посл.ответ Сообщение

Ранг: 3.1 (гость)
Активность: 0=0
Статус: Участник

Создано: 19 июля 2011 12:37
· Личное сообщение · #1

Столкнулся с реализацей алгоритма, непонятно что-то стандартное или кастом:

Ключ: 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37

алгоритм расширения ключа такой:

[code]
key: array[0..7] of byte = (
$30, $31, $32, $33, $34, $35, $36, $37
);

for j:=0 to 7 do
begin
//calc 4 bytes of expanded key array
for i:=0 to 3 do
a:=key[i*2+1]+(key[i*2]+key[i*2] shl 2) shl 1;

//rotate key buffer to one byte right
// 01234567
// 12345670
// 23456701
// 34567010

tmp:=key[7];
key[7]:=key[6];
key[6]:=key[5];
key[5]:=key[4];
key[4]:=key[3];
key[3]:=key[2];
key[2]:=key[1];
key[1]:=key[0];
key[0]:=tmp;
end;
[/code]

результат:
[code]Expanded key:
keyexpanded: array[0..31] of byte = (
$11, $27, $3D, $53, $56, $1C, $32, $48,
$53, $11, $27, $3D, $48, $56, $1C, $32,
$3D, $53, $11, $27, $32, $48, $56, $1C,
$27, $3D, $53, $11, $1C, $32, $48, $56
);
[/code]

дальше 8 раундов XOR побайтно с расширенным ключом




Ранг: 529.0 (!), 110thx
Активность: 0.290.04
Статус: Участник
5KRT

Создано: 19 июля 2011 12:51
· Личное сообщение · #2

Может быть какой нибудь RC6. Лучше выложи жертву

-----
Research For Food




Ранг: 3.1 (гость)
Активность: 0=0
Статус: Участник

Создано: 19 июля 2011 13:02 · Поправил: supaplex
· Личное сообщение · #3

жертва под TMS процессор, на данный момент этот кусок получилось оттрейсить, работает идентично родному.
Т.е. на входе 8 байт, + ключ 8 байт,
попробую раунды тоже перевести в удобоваримое.

Подобный алгоритм расширения ключа не нашел ни в одном примере.
Он простенький вроде, никаких sbox и т.п. возможно на Feal похоже. Левый и правый dword xorятся с данными ключа.



Ранг: 516.1 (!), 39thx
Активность: 0.280
Статус: Участник

Создано: 19 июля 2011 13:57 · Поправил: Av0id
· Личное сообщение · #4

имхо простые бинарные сдвиги

Code:
  1. tmp:=key[7];
  2. key[7]:=key[6];
  3. key[6]:=key[5];
  4. key[5]:=key[4];
  5. key[4]:=key[3];
  6. key[3]:=key[2];
  7. key[2]:=key[1];
  8. key[1]:=key[0];
  9. key[0]:=tmp;


по идее заменяется на rol32(x,8)



Ранг: 67.4 (постоянный), 6thx
Активность: 0.050
Статус: Участник

Создано: 04 августа 2011 21:23 · Поправил: Kiev78
· Личное сообщение · #5

---



Ранг: 67.4 (постоянный), 6thx
Активность: 0.050
Статус: Участник

Создано: 05 августа 2011 13:25 · Поправил: Kiev78
· Личное сообщение · #6

---



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

Создано: 05 августа 2011 13:44
· Личное сообщение · #7

Судя по обилию ADD,ADC и MUL и полному отсутствию логических команд - арифметика какая-то



Ранг: 106.6 (ветеран), 7thx
Активность: 0.040.02
Статус: Участник

Создано: 05 августа 2011 13:51
· Личное сообщение · #8

На мой взгляд самопальное что то. Ты бы c помощью Hex-Rays "код свернул" для удобства - понятнее бы стало.



Ранг: 67.4 (постоянный), 6thx
Активность: 0.050
Статус: Участник

Создано: 05 августа 2011 14:10 · Поправил: Kiev78
· Личное сообщение · #9

---




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 05 августа 2011 16:02
· Личное сообщение · #10

Изобилие арифметического сложения наводит на мысль о самопальности процедуры.

-----
Yann Tiersen best and do not fuck




Ранг: 67.4 (постоянный), 6thx
Активность: 0.050
Статус: Участник

Создано: 05 августа 2011 16:19 · Поправил: Kiev78
· Личное сообщение · #11

---




Ранг: 527.7 (!), 381thx
Активность: 0.160.09
Статус: Участник
Победитель турнира 2010

Создано: 05 августа 2011 17:26
· Личное сообщение · #12

ИМХО: никакое это не шифрование, а длинное умножение (за исключением блока начиная с 00403311 - не разбирался)
Arg1 - длина в байтах первого сомножителя
Arg2 - указатель на первый сомножитель
Arg3 - указатель на буфер для произведения
Arg4 - значение второго сомножителя

-----
127.0.0.1, sweet 127.0.0.1




Ранг: 67.4 (постоянный), 6thx
Активность: 0.050
Статус: Участник

Создано: 05 августа 2011 18:53 · Поправил: Kiev78
· Личное сообщение · #13

---



Ранг: 67.4 (постоянный), 6thx
Активность: 0.050
Статус: Участник

Создано: 05 августа 2011 18:55 · Поправил: Kiev78
· Личное сообщение · #14

---




Ранг: 527.7 (!), 381thx
Активность: 0.160.09
Статус: Участник
Победитель турнира 2010

Создано: 05 августа 2011 20:30
· Личное сообщение · #15

Все таки это умножение, не поленился скопипастил функу в С и умножил

__long_mul(sizeof(A), A, AB, 2);

0x123456789ABCDEF0 * 2 = 0x2468ACF13579BDE0

можно проверить виндовским калькулятором


25f8_05.08.2011_EXELAB.rU.tgz - long_mul.RAR

-----
127.0.0.1, sweet 127.0.0.1





Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 05 августа 2011 20:33 · Поправил: reversecode
· Личное сообщение · #16

Kiev78
как по мне так там очень похоже на вариацию реализации rsa
а вы какую то отдельную ее функцию умножения решили хакнуть.
или просто решили изучить работу rsa на живом примере?



Ранг: 516.1 (!), 39thx
Активность: 0.280
Статус: Участник

Создано: 05 августа 2011 20:43
· Личное сообщение · #17

большие числа как правило так и хранятся, задом наперед и такой порядок называется little-endian



Ранг: 67.4 (постоянный), 6thx
Активность: 0.050
Статус: Участник

Создано: 05 августа 2011 20:48 · Поправил: Kiev78
· Личное сообщение · #18

---



Ранг: 67.4 (постоянный), 6thx
Активность: 0.050
Статус: Участник

Создано: 05 августа 2011 20:50
· Личное сообщение · #19

Av0id пишет:
большие числа как правило так и хранятся, задом наперед и такой порядок называется little-endian

Про числа и архитектуру х86 я знаю, только там не числа, а стринги (пример я привел выше).




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 05 августа 2011 21:18 · Поправил: reversecode
· Личное сообщение · #20

Kiev78
вы хоть программу изучали?
hasp, nethasp, alladin, rsa, aes
не знаю используется ли это все сразу или выборочно, но вы точно не посильную задачу себе взяли



Ранг: 67.4 (постоянный), 6thx
Активность: 0.050
Статус: Участник

Создано: 05 августа 2011 21:38 · Поправил: Kiev78
· Личное сообщение · #21

---




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 05 августа 2011 21:45
· Личное сообщение · #22

aes да, но у вас программа не разобрана, мне ковырятся не хочется
поэтому утверждать ничего не берусь
смотрите что происходит после перевода base64 хеша, в бинарный формат
там поидеи стоит rsa_decrypt
после чего получаете ключ, и далее в том ключе все остальные данные
если окажется rsa, то можете смело забить на программу
там кстати может стоять не сразу rsa, а тот же aes а потом rsa
вообщем ida в помощь




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 05 августа 2011 21:51
· Личное сообщение · #23

reversecode пишет:
если окажется rsa, то можете смело забить на программу

Если длинна ключа маленькая то можно и не забивать

-----
Yann Tiersen best and do not fuck





Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 05 августа 2011 22:23 · Поправил: reversecode
· Личное сообщение · #24

sub_404310 очень похоже на rsa_decrypt
она же вызывается в двух процедурах
где одна из них sub_40D670(read license?)
разбирает base64, переводит его в бинари формат, дексорит со статик буффером byte_4ED2D5, деАесит sub_401720(aessetkey),sub_401910(aesdecrypt)
и потом вызывается sub_404310
ну итд
там же в процедуре и набивание статик массивов, или rsa кей или еще какие, размерность одного 156 байт

ой не думаю что там в итоге маленкая длинна ключа
если там же есть еще одна реализация rsa1, где длинна ключа похожа на 268 байт(статик масив в hasp_login)

без полного разбора всего функционала работы с ключем ..



Ранг: 67.4 (постоянный), 6thx
Активность: 0.050
Статус: Участник

Создано: 14 августа 2011 05:44 · Поправил: Kiev78
· Личное сообщение · #25

---




Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 14 августа 2011 06:23
· Личное сообщение · #26

Kiev78 пишет:
Действительно ли это RSA?

на RSA совсем не похоже

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh


| Сообщение посчитали полезным: VodoleY, Kiev78

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

Создано: 14 августа 2011 08:33
· Личное сообщение · #27

Kiev78 как по мне рса тут нет, Isaev прав. РСА и длиннее и нет тут характерных для него тестов бит (если быстрая реализация рса) по поводу последнего цикла и контроль црц думаю ты прав. а вот первые цикл больше похош на складывание/отнимание одной строки(исходный текст) из дргой (ключ расшифровки) ниче стандартного в глаза не бросаеца

-----
Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме....





Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 14 августа 2011 09:53
· Личное сообщение · #28

Больше по строкам последний алгос на base64 похож, но сам алгос детально не смотрел.




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 14 августа 2011 11:37
· Личное сообщение · #29

Да ну какое RSA? Это похоже на base64 слепленый с base32

-----
Yann Tiersen best and do not fuck




Ранг: 67.4 (постоянный), 6thx
Активность: 0.050
Статус: Участник

Создано: 14 августа 2011 12:26 · Поправил: Kiev78
· Личное сообщение · #30

---


. 1 . 2 . >>
 eXeL@B —› Крэки, обсуждения —› Помогите опознать блочный алгоритм
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


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