28 lines
1.3 KiB
Markdown
28 lines
1.3 KiB
Markdown
|
\[\[Category RS2\]\]
|
||
|
|
||
|
== '''Packet structure''' == When the client sends a packet to the
|
||
|
server, the first byte encapsulates its opcode. This specific opcode is
|
||
|
encrypted with a value generated by the ISAAC PRNG seeded with a
|
||
|
dynamically server generated key during the login block. The server
|
||
|
decrypts it and associates the opcode to the packet's respective
|
||
|
predefined size. If the packet does not contain a fixed size, the opcode
|
||
|
will be followed by either a byte or a word - varying per packet - for
|
||
|
its proper size. This is then followed by the payload.
|
||
|
|
||
|
An addition to modern emulation protocols was the addition to allow
|
||
|
packets with an opcode of a word to be deciphered from the buffer. This
|
||
|
is done by taking the first two ISAAC PRNG seeds; each byte from the
|
||
|
buffer at the current offset is deciphered sequentially. If the first
|
||
|
byte deciphered is less than the maximum of a signed byte then the
|
||
|
packet is assumed to be byte length, otherwise it's considered to be
|
||
|
word length.
|
||
|
|
||
|
== '''Login''' == Every connection to the main 'gateway' server sends a
|
||
|
single byte of data, mostly well known as the connection type. The
|
||
|
connection type tells the main server which type of connection you wish
|
||
|
to initiate. The old engine list consists of:
|
||
|
|
||
|
<pre>
|
||
|
Needs documentation on how to login
|
||
|
</pre>
|