readbyte renvoie un chiffre entre 0 et 255 , readbyteS renvoie un tableau de chiffreS entre 0 et 255 (dans les 2 cas ca reste entre 0 et 255 donc des bytes)
pour ReadString() non tu ne dois pas inverser le tableau 4D sera le 1er caractere et 34 le dernier
c'est possible que le salt ne change jamais , j'en sais rien , ca j'ai jamais fait depuis les salts mais par contre que tu recois toujours le meme paquet ca me semble bizarre , y'a au moins la key qui doit changer
J'arrive à obtenir un salt !
Mais pas en UTF8 >.<. Lorsque j'essaie de le faire en UTF8, il me renvoie un salt vide.
En revanche, UTF16 Big Endian et UTF16 Little Endian fonctionnent.
ah ok ... en fait ca marche pas tout a fait comme ca 00 0E 01 4A 00 02 06 83 17 87 33 27 83 23 42 34 25 02 E2 55 27 14 73 (heu ... t'es sur de ca ?? il me parait court ton paquet pour 330 octets ...enfin bref on va faire ca pour l'exemple)
tu as lu 4A (donc tu es sur 00) :
this.salt = param1.readUTF();
donc tu commences le readUTF a partir de 00 (apres 4A) , la taille de l'udf est sur 2 octets donc 00 02 , ce qui donne salt = 06 83 , il te reste encore 330-4 octets a lire
bon je confirme la paquet est pas bon salt fait pas 2 octets
Bien sûr, j'ai raccourci le paquet pour l'exemple .
Ah... Donc, mon ReadBytes(ReadUInt16()) commençait pas au bon endroit alors... Il commençait au 01 4A. A mon avis, j'ai certainement fait un StringMid (fonction AutoIt) au lieu d'un ReadUInt16(), ce qui expliquerait que le décalage n'ait pas été effectué.
Je regarderai ça tout à l'heure, encore merci ToOnS!
EDIT : Euh salt fait pas 2 octets? T'es sûr de ça? Il me semble que je t'ai mis le bon paquet... Je t'enverrais le vrai paquet tout à l'heure.
1/ Quel fichier sert à la version?
2/ Comment on fait la langue?
3/ Qu'est-ce que les creditentials?
4/ userCertificate et useLoginToken, je mets True par défaut ou bien?
Merci les mecs .
Pour l'instant je vais essayer de coder les fonctions WriteByte() etc. Après les fonctions Read viennent les fonctions Write ^^'.
D'ailleurs, la valeur qu'on passe à ces fonctions est de valeur décimale, non?
EDIT : Sauf WriteString() apparemment, je me trompe? Que prend-il?
oui ils prennent des valeurs decimales
writestring il prend en valeur une chaine de caracteres , il compte les caracteres , met le nombre sur 2 bytes puis transforme chaque caractere en byte
Bon, et bien, je pense être arrivé dans la partie la plus délicate ! .
J'ai (je pense) terminé mes fonctions Write. A ce que j'ai pu tester, elles fonctionnent !
Moins difficile que les Read, là j'ai quasiment pas à me soucier de ce qui arrive, et toutes se ressemblent beaucoup .
Mais, maintenant, il me faut l'encryptage du pass... Sur les sources officielles y'a quelque chose que je comprends rien, et sur la source que j'ai, j'arrive pas à traduire... Vous auriez une piste? =/
Public Class CryptPass
' Methods
Public Function Crypt_Pass(ByVal Input As String, ByVal Key As List(Of Integer)) As List(Of Integer)
Dim buffer4 As Byte() = New Byte(3 - 1) {}
buffer4(0) = 1
buffer4(2) = 1
Dim buffer As Byte() = buffer4
Dim buffer2 As Byte() = New Byte(&H100 - 1) {}
Dim i As Integer
For i = &H21 To &H121 - 1
buffer2((i - &H21)) = CByte(Key.Item(i))
Next i
Dim bytes As Byte() = Encoding.UTF8.GetBytes(Input)
Dim parameters As New RSAParameters
Dim provider As New RSACryptoServiceProvider
parameters.Modulus = buffer2
parameters.Exponent = buffer
provider.ImportParameters(parameters)
Dim list As New List(Of Integer)
Dim num2 As Byte
For Each num2 In provider.Encrypt(bytes, False)
list.Add(num2)
Next
Return list
End Function
End Class
1/- C'est quoi ces &H21, &H121, etc? J'ai l'impression que ce sont des pointeurs...
2/- Mais c'est quoi ces RSAParameters et RSACryptoServiceProvider? Des classes intégrées à VB.Net? Dans ce cas, je fais comment? =/
J'ai cru trouver sur le net une UDF pour le cryptage RSA. Mais j'ai des questions.
3/- Tous les fichiers que je vais trouver sur le cryptage RSA sont-ils les mêmes? Je veux dire, donnent-ils tous le même résultat?
4/- Sur ce que j'ai trouvé, le RSA travaille sur du fichier de clé Publique et Privée. Mais il me semble que D. intègre une clé publique, et la clé privée, on la génère?
EDIT : En source officielle, dans le RSAKey, j'ai la méthode _encrypt :
Code:
private function _encrypt(param1:Function, param2:ByteArray, param3:ByteArray, param4:uint, param5:Function, param6:int) : void
{
var _loc_9:BigInteger = null;
var _loc_10:BigInteger = null;
if (param5 == null)
{
param5 = this.pkcs1pad;
}
if (param2.position >= param2.length)
{
param2.position = 0;
}
var _loc_7:* = this.getBlockSize();
var _loc_8:* = param2.position + param4;
while (param2.position < _loc_8)
{
_loc_9 = new BigInteger(this.param5(param2, _loc_8, _loc_7, param6), _loc_7, true);
_loc_10 = this.param1(_loc_9);
_loc_10.toArray(param3);
}
return;
}// end function
Qui appelle d'autres fonctions etc, et qui finalement n'a pas l'air de ressembler à celle de mes sources OverEdge. Y aurait-il une DLL utilisable?