Salut à tous !
Je me mets à la création d'un bot socket en AutoIt.
J'ai réussi à parser, etc, mais maintenant je bloque sur l'id 3.
Je m'explique. En regardant les sources, je vois :
Cliquez pour révéler
Cliquez pour masquer
public function deserializeAs_HelloConnectMessage(param1:IDataInput) : void
{
var _loc_4:int = 0;
this.salt = param1.readUTF();
var _loc_2:* = param1.readUnsignedShort();
var _loc_3:uint = 0;
while (_loc_3 < _loc_2)
{
_loc_4 = param1.readByte();
this.key.push(_loc_4);
_loc_3 = _loc_3 + 1;
}
return;
}// end function
Alors je me dis "Parfait ! Si j'arrive à déserializer ce qu'il m'envoie, je pourrai faire la suite". Seulement, je ne comprends pas le
this.salt = param1.readUTF();
ainsi que :
var _loc_2:* = param1.readUnsignedShort();
A ce que j'ai pu comprendre, lorsqu'on fait un readShort, en réalité il prend les deux premiers octets. Dans ce cas, que veut dire ce readUTF?
J'ai donc cherché sur les sources OverEdge, et je vois :
Cliquez pour révéler
Cliquez pour masquer
Public Function ReadUTF()
Return ReadString()
End Function
Public Overrides Function ReadString() As String
Dim ByteArray() As Byte = MyBase.ReadBytes(ReadUInt16())
Return System.Text.Encoding.UTF8.GetString(ByteArray)
End Function
Et là, le grand vide dans ma tête !
Que dois-je récupérer lorsque je fais un ReadUTF(), en fait?
J'avais suivi un tuto sur ce forum pour démarrer et comprendre le protocole D.2, et comme je disais, j'ai réussi à faire quelques petites choses, comme par exemple :
Cliquez pour révéler
Cliquez pour masquer
$hiheader = StringLeft($data, 4)
$hiheader = Dec($hiheader)
$packet_id = BitShift($hiheader, 2)
$lenType = BitAND($hiheader, 3)
Alors on ne peut pas dire que je ne cherche pas ! :).
Voilà, merci à tous ;)
EDIT : Finalement, je pense avoir compris ces ReadUTF() et compagnie...
Dites-moi, si j'obtiens (pour le deserializeAs_HelloConnectMessage()) :
- Comme salt : 0x30303032 (dois-je enlever le 0x ? Et j'ai TOUJOURS ce 30303032, il ne varie jamais, contrairement à la key)
- Et comme key : 020683177717462706E7E78567B6D4E3D61535, toujours 19 Bytes, et qui commence toujours avec 02
c'est possible que ce soit correct, non?
Si c'est le cas, pourriez-vous me donner des pistes pour le cryptage RSA sur AutoIt..? Je sais que ce sera dur m'enfin :).
(Si besoin est, je peux vous donner mes fonctions ReadUTF etc)