![]() |
eXeL@B —› Основной форум —› Нужно расдекодировать файло. $ |
Посл.ответ | Сообщение |
|
Создано: 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 . А о 'бумажках' договоримся... ![]() ![]() |
|
Создано: 11 февраля 2006 12:41 · Личное сообщение · #2 |
|
Создано: 11 февраля 2006 12:58 · Поправил: Spiteful · Личное сообщение · #3 |
|
Создано: 11 февраля 2006 13:09 · Личное сообщение · #4 хахаха... фиговая стойкость ;D вот что там внутри: Я просто в шоке! Немогу в это поверить! Парень (наверняка ты парень, так девушки красятся намного дольше, чем думают 8-), ты просто гений! Прикланяюсь перед тобой! Меня интересует как ты это сделал! $ 8-) Скинь мне на мыло номер кошелька своего или номер мобильника, чтобы я тебе скинул лавандоса. Такая работа должна быть оплачена. Тока расскажи сначало как ты это сделал. juicy_emad@mail.ru – это моё мыло. 232-331-589 – это моя ася. А дальше здесь пойдёт абсолютно левая инфа… Так… просто, чтобы файл был большой… и чтобы все думали, что там что-то важное действительно есть. ну левую инфу я не привожу.. ![]() |
|
Создано: 11 февраля 2006 13:14 · Личное сообщение · #5 |
|
Создано: 11 февраля 2006 14:49 · Личное сообщение · #6 |
|
Создано: 11 февраля 2006 15:44 · Личное сообщение · #7 Ну вы просто боги криптования! Я в это не верю! Наверняка вы вычислили меня по IP, обошёли файрволл и нашёли нужный файл... хотя я юзаю мегафон, и IP там один на неск. человек... Итак, неважно. Вобщем извиняюсь перед всеми людьми, которые потратили время на этот кусок. 8-) Ибо я на 99 процентов был уверен в том, что у вас ничего не получится. 8-))) Я только понять не могу... КАК???! Я думал об этом... но я так запарился, что решил, что это невозможно. Намекните хотябы! Что вам помогло? Длина пароля? Знание того, что этот файл, является файлом ворда? Вы написали брутфорсер что-ли? Подскажите!!! Дайте намёк! 8-))) Дайте линков на литературу, которую читали вы... Я просто в шоке... невероятно... РЕСПЕКТ вам! Больше ничего не могу сказать... (*Когда я печатал что я дам денег, которых у меня в данный момент нет 8-)), то мне было стыдно просто... но я успакаивал себя на мысле, что у вас ничего не получится, и в ваших постах я увижу, что на разгадку подобного файла нужно несколько миллионов лет. 8-))) Так что мир всем. Я ничего такого не хотел. 8-)))) ![]() |
|
Создано: 11 февраля 2006 15:54 · Личное сообщение · #8 |
|
Создано: 11 февраля 2006 16:03 · Личное сообщение · #9 Ara пишет: Особо радует фраза "Тока расскажи сначало как ты это сделал.". Надо было дописать - "а потом я вышлю тебе миллион баксов" ты был прав.. juicy_emad пишет: Дайте линков на литературу, которую читали вы... да тут и читать особо ничего не нужно, только мозгов немного надо и вот меня еще порадовала фраза в ридми: но без знания полного пароля разкодить эти файлы ПРОСТО НЕРЕАЛЬНО!!! Это мы вам как криптографы говорим! ![]() |
|
Создано: 11 февраля 2006 16:25 · Личное сообщение · #10 |
![]() |
eXeL@B —› Основной форум —› Нужно расдекодировать файло. $ |
Эта тема закрыта. Ответы больше не принимаются. |