Oui, autant pour moi désolé, j'ai refait tout le parcours du packet reçus :
> node test.js
Buffer complet: <Buffer 00 05 08 00 00 06 b5 00 00 06 bb>
Tête du buffer: { header: 5, id: 1, typeLen: 1, messageLen: 8 }
Packet id: 1, name: ProtocolRequired, typeLen; 1, messageLen: 8
Corps du buffer: <Buffer 08 00 00 06 b5 00>
==== Essaye de parsage du corps ====
Corps du buffer remis sur une syntaxe correcte: <Buffer 00 00 08 00 00 06 b5 00>
Valeurs retournées du deserializer: { requiredVersion: 2048, currentVersion: 2048 }
Voilà les logs,
Pour ce qui est des de comment je traite le buffer :
let buff = packetsData.get(1)
console.log('Buffer complet:', buff);
let header = packetManager.handleHeader(buff)
console.log('Tête du buffer:', header);
packetManager.sumup(header)
let body = packetManager.handleBody(buff, header.messageLen)
console.log('Corps du buffer:', body);
console.log('\n==== Essaye de parsage du corps ====\n');
let fillBuff = Buffer.alloc(2)
let bufvers = Buffer.concat([ fillBuff, body ])
console.log( 'Corps du buffer remis sur une syntaxe correcte:', bufvers );
console.log('Valeurs retournées du deserializer:', deserializeAsProtocolRequired(bufvers));
function deserializeAsProtocolRequired(buf) {
let reader = new bufferReader(buf)
let requiredVersion = buf.readInt32BE()
if ( requiredVersion < 0 ) throw new Error('Invalid version !')
let currentVersion = buf.readInt32BE()
if ( currentVersion < 0 ) throw new Error('An Error occurred in game version parsing ! :(')
return { requiredVersion: requiredVersion, currentVersion: currentVersion }
}
Et si j'indique le bon offset :
function deserializeAsProtocolRequired(buf) {
let reader = new bufferReader(buf)
let requiredVersion = buf.readInt32BE[B](0, 4)
if ( requiredVersion < 0 ) throw new Error('Invalid version !')
let currentVersion = buf.readInt32BE[B](4, 8)
if ( currentVersion < 0 ) throw new Error('An Error occurred in game version parsing ! :(')
return { requiredVersion: requiredVersion, currentVersion: currentVersion }
}
La fonction me retourne :
Valeurs retournées du deserializer: { requiredVersion: 2048, currentVersion: 439552 }
J'ai enregistré les deux premiers packets que le serv m'envoie à chaque connexion pour gagner du temps.
Ne faites pas attention à la manière dont mes fichiers sont rangés, ce n'est pas un sniffer ni même un bot j'essaye vraiment d'apprendre comment réceptionner des packets :)