Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Расшифровка

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> Расшифровка
Имя
Сообщение << Старые топики   Новые топики >>
Расшифровка - 2011-10-10 18:11:56.253333   
plazmall

Сообщений: 11
Оценки: 0
Присоединился: 2010-08-26 18:28:22.303333
Собственно сабж - По какому принципу расшифровываются пароли Mozilla, Opera и др. Можно и с примером ( C++)
Post #: 1
RE: Расшифровка - 2011-10-10 21:57:39.783333   
X11_cursor_X

Сообщений: 6
Оценки: 0
Присоединился: 2011-10-10 21:41:34.416666
Мне кажется, что это будет долго длится :D
Post #: 2
RE: Расшифровка - 2011-10-10 22:27:31.720000   
plazmall

Сообщений: 11
Оценки: 0
Присоединился: 2010-08-26 18:28:22.303333
Ужас. Есть же куча программ подобного рода. (Даже тот-же MPR). Мне нужно встроить это в программу. Мне нужен сам принцип
Post #: 3
RE: Расшифровка - 2011-10-10 22:29:25.096666   
X11_cursor_X

Сообщений: 6
Оценки: 0
Присоединился: 2011-10-10 21:41:34.416666
ответный вопрос, с каким алгоритмом они зашифровываются?
Post #: 4
RE: Расшифровка - 2011-10-10 23:49:47.730000   
plazmall

Сообщений: 11
Оценки: 0
Присоединился: 2010-08-26 18:28:22.303333
Ты задал мой вопрос другими словами)
Post #: 5
RE: Расшифровка - 2011-10-11 00:10:28.373333   
X11_cursor_X

Сообщений: 6
Оценки: 0
Присоединился: 2011-10-10 21:41:34.416666
Вот немного нарыл. В мозиле пароли лежат в key3.db в открытом виде, если не установлен мастерпароль. Если он установлен, то это все шифруется алгоритмом 3des или AES. В остальных не знаю.
Post #: 6
RE: Расшифровка - 2011-10-11 16:22:06.280000   
plazmall

Сообщений: 11
Оценки: 0
Присоединился: 2010-08-26 18:28:22.303333
Эх, маловато инфы) Да и в гугле не могу найти. Как же люди узнают алгоритм шифровки (тот-же UFR Stealer).
Post #: 7
RE: Расшифровка - 2011-10-11 19:28:03.030000   
shkolote attake

Сообщений: 268
Оценки: 0
Присоединился: 2010-10-19 05:37:44.873333
вот держи с тебя плюс прога расшифровки ванда оперовского
#include "md5.h" #include "des.h" const unsigned char opera_salt[11] = { &nbsp;&nbsp;&nbsp; 0x83, 0x7D, 0xFC, 0x0F, 0x8E, 0xB3, 0xE8, 0x69, 0x73, 0xAF, 0xFF }; int main(int argc, char **argv) { &nbsp;&nbsp;&nbsp; if(argc != 2) &nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; std::cout &lt;&lt; "Usage: unwand &lt;opera wand file&gt;" &lt;&lt; std::endl; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return 1; &nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp; FILE *fdWand = fopen(argv[1], "rb"); &nbsp;&nbsp;&nbsp; if(NULL == fdWand) &nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; perror("Failed to open file"); &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return 1; &nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp; fseek(fdWand, 0, SEEK_END); &nbsp;&nbsp;&nbsp; unsigned long fileSize = ftell(fdWand); &nbsp;&nbsp;&nbsp; unsigned char *wandData = (unsigned char *)malloc(fileSize); &nbsp;&nbsp;&nbsp; if(NULL == wandData) &nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; fclose(fdWand); &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; perror("Memory allocation failed"); &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return 1; &nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp; rewind(fdWand); &nbsp;&nbsp;&nbsp; fread(wandData, fileSize, 1, fdWand); &nbsp;&nbsp;&nbsp; fclose(fdWand); &nbsp;&nbsp;&nbsp; unsigned long wandOffset = 0; &nbsp;&nbsp;&nbsp; // &nbsp;&nbsp;&nbsp; // main loop, find and process encrypted blocks &nbsp;&nbsp;&nbsp; // &nbsp;&nbsp;&nbsp; while(wandOffset &lt; fileSize) &nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; // find key length field at start of block &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; unsigned char *wandKey = (unsigned char *) &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; memchr(wandData + wandOffset, DES_KEY_SZ, fileSize - wandOffset); &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if(NULL == wandKey) &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; break; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; wandOffset = ++wandKey - wandData; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; // create pointers to length fields &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; unsigned char *blockLengthPtr = wandKey - 8; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; unsigned char *dataLengthPtr = wandKey + DES_KEY_SZ; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if(blockLengthPtr &lt; wandData || dataLengthPtr &gt; wandData + fileSize) &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; continue; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; // convert big-endian numbers to native &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; unsigned long &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; blockLength&nbsp; = *blockLengthPtr++ &lt;&lt; 24; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; blockLength |= *blockLengthPtr++ &lt;&lt; 16; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; blockLength |= *blockLengthPtr++ &lt;&lt;&nbsp; 8; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; blockLength |= *blockLengthPtr; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; unsigned long &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; dataLength&nbsp; = *dataLengthPtr++ &lt;&lt; 24; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; dataLength |= *dataLengthPtr++ &lt;&lt; 16; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; dataLength |= *dataLengthPtr++ &lt;&lt;&nbsp; 8; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; dataLength |= *dataLengthPtr; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; // as discussed in the article &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if(blockLength != dataLength + DES_KEY_SZ + 4 + 4) &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; continue; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; // perform basic sanity checks on data length &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if(dataLength &gt; fileSize - (wandOffset + DES_KEY_SZ + 4) &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; || dataLength &lt; 8 || dataLength % 8 != 0) &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; continue; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; unsigned char &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; hashSignature1[MD5_DIGEST_LENGTH], &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; hashSignature2[MD5_DIGEST_LENGTH], &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; tmpBuffer[256]; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; // &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; // hashing of (salt, key), (hash, salt, key) &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; // &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; memcpy(tmpBuffer, opera_salt, sizeof(opera_salt)); &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; memcpy(tmpBuffer + sizeof(opera_salt), wandKey, DES_KEY_SZ); &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; MD5(tmpBuffer, sizeof(opera_salt) + DES_KEY_SZ, hashSignature1); &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; memcpy(tmpBuffer, hashSignature1, sizeof(hashSignature1)); &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; memcpy(tmpBuffer + sizeof(hashSignature1), &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; opera_salt, sizeof(opera_salt)); &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; memcpy(tmpBuffer + sizeof(hashSignature1) + &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; sizeof(opera_salt), wandKey, DES_KEY_SZ); &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; MD5(tmpBuffer, sizeof(hashSignature1) + &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; sizeof(opera_salt) + DES_KEY_SZ, hashSignature2); &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; // &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; // schedule keys. key material from hashes &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; // &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; DES_key_schedule key_schedule1, key_schedule2, key_schedule3; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; DES_set_key_unchecked((const_DES_cblock *)&amp;hashSignature1[0], &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &amp;key_schedule1); &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; DES_set_key_unchecked((const_DES_cblock *)&amp;hashSignature1[8], &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &amp;key_schedule2); &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; DES_set_key_unchecked((const_DES_cblock *)&amp;hashSignature2[0], &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &amp;key_schedule3); &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; DES_cblock iVector; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; memcpy(iVector, &amp;hashSignature2[8], sizeof(DES_cblock)); &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; unsigned char *cryptoData = wandKey + DES_KEY_SZ + 4; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; // &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; // decrypt wand data in place using 3DES-CBC &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; // &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; DES_ede3_cbc_encrypt(cryptoData, cryptoData, dataLength, &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &amp;key_schedule1, &amp;key_schedule2, &amp;key_schedule3, &amp;iVector, 0); &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if(0x00 == *cryptoData || 0x08 == *cryptoData) &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; std::wcout &lt;&lt; L"&lt;null&gt;" &lt;&lt; std::endl; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; else &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; // remove padding (data padded up to next block) &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; unsigned char *padding = cryptoData + dataLength - 1; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; memset(padding - (*padding - 1), 0x00, *padding); &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; std::wcout &lt;&lt; (wchar_t *)cryptoData &lt;&lt; std::endl; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; wandOffset = wandOffset + DES_KEY_SZ + 4 + dataLength; &nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp; free(wandData); &nbsp;&nbsp;&nbsp; return 0; }[code]
Post #: 8
RE: Расшифровка - 2011-10-11 21:34:27.430000   
plazmall

Сообщений: 11
Оценки: 0
Присоединился: 2010-08-26 18:28:22.303333
Спс бро. Буду разбираться. + поставлю как только смогу)
Post #: 9
Страниц:  [1]
Все форумы >> [Компилируемые языки] >> Расшифровка







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.