C# Fonction decodeWithAES

tazman59

Contributeur
Inscrit
20 Decembre 2012
Messages
149
Reactions
27
#1
Salut tout le monde !
Voici maintenant deux jours que je me suis remis au développement d'un bot serveurs officiels et les premiers problèmes se font déjà sentir ..

Voici ma fonction decodeWithAES, celle qui permet de déchiffrer le ticket lors de la réception du 42 :

C#:
        public static string decodeWithAES(byte[] AESKey, byte[] ticket)
        {

            using (AesManaged _AesManaged = new AesManaged())
            {

                _AesManaged.GenerateIV();
                _AesManaged.Key = AESKey;
                _AesManaged.Padding = PaddingMode.None;
                _AesManaged.Mode = CipherMode.CBC;

                byte[] cipherText = new byte[16 + ticket.Length];

                BigEndianWriter writer = new BigEndianWriter(cipherText);
                writer.WriteBytes(AESKey, 0, 16);
                writer.WriteBytes(ticket);

                ICryptoTransform decryptor = _AesManaged.CreateDecryptor(_AesManaged.Key, _AesManaged.IV);

                using (MemoryStream msDecrypt = new MemoryStream(cipherText))
                {
                    using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
                    {
                        using (StreamReader srDecrypt = new StreamReader(csDecrypt))
                        {                    
                            return srDecrypt.ReadToEnd();
                        }
                    }
                }

            }

        }
Les tickets que j'obtient ressemblent à ça : "�\u000fӕ�xO�Q�o�D�g�a2d051d7649d0419ff925e591858eef0" et ne sont pas acceptés par le serveur.

Quelqu'un saurait-il me dire là où mon code n'est pas bon ? ou du moins juste une petite indication pour me mettre sur le bon chemin ?

Merci, je vous aime :D
 
Dernière édition par un modérateur:
Inscrit
2 Juin 2016
Messages
82
Reactions
3
#2
L'encodage?
 

tazman59

Contributeur
Inscrit
20 Decembre 2012
Messages
149
Reactions
27
#3
J'ai testé et le problème ne vient pas de là :(
 
Inscrit
24 Juin 2015
Messages
53
Reactions
0
#4
For HelloConnectMessage and IdentificacionMessage?
 

BlueDream

Administrateur
Membre du personnel
Inscrit
8 Decembre 2012
Messages
2 010
Reactions
149
#5
Hello,

Bon déjà la clé IV correspond aux 16 premiers bytes de la AESKey.

BigEndianWriter writer = new BigEndianWriter(cipherText);
writer.WriteBytes(AESKey, 0, 16);
writer.WriteBytes(ticket);
Donc cette partie n'est pas tout à fait correct.

Ensuite tu n'utilise même pas la clé IV que tu as créé, tu en génére une nouvelle donc c'est logique que ton ticket ne soit pas accepté.

_AesManaged.GenerateIV();
PS: Au passage merci d'utiliser la coloration syntaxique.
 
Dernière édition:

tazman59

Contributeur
Inscrit
20 Decembre 2012
Messages
149
Reactions
27
#6
@BlueDream Je me demandais pourquoi on devait écrire les 16 premiers bytes de la clef, j'avais pas compris que c'était l'IV o_O C'est noté pour la coloration syntaxique.
 
Dernière édition par un modérateur:
Haut Bas