Bonjour à tous , j'ai remarqué , qu’après la dernière mise à jour de Dofus , L'adresse ip du 42 prend une valeur bizzare "13.248.126.87� @t���e+9j��:��BX����Ln����o��%�" . En premier lieu j'ai cru que c'était un décalage , la deserialize était parfait , de même pour le ReadVarUhShort , serait-il un cryptage ? j'ai bien fouillé les sources , aucune trace de cryptage :roll:
Deserialize :
public override void Deserialize(ICustomDataReader reader)
{
byte flag1 = reader.ReadByte();
ssl = BooleanByteWrapper.GetFlag(flag1, 0);
canCreateNewCharacter = BooleanByteWrapper.GetFlag(flag1, 1);
serverId = reader.ReadVaruhshort();
if (serverId < 0)
throw new Exception("Forbidden value on serverId = " + serverId + ", it doesn't respect the following condition : serverId < 0");
address = reader.ReadUTF();
port = reader.ReadUShort();
if (port < 0 || port > 65535)
throw new Exception("Forbidden value on port = " + port + ", it doesn't respect the following condition : port < 0 || port > 65535");
ticket = reader.ReadUTF();
}
ReadVarUhShort func.
public short ReadVarshort()
{
int retVal = 0;
int processed = 0;
bool finished = false;
while (processed < CustomDataConst.SHORT_SIZE)
{
byte tempon = this.ReadByte();
finished = (tempon & CustomDataConst.MASK_10000000) == CustomDataConst.MASK_10000000;
if (processed > 0)
{
retVal = retVal + ((tempon & CustomDataConst.MASK_01111111) << processed);
}
else
{
retVal = retVal + (tempon & CustomDataConst.MASK_01111111);
}
processed = processed + CustomDataConst.CHUNCK_BIT_SIZE;
if (!finished)
{
if (retVal > CustomDataConst.SHORT_MAX_VALUE)
{
retVal = retVal - CustomDataConst.UNSIGNED_SHORT_MAX_VALUE;
}
return (short)retVal;
}
}
throw new Exception("Too much data");
}