[sources C# ] Decrypt / Encrypt De Kv


zouzzz
 Share

Messages recommandés

Salut,

Je voulais livrer mes sources de KV modder mais j'en ai honte tellement c'est le bordel...

Mais voilà qui pourra peut-être en aider certain(e)s.

//OFD1.FileName le fichier keyvault

byte[] Hmac = new byte[16];

byte[] CpuKey = HexStringToByteArray(CPUkey.Text);// la CPU Key

byte[] filemiddle = File.ReadAllBytes(OFD1.FileName);

byte[] Rc4Key = new byte[16]; //création d'un byte array de 16 bytes

PointDecryption(filemiddle);

byte[] Hashpoint = new byte[0x10];

byte[] rc4Key = new byte[0x10];

Array.Copy(filemiddle, Hashpoint, 0x10);

Array.Copy(filemiddle, 0x10, kvdec, 0, 0x3ff0);

Array.Copy(HMAC_SHA1(CpuKey, Hashpoint), Rc4Key, 0x10);

kvdec = Rc4(Rc4Key, kvdec);

RC4key.Text = BytesToHex(Rc4Key);

File.WriteAllBytes(Application.StartupPath + "\\kv2.bin", kvdec); // copie le tout en kv2.bin

byte[] NewBuff = FichierVersTableauDeByte(Application.StartupPath + "\\kv2.bin"); // kv2.bin = Keyvault kvdec

byte[] kvenc = new byte[0x4000];

byte[] filemiddle = new byte[0x3ff0];

byte[] hashbytes = new byte[0x10];

byte[] Rc4Key = new byte[0x10];

hashbytes = CalculateHash();

Array.Copy(HMAC_SHA1(CpuKey, hashbytes), Rc4Key, 0x10);

filemiddle = Rc4(Rc4Key, NewBuff);

RC4key.Text = BytesToHex(Rc4Key);

Array.Copy(hashbytes, kvenc, 0x10);

Array.Copy(filemiddle, 0, kvenc, 0x10, 0x3ff0);

private byte[] Rc4(byte[] key, byte[] data)

{

byte temp;

int i;

int j;

byte[] s = new byte[0x100];

byte[] output = new byte[data.Length];

Array.Copy(data, output, data.Length);

for (i = 0; i < 0x100; i++)

{

s = (byte)i;

}

i = j = 0;

for (i = 0; i < 0x100; i++)

{

j = ((j + key[i % key.Length]) + s) % 0x100;

temp = s;

s = s[j];

s[j] = temp;

}

i = j = 0;

for (int x = 0; x < output.Length; x++)

{

i = (i + 1) % 0x100;

j = (j + s) % 0x100;

temp = s;

s = s[j];

s[j] = temp;

int t = (s + s[j]) % 0x100;

output[x] = (byte)(output[x] ^ s[t]);

}

return output;

}

private byte[] HMAC_SHA1(byte[] key, byte[] data)

{

byte[] K = new byte[0x40];

byte[] opad = new byte[0x54];

byte[] ipad = new byte[data.Length + 0x40];

Array.Copy(key, K, 0x10);

for (int i = 0; i < 0x40; i++)

{

opad = (byte)(K ^ 0x5c);

ipad = (byte)(K ^ 0x36);

}

Array.Copy(data, 0, ipad, 0x40, data.Length);

SHA1CryptoServiceProvider sha = new SHA1CryptoServiceProvider();

Array.Copy(sha.ComputeHash(ipad), 0, opad, 0x40, 20);

return sha.ComputeHash(opad);

}

private bool PointDecryption(byte[] data)

{

return (data[data.Length - 1] == 0);

}

public byte[] FichierVersTableauDeByte(string CheminFichier)

{

System.IO.FileInfo MonFichier = new System.IO.FileInfo(CheminFichier);

System.IO.FileStream MonFileStream = MonFichier.OpenRead();

byte[] TableauDeBytes = new byte[MonFileStream.Length];

MonFileStream.Read(TableauDeBytes, 0, (int)MonFileStream.Length);

MonFileStream.Close();

return TableauDeBytes;

public byte[] CalculateHash()

{

byte[] filemiddle = new byte[0x3ff2];

byte[] hashbytes = new byte[0x10];

Array.Copy(kvdec, filemiddle, 0x3ff0);

filemiddle[0x3ff0] = 7;

filemiddle[0x3ff1] = 0x12;

Array.Copy(this.HMAC_SHA1(CpuKey, filemiddle), hashbytes, 0x10);

return hashbytes;

}

}

En espérant que ça soit clair car pour moi avec le temps ça devient du charabia... :/

Lien vers le commentaire
Partager sur d'autres sites

Bah sur gx forum en sections dev 360 et dev PS3, il y a pas mal de mes dev.

De tête, je ne peux te dire, je dois en avoir sorti plus d'une 30aine pour console...

Dans le futur, j'aimerai bien me mettre sur WWE Allstar (sur 360 ou PS3) voir si on peut pas ajouter quelques répliques cultissimes de Christophe Agius. Mais c'est vraiment tout ce qui me botte pour le moment sur les Next gen.

Lien vers le commentaire
Partager sur d'autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
 Share