ich habe mal zum Zeitvertreib ein kleines Projekt gestartet um ein wenig mehr Übung in Java zu bekommen. Um weiter machen zu können, muss ich die folgenden Zeilen in Java übersetzt kriegen.
Decrypt.cpp
Code:
#include "Decrypt.h"
unsigned char DecryptTable[] = {
0xD9, 0x79, 0xB0, 0x75, 0xBE, 0x4D, 0x99, 0xBD,
0x66, 0x9A, 0x21, 0x16, 0xCC, 0x58, 0x5D, 0x43,
0xE2, 0x7D, 0xF7, 0x95, 0xC8, 0x7C, 0x2A, 0xB1,
0x9D, 0xC6, 0x2F, 0x35, 0x91, 0xF8, 0x9E, 0x4B,
0xD8, 0x69, 0x59, 0xA3, 0x24, 0x78, 0x27, 0x88,
0xB8, [.... usw....]
};
long decrypt(unsigned long index, unsigned char *buf, unsigned long len)
{
if(!buf || !len)
return -1;
index &= 0x3F;
index <<= 8;
while (len--)
buf[len] = DecryptTable[index + buf[len]];
return 0;
}
Eine Methode aus dem Hauptteil:
Code:
void CClient::WorkOnPacket(char* data,int size)
{
#ifdef STUPID_KEY_SEARCHER
char _tdata[1024];
for (int i = 0;i<63;i++)
{
memcpy(_tdata,data,1024);
decrypt(i,(unsigned char*)_tdata,size);
if (_tdata[1]=='t')
{
//0 1 2 => type , 3 => t für "test"
printf("Found 't'... with key %d /ke sent by server: %d\n",i,DecKey);
OutputMemoryDump(_tdata,size);
//break;
}
}
#endif
decrypt(DecKey,(unsigned char*)data,size);
//increase key
DecKey=(DecKey+1)%64;
data[size]=0; //<- anit "s" overflow.. ;)
if (PacketList[(unsigned char)(data[0])]==0)
{
#ifdef _DEBUG
printf("UNKNOW PACKET ! KEY=%d\n",DecKey);
OutputMemoryDump(data,size);
printf("\n");
#endif
}
}
Ich würde mich über hilfe in jeglicher form freuen.
mfg
b0147
PS: Credits an Bloodx und ZeroTen, weil das ein teil von ihrem veröffentlichten Werk ist






