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

 eXeL@B —› Основной форум —› Нужно расдекодировать файло. $
Посл.ответ Сообщение

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

Создано: 11 февраля 2006 04:07
· Личное сообщение · #1

---------------------------------------------------------------------- ---------------------------------------------------------------------- --
#define _PI 3,1415926535897932384626433832795

#define abs(a) (((a) > (0) ? (a) : (a*-1))
#define max(a,b) (((a) > (b)) ? (a) : (b))
#define min(a,b) (((a) < (b)) ? (a) : (b))
#define rand_(a,b) ((rand()%(b-a))+a)
#define randminmax(a,b,c) (((c) == (1)) ? (min(a,b)) : (max(a,b)))

// Черезвычайно-сложно взламываемое кодирование, необходимо передавать пароль на кодирование/декодирование,
// Кодировать если Coding=1, иначе Декодировать. алгоритм от 2006_01_10_1445
void StrFuncs_HardCoringOfMass(char inf[], unsigned __int32 SizeOfInf, char Password[], bool Coding)
{
// char inf[] - Массив для кодирования/ДЕкодирования
// int SizeOfINF - Размер этого массива
// char pass[] - Пароль для кодирования/ДЕкодирования
// bool CodeDeCode - CodeDeCode==0 - Выполнять КОДИРОВАНИЕ ~ CodeDeCode==1 - Выполнять ДЕкодирование

HGLOBAL hMem;
int i, j, PassCode = 23; // Технические переменные
int SizeOfNewPass=0; // Длинна НовогоПароля = Длинна Пароля * 2
char *NewPass;


while(Password[SizeOfNewPass]) SizeOfNewPass++; // Находим длинну изначального пароля
SizeOfNewPass *= 2; // Получаем длинну НовогоПароля
// выделяем память под НовыйПароль, длинна которого в два раза больше чем изначального
hMem = GlobalAlloc(GMEM_ZEROINIT, SizeOfNewPass);
NewPass = (CHAR*)GlobalLock(hMem);

for(i=j=0;Password[i];i++,j++)
{
PassCode += Password[i];
NewPass[j] = Password[i] + PassCode + j++;
NewPass[j] = Password[i] + j;
}
for(i=0;i<SizeOfNewPass;i++)
{
NewPass[i] += PassCode;
}
NewPass[SizeOfNewPass] = '\0';

if(Coding)
{
// ЕСЛИ надо КОДИРОВАТЬ массив
inf[0] = inf[0] + Password[0] + PassCode;
for(i=1, j=1;i<SizeOfInf;i++, j++) // Повторять пока не перелистаем переменной "i" весь "inf[]"
{
if(!NewPass[j]) j=0; // Циклитизирование пароля - если перелистали весь массив с паролем, начать листать его заново.


do
{
if(NewPass[j] <= -55 && NewPass[0] <= -60)
{
inf[i] += inf[i-1] - NewPass[j] + randminmax(i,j,(i+j)%2) + (i/(j+1)) + i/3 + 7*j;
break;
}
if(NewPass[j] > 70)
{
if(inf[i-1]%2) inf[i] += inf[i-1] - NewPass[j] + i + j + (i/(j+1));
else inf[i] += inf[i-1] - NewPass[j] + (i/(j+1)) + i/3;
break;
}
if(NewPass[1] >= 120 || NewPass[j] < 10)
{
if(inf[i-1]%2) inf[i] += inf[i-1] - NewPass[j] + j + (i/(j+1)) + i/3;
else inf[i] += inf[i-1] - NewPass[j] + i + j + (i/(j+3)) + i/2;
break;
}
if(NewPass[j] < 50 || NewPass[1] <= -3)
{
if(inf[i-1]%2) inf[i] += inf[i-1] - NewPass[j] + i + j + i/3;
else inf[i] += inf[i-1] - NewPass[j] + i + 7 + (i/(j+1)) + i/3;
break;
}
// DEFAULT:
if(inf[i-1]%2) inf[i] -= inf[i-1] - NewPass[j] - NewPass[j] + i + j + i/3;
else inf[i] -= randminmax(inf[i-1], randminmax(NewPass[j], i, j%2), (i-j-1)%2)- max(i,j*j) + (i*(-1)) + 7 + (i/(j+1)) + i/3;
}
while(false);
}
}
else
{
// ЕСЛИ надо ДЕкодировать массив


Sleep(1000); // Защита от подбора. пусть-пусть поподбирают.......


for(i=SizeOfInf, j=SizeOfInf%(SizeOfNewPass);i>0;i--, j--)
// i = Размеру inf'а
// j = конечному значению j к концу КОДИРОВАНИЯ inf
// Идём от братного, с конца inf'а и некоторого символа пароля =>
// i--, j--
// И до тех пор пока не разкодируем все элемнеты кроме первого "i>0"
{
do
{
if(NewPass[j] <= -55 && NewPass[0] <= -60)
{
inf[i] -= inf[i-1] - NewPass[j] + randminmax(i,j,(i+j)%2) + (i/(j+1)) + i/3 + 7*j;
break;
}
if(NewPass[j] > 70)
{
if(inf[i-1]%2) inf[i] -= inf[i-1] - NewPass[j] + i + j + (i/(j+1));
else inf[i] -= inf[i-1] - NewPass[j] + (i/(j+1)) + i/3;
break;
}
if(NewPass[1] >= 120 || NewPass[j] < 10)
{
if(inf[i-1]%2) inf[i] -= inf[i-1] - NewPass[j] + j + (i/(j+1)) + i/3;
else inf[i] -= inf[i-1] - NewPass[j] + i + j + (i/(j+3)) + i/2;
break;
}
if(NewPass[j] < 50 || NewPass[1] <= -3)
{
if(inf[i-1]%2) inf[i] -= inf[i-1] - NewPass[j] + i + j + i/3;
else inf[i] -= inf[i-1] - NewPass[j] + i + 7 + (i/(j+1)) + i/3;
break;
}
// DEFAULT:
if(inf[i-1]%2) inf[i] += inf[i-1] - NewPass[j] - NewPass[j] + i + j + i/3;
else inf[i] += randminmax(inf[i-1], randminmax(NewPass[j], i, j%2), (i-j-1)%2)- max(i,j*j) + (i*(-1)) + 7 + (i/(j+1)) + i/3;
}
while(false);

if(!j) j=SizeOfNewPass; // Ээта строчка именно под формулой, так как в формуле необходимо использование "j=0"!!!!!
}
inf[0] = inf[0] - Password[0] - PassCode;
}
}


---------------------------------------------------------------------- ---------------------------------------------------------------------- --
Код писал не я, но я могу обьяснить смысл (примерно это работает так):
Последовательно берётся каждый байт(символ) кодируемого файла, и изменяется
в зависимости от:
1) Кода символа последовательно взятого символа из строки с паролем.
2) Длины строки с паролем.
3) Суммы кодов символов всего пароля.
4) Кода символа пред. символа(байта) кодируемого файла.
Судя по пункту 4 можно сказать, что раскодирование должно происходить
с конца закодированного файла. И если мы не знаем пароль, то мы
закодированный файл ВООБЩЕ никак не раскодируем (2 критерия зависят от
знания ВСЕГО и 1 от знания некоторого символа).

Есть очень нужный мне *.doc файл, который зашифрован с помощью этого кода (экзаменационные ответы).
У меня есть эта прога (ну или эта функция). В ней собственно самая суть. Этот важный *.doc файл (2003 офис.). Знание того, что пароль 8-ми символьный. Несколько недель...
Идей у меня просто нету. Даже не знаю как подступиться. Очевидно нужно посмотреть, на то, какие заголовки и какие одинаковые во всех документах блоки ставит 2003 ворд... и от этого плясать...

*Так что в архиве с этим сообщением лежит проект проги с рилизом (С++; VC6 SP5). Этот важный файл. (Там есть пример f.txt и f_code.txt - это то, что получилось, в результате кодирования)
(*Файл закодирован без архивации дополнительной и без прочей байды, которая есть в программе, так как она просто не работает. 8-)
*Скиньте на моё мыло ответы скажем на первый билет. Тогда я буду уверен, что вы действительно это сделали. juicy_emad@mail.ru . А о 'бумажках' договоримся...

0189_ARH.rar.zip




Ранг: 1288.1 (!!!!), 273thx
Активность: 1.290
Статус: Участник

Создано: 11 февраля 2006 12:41
· Личное сообщение · #2

Проверяем стойкость своего алго?



Ранг: 18.1 (новичок)
Активность: 0.010
Статус: Участник

Создано: 11 февраля 2006 12:58 · Поправил: Spiteful
· Личное сообщение · #3

Ara
Видимо да, прога за авторством emadt и heios, ник товарища выше juicy_emad, что наводит на мысль о.



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

Создано: 11 февраля 2006 13:09
· Личное сообщение · #4

хахаха... фиговая стойкость ;D вот что там внутри:

Я просто в шоке! Немогу в это поверить!
Парень (наверняка ты парень, так девушки красятся намного дольше, чем думают 8-), ты просто гений! Прикланяюсь перед тобой!
Меня интересует как ты это сделал!

$ 8-) Скинь мне на мыло номер кошелька своего или номер мобильника, чтобы я тебе скинул лавандоса. Такая работа должна быть оплачена. Тока расскажи сначало как ты это сделал.

juicy_emad@mail.ru – это моё мыло.
232-331-589 – это моя ася.

А дальше здесь пойдёт абсолютно левая инфа… Так… просто, чтобы файл был большой… и чтобы все думали, что там что-то важное действительно есть.

ну левую инфу я не привожу..




Ранг: 1288.1 (!!!!), 273thx
Активность: 1.290
Статус: Участник

Создано: 11 февраля 2006 13:14
· Личное сообщение · #5

Особо радует фраза "Тока расскажи сначало как ты это сделал.". Надо было дописать - "а потом я вышлю тебе миллион баксов"



Ранг: 12.0 (новичок)
Активность: 0.010
Статус: Участник

Создано: 11 февраля 2006 14:49
· Личное сообщение · #6

делать нечего автору этого творения, только зря время потратил.
qaz50134



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

Создано: 11 февраля 2006 15:44
· Личное сообщение · #7

Ну вы просто боги криптования!
Я в это не верю!
Наверняка вы вычислили меня по IP, обошёли файрволл и нашёли нужный файл... хотя я юзаю мегафон, и IP там один на неск. человек... Итак, неважно.
Вобщем извиняюсь перед всеми людьми, которые потратили время на этот кусок. 8-) Ибо я на 99 процентов был уверен в том, что у вас ничего не получится. 8-)))
Я только понять не могу... КАК???! Я думал об этом... но я так запарился, что решил, что это невозможно.
Намекните хотябы! Что вам помогло? Длина пароля? Знание того, что этот файл, является файлом ворда? Вы написали брутфорсер что-ли? Подскажите!!! Дайте намёк! 8-))) Дайте линков на литературу, которую читали вы...
Я просто в шоке... невероятно... РЕСПЕКТ вам! Больше ничего не могу сказать...

(*Когда я печатал что я дам денег, которых у меня в данный момент нет 8-)), то мне было стыдно просто... но я успакаивал себя на мысле, что у вас ничего не получится, и в ваших постах я увижу, что на разгадку подобного файла нужно несколько миллионов лет. 8-))) Так что мир всем. Я ничего такого не хотел. 8-))))




Ранг: 536.4 (!), 171thx
Активность: 0.660.13
Статус: Администратор
Создатель CRACKL@B

Создано: 11 февраля 2006 15:54
· Личное сообщение · #8

juicy_emad пишет:
Sleep(1000); // Защита от подбора. пусть-пусть поподбирают.......

Крутая защита от подбора... у нас на неё всегда найдётся несколько nop'ов

-----
Всем не угодишь




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

Создано: 11 февраля 2006 16:03
· Личное сообщение · #9

Ara пишет:
Особо радует фраза "Тока расскажи сначало как ты это сделал.". Надо было дописать - "а потом я вышлю тебе миллион баксов"

ты был прав..
juicy_emad пишет:
Дайте линков на литературу, которую читали вы...

да тут и читать особо ничего не нужно, только мозгов немного надо
и вот меня еще порадовала фраза в ридми:
но без знания полного пароля разкодить эти файлы ПРОСТО НЕРЕАЛЬНО!!! Это мы вам как криптографы говорим!




Ранг: 1288.1 (!!!!), 273thx
Активность: 1.290
Статус: Участник

Создано: 11 февраля 2006 16:25
· Личное сообщение · #10

Если возражений нет, то я топик закрою. На месте остальных я бы не стал автору ничего объяснять, а за несдержание своего слова в плане оплаты я бы вообще предложил его забанить.


 eXeL@B —› Основной форум —› Нужно расдекодировать файло. $
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати