AW: [GenericProtocol] Aufbau
Typ 0 ist an sich kein Byte, sondern ein ENUM Value. Es hat nur die größe eines Bytes.
AW: [GenericProtocol] Aufbau
Aufbau des Trees
es wird gesplittet nach dem ersten ;;
Das erste Split sind die
PROTOCOL_NAMES, diese werden mit Semikolon gesplittet und beginnen mit einem Index von 20 (wie oben erklärt, haben wir 20 als offset im header)
Das zweite Split wird dann nochmal getrennt nach einem :
Daraus folgenden die letzten Zwei Blöcke
Der erste Protocol sind die PROTOCOL_STRUCTURES, die sind wieder Semikolon getrennt und geben an, wie die PROTOCOLLE aufgebaut sind
0-13 die oben genannten Typen, über 20 ist dann wieder nur ein neues PROTOCOL_STRUCTURE
Der Zweite Teil sind die ENUM VALUES, die mit ;; voneinander getrennt sind
Geht man die PROTOCOL_STRUCURES alle durch, ist überall wo ein einzelner WERT nur 0 ist, ein ENUM...
In der Reihenfolge kommen dann auch die ENUM_VALUES und man kann dann entsprechend auch die ENUMS den PROTOCOL_NAMES zuweisen.
AW: [GenericProtocol] Aufbau
Was ich derzeit nicht verste, ist ein ganz spezieller Part, an dem die Assignments geschehen - Sprich, die Zuweisungen zu den jeweiligen Typen.
Und zwar ist dies folgende stelle:
Zitat:
<Version>;<Offset>;[<Token>;<Token>;<Token>;];<?>;;<?>;;;[<Assignment>;;<Assignment>;;][....]
Daraus resultiert folgendes (gekürzt):
Zitat:
-736340139;20;PROTOCOL_HASH;CONFIRM_PROTOCOL_HASH;;5;;20;;;9;;23;;13;;
Das grüne Semikolon bezeichnet das Ende des ersten Parts, die TokenNames. Diese Struktur kurz danach ist noch ziemlich verwirrend. Warum taucht auf dieser stelle drei mal ein Semikolon auf?
Das ganze passt nicht wirklich zum Schema, da die Zuweisung wie folgt passiert: <Aktueller Index> = <Typ> (Der <Typ> ist das, was dort als Integer steht, sprich 5 = Short oder 20 = PROTOCOL_HASH). Dies wird dann auf einmal durch ein drittes Semikolon verwirrend gemacht.
Entweder kommt der "Leereintrag" von PROTOCOL_CONFIRMED, weil dies eben keine Value besitzt, sondern einfach nur auf existenz abgefragt wird, es zeigt hier ein "Ende" oder ich weiß auch nicht...
Im übrigen werden die Assignments nicht nach ;; gesplitted, dies ist falsch. Es zeigt nur das Ende. Jedes Assigment endet mit einem Semikolon, sind die Assignments für den aktuellen Index definiert, kommt als letztes noch einmal ein Semikolon, um das zu beenden. Denn es gibt nicht nur single-assignments, sondern es können zum <Type> auch mehrere Assignments geschehen.
Beispiel:
Single-Assignment:
Multiple-Assignments:
Zitat:
<ID>;<ID>;<ID>;<ID>;;
AW: [GenericProtocol] Aufbau
die drei semikolon sind ganz klar... das paket hat keinen inhalt
AW: [GenericProtocol] Aufbau
Okay, nach genauem analysieren, funktioniert das wie folgt:
Der Part's eines Assignments gibt wie bereits mir zuvor bekannt die <Types> wieder, die durch Semikolon getrennt werden. Ist etwas nicht deklariert/zugewiesen, erhält dies einen Leereintrag ohne Angaben eines Indexes/Types. Die drei Semikolons haben also keine spezielle Bedeutung und spiegeln nur den Leereintrag wieder. Normale Zuweisungen werden mit zwei Semikolons abgeschlossen, leere Zuweisungen hingegen nur mit einem(!).
Durch das Analysieren konnte ich nun den GenericTree so bauen, dass ich mir ein komplett eigenes Tree erstellen konnte. Bisher auf JavaScript-Basis via ES6 - Einzige Problem hier, dass JavaScript (Node.js verhält sich da etwas anders, hier sind die Browserbasierten-Dinge gemeint) kein Long DatenTyp "versteht", da aktuell nur maximal 53bit verwendet werden können, Long braucht aber bis zu 56bit, damit man hier einen Reader/Writer mit Byteshifting erstellen kann; Denn um die Long-Value zu schreiben, müsste man wie folgt shiften: 56 > 48 > 40 > 32 > 24 > 16 > 8 > 0
Leider geil. Der HTMLChat taugt zum analysieren überhaupt nichts, da es viel zu hart obfuscated ist, da hat man das ganze schneller über die Informationen über das Java-Applet zusammengebastelt.
AW: [GenericProtocol] Aufbau
Es gibt online eine LONG Klasse die das kann