PDA

Просмотр полной версии : Помощь в восстановлении алгоритма шифрации.


St1mul
09.05.2014, 15:17
Появилось свободное время, начал реверсить одну защиту, дошел до алгоритма шифрации и вот что получилось:
шифрация заключается в операции AND между байтом пакета и байтом ключа.
Вопрос 1: Как мне обратно восстановить пакет, если я знаю ключ и зашифрованный пакет? Вопрос с изюминкой
Вопрос 2: Как в стандартной шифрации ИТ( с 16 байтным ключом ) происходит шифровация 17ого по счету байта пакета?
Вопрос 3: Что происходит с ключом после того как пакет был послан на сервер ( как изменился ключ после этого)?
Просьба всех, кто имеет хоть какие то соображения ответить.

alexteam
09.05.2014, 23:49
в операции AND между байтом пакета и байтом ключа.
необратимо.

St1mul
10.05.2014, 02:58
alexteam, Алгоритм немного сложнее:
Пусть байт, который шифруется будет - (1B)
байт ключа - (F5)
Сам алгоритм:
1.
1.1. NOT(F5) = (0A)
1.2. (1B)AND(0A) = (0A) // (RESULT1)
2.
2.1. NOT(1B) = (E4)
2.2. NOT(RESULT1) = (F5)
2.2 (E4)AND(F5) = E4 // RESULT2
3.
3.1 NOT(RESULT1) = F5
3.2 NOT(RESULT2) = 1B
3.3 (F5)AND(1B) = 11 // байт пакета на выходе после шифрации
Тоже самое можно получить обычной операцией (1B)AND(F5) = 11
.
Как быть дальше???

Добавлено через 1 час 17 минут
Я проверил по законам логического выражения: все вроде подходит, операция AND между байтом пакета и байтом ключа.
Я не могу понять как тогда сервер существует, если такой алгоритм в нем. Сам догадывается какой пакет ему ближе?

Добавлено через 52 минуты
бред какой-то.
стал реверсить клиент дальше, чтобы найти зацепку и нашел:
Нашел такой случай, когда в шифрации были следующие байты:
байт пакета: 1B и байт ключа 7E
по идее на выходе должно получиться (1B)AND(7E) = 1A
Но на выходе выходило постоянно 9A (сервер не меняет первые 5 байт в течении одной сессии)
Думал,думал, поэксперементировал и вышло следующее:
9A XOR 7E = E4 // NOT ( исходный байт пакета )
А также пример, который я написал выше подходит под это тоже:
11 XOR F5 = E4
.

Добавлено через 3 минуты
Спасибо алекстим 1 строчка, 1 слово, 1 точка, зато как помогло серьезно