can someone tell me whats wrong with my loop and why its not using the decoded key to xor the remaning buffer...
Code:
void CCrypt::EnCrypt( unsigned char* buffer, unsigned size )
{
// check data correctness
if ( !buffer )
return;
if ( size < 4 )
return;
unsigned char * encBuffer = new unsigned char[ size + 4 ];
unsigned m = size + 4;
// copy data from the encBuffer to Buffer
memcpy( encBuffer, buffer + 4, sizeof( unsigned char ) * m );
const char unknown_key[] = "qmfaktnpgjs";
unsigned char unknown_key2[sizeof(unknown_key)];
std::copy(unknown_key, unknown_key + sizeof(unknown_key), unknown_key2);
if ( encBuffer == NULL)
return;
if ( m < 4 )
return;
// perform header encrypting
encBuffer[ 0 ] = m & 0xFF;
encBuffer[ 1 ] = ( m & 0xFF00 ) >> 8;
encBuffer[ 2 ] = 0x01;
encBuffer[ 3 ] = 0x00;
for (unsigned i = 4; i < m; i++)
{
if ( encBuffer[i] != 0)
{
encBuffer[ i ] = unknown_key2[i % 0xB] ^ encBuffer[ i ];
}
}
// swap buffers
delete [] buffer;
buffer = encBuffer;
size = m;
}
this here..
Code:
01 c2 eb 0b 00 11 08 01 00 00 00 00 00 01 00 46 61 63 65 6f 66 44 65 76 69 6c 00 00 00 00 00 00 00 00 00 00 00 00 00
should turn into this...
Code:
2b 00 01 00 70 af 8d 6a 00 65 66 71 00 00 00 00
00 67 00 2d 15 0d 15 08 0c 37 14 1b 0f 0d 00 00
00 00 00 00 00 00 00 00 00 00 00