Besoin d'informations pour envois de packets

Inscrit
20 Aout 2016
Messages
28
Reactions
0
#1
Bonjour.
J'ai un nouveau soucis, je voudrais envoyer un IdentificationMessage
Petit soucis, les données que quelqu’un avait fourni sur un tuto ne semblent plus d'actualités.
Code:
 string key = reader.ReadString();
                    Log("Key = " + key + "\r\n");

                    string mdp_hash = MD5(MD5(accountPasswdTextBox.Text) + key); // Hachage du mot de passe
                    DataWriter writer = new DataWriter();
                    writer.WriteByte(2);
                    writer.WriteByte(3);
                    writer.WriteByte(7);
                    writer.WriteShort(35100);
                    writer.WriteByte(0);
                    writer.WriteByte(0);
                    writer.WriteString(accountNameTextBox.Text);
                    writer.WriteString(mdp_hash);
                    writer.WriteShort(0);
                    writer.WriteBool(true);
                    _Socket.Send(writer.Pack(4));
surtout pour les premiers parametres envoyés...

Du coup je me suis dis je vais aller chercher en sniffant sur dofus et je suis tombé sur un packet d'ID 4, mais avec des informations étranges:
Code:
00:12:01:17:00:02:23:04:00:01:a3:f3:01:00:01:01:00:02:66:72:80:02:52:c3:45:0b:31:11:9c:73:72:a2:87:ec:3f:c2:b5:33:b9:53:2b:9e:20:25:70:6a:ac:be:7e:91:d7:14:a3:53:c9:2f:48:1c:e6:a6:70:03:57:93:8c:c2:bb:95:a7:37:d5:42:57:a1:28:a3:56:44:06:2f:18:94:31:3e:e7:b1:d1:28:0d:85:34:82:b6:77:27:6e:2c:08:5e:b3:92:cf:f8:16:55:38:71:32:7e:db:c5:26:83:31:9c:ab:77:bd:30:68:2d:c4:a9:e5:c5:5a:25:3c:06:8c:33:44:4b:b5:c7:37:03:9f:46:9e:d3:da:50:f4:c4:c0:2f:32:44:77:45:9e:33:bd:43:71:b9:66:76:c6:c4:1d:56:28:ce:23:6d:29:77:6b:9d:d5:f7:0f:e3:2b:f6:9c:b3:42:fe:77:87:bd:30:ae:b2:8a:96:d2:ba:8c:38:c3:35:5f:83:e2:e2:61:26:9d:8a:93:c8:73:7e:cf:ad:b8:61:12:03:d6:79:c9:fb:3b:11:01:9b:83:80:cf:28:ae:d5:f0:ed:3c:a2:2c:6f:01:4f:48:38:d2:e9:25:b0:b0:a5:62:b7:5d:20:0f:6e:58:57:f8:fb:c5:17:11:03:cb:bf:22:0d:02:ea:13:bb:12:55:44:de:53:ff:1a:1c:35:37:73:4f:43:00:00:00:00:00
Ce message me parait un peut trop long pour contenir uniquement les parametres requis...
Pourtant l ID est le bon...

Apres je me suis dit que
Code:
initIdentificationMessage(param1:VersionExtended = null, param2:String = "", param3:Vector.<int> = null, param4:int = 0, param5:Boolean = false, param6:Boolean = false, param7:Boolean = false, param8:Number = 0, param9:Vector.<uint> = null) : IdentificationMessage
acceptais 2 vector<int> donc cela justifierais peut etre l envois d autant de données...

quelqu'un pourrais m'éclairer svp?
Merci d'avance!
 
Inscrit
17 Avril 2015
Messages
119
Reactions
0
#2
Oui a se que je vois tu décrypte / encrypte en MD5 or D@fus ne l'utilise plus, il crypte en RSA il me semble de tête.
 
Dernière édition:
Inscrit
20 Aout 2016
Messages
28
Reactions
0
#3
Rho ok merci!
 
Inscrit
20 Aout 2016
Messages
28
Reactions
0
#4
Pour le reste des informations c est bon sinon?
 

BlueDream

Administrateur
Membre du personnel
Inscrit
8 Decembre 2012
Messages
2 010
Reactions
150
#5
Tu devrais mettre tes sources à jour.

Code:
public function serializeAs_IdentificationMessage(param1:ICustomDataOutput) : void
  {
  var _loc2_:uint = 0;
  _loc2_ = BooleanByteWrapper.setFlag(_loc2_,0,this.autoconnect);
  _loc2_ = BooleanByteWrapper.setFlag(_loc2_,1,this.useCertificate);
  _loc2_ = BooleanByteWrapper.setFlag(_loc2_,2,this.useLoginToken);
  param1.writeByte(_loc2_);
  this.version.serializeAs_VersionExtended(param1);
  param1.writeUTF(this.lang);
  param1.writeVarInt(this.credentials.length);
  var _loc3_:uint = 0;
  while(_loc3_ < this.credentials.length)
  {
  param1.writeByte(this.credentials[_loc3_]);
  _loc3_++;
  }
  param1.writeShort(this.serverId);
  param1.writeVarLong(this.sessionOptionalSalt);
  param1.writeShort(this.failedAttempts.length);
  var _loc4_:uint = 0;
  while(_loc4_ < this.failedAttempts.length)
  {
  param1.writeVarShort(this.failedAttempts[_loc4_]);
  _loc4_++;
  }
  }
 
Dernière édition:
Inscrit
20 Aout 2016
Messages
28
Reactions
0
#6
Pour _loc2_ je pense avoir compris le code source, mais après je ne comprends pas trop!
Mes sources sont à jour mais mon ordi met très longtemps pour rechercher dans les sources!!
 

BlueDream

Administrateur
Membre du personnel
Inscrit
8 Decembre 2012
Messages
2 010
Reactions
150
#7
BooleanByteWrapper est une classe du jeu.

Code:
package com.ankamagames.jerakine.network.utils
{
  public class BooleanByteWrapper extends Object
  {
   
  public function BooleanByteWrapper()
  {
  super();
  }
   
  public static function setFlag(param1:uint, param2:uint, param3:Boolean) : uint
  {
  switch(param2)
  {
  case 0:
  if(param3)
  {
  var param1:uint = param1 | 1;
  break;
  }
  param1 = param1 & 255 - 1;
  break;
  case 1:
  if(param3)
  {
  param1 = param1 | 2;
  break;
  }
  param1 = param1 & 255 - 2;
  break;
  case 2:
  if(param3)
  {
  param1 = param1 | 4;
  break;
  }
  param1 = param1 & 255 - 4;
  break;
  case 3:
  if(param3)
  {
  param1 = param1 | 8;
  break;
  }
  param1 = param1 & 255 - 8;
  break;
  case 4:
  if(param3)
  {
  param1 = param1 | 16;
  break;
  }
  param1 = param1 & 255 - 16;
  break;
  case 5:
  if(param3)
  {
  param1 = param1 | 32;
  break;
  }
  param1 = param1 & 255 - 32;
  break;
  case 6:
  if(param3)
  {
  param1 = param1 | 64;
  break;
  }
  param1 = param1 & 255 - 64;
  break;
  case 7:
  if(param3)
  {
  param1 = param1 | 128;
  break;
  }
  param1 = param1 & 255 - 128;
  break;
  default:
  throw new Error("Bytebox overflow.");
  }
  return param1;
  }
   
  public static function getFlag(param1:uint, param2:uint) : Boolean
  {
  switch(param2)
  {
  case 0:
  return (param1 & 1) != 0;
  case 1:
  return (param1 & 2) != 0;
  case 2:
  return (param1 & 4) != 0;
  case 3:
  return (param1 & 8) != 0;
  case 4:
  return (param1 & 16) != 0;
  case 5:
  return (param1 & 32) != 0;
  case 6:
  return (param1 & 64) != 0;
  case 7:
  return (param1 & 128) != 0;
  default:
  throw new Error("Bytebox overflow.");
  }
  }
  }
}
 
Haut Bas