

The first 4 bytes are again the sequence number of the last packet the server saw from the client. This packet is answered by a 0x0C0040002 packet.įull-ping-pong-repsonse (0x0C004002) This packet is the repsonse of the server to the clients 0x0B004002 packet. Bytes 0x20 to 0x23 is an (increasing?) number that the server will have to put into his reply.Īgain the packet ends with 6 bytes, which seem to be the same as in the 0x08004002 packet. It might be that this might change once the last 2 bytes of the packet gets larger than 0xFF. The next 3 bytes are unknown, but the first always seems to be 0xA0. The byte at 0x1C always is the same value as the one at 0x28. This is followed by a constant A§Úõ (at least during my capture) and a few other bytes. The first 4 are againt the sequence number from the server. The last two bytes of these unknown bytes seem always to be increasing in small steps (between 1 and 4) so it might be the amount of seconds since the client started or even the sum of all bytes sent or something similar.Ġx08004002 packets are (almost) always answered by the server with the same type of packet.įull-ping-pong (0x0B004002) This packet contains 22 bytes of data. The first four bytes always seem to be a number where only the first byte varies. This is followed by 6 bytes which are currently unknown. the last packet from the server was 0x0000001F, so this byte sequence will be the four bytes). The first 4 bytes is the sequence number of the last packet seen from the server (e.g. So far I've seen the following types of ping-pong-packets:įast-ping-pong (0x08004002) This packet contains 10 bytes of data. As far as I understood it so far, the client sends a "ping-packet" to the server and the server "pongs" it. These happen in the background without any user interaction. LOTRO sends "ping-pong" packets between the client and the server to verify the connection is established and both sides are working.
#Creating text blocks in lotro code
So far there still is a compile error due to an issue in the disassembling, but so far the code looks usable. The result does not provide us anything so far, but we might need to parse the files at a later point when the server is maturing. I also used a disassembler (ILSpy) on both binaries. This is exactly the string the client is displaying during startup. " (in case of the client_local_DE, somehow the strings are wrong when using client_local_English). So we take a look at the LocaleData.txt to find "Authentifizierung wird überprüft. If you now read 5 bytes backwards starting from the byte we found, we will read 250001FE0A. If we take the first 0x01000006 packet from the server and search for "25", we will find one occurence. Now that we have the strings, how do we find out what the server is telling us? Basically the most simple way is to search for "25" in packtes. You can now browse this file in something capable dealing with larger text files (i.e. It will generate the 30MB text file LocalData.txt containing all the strings. Once the command is finished you should have folder: data\client_local_English\2XXXXXXX\25XXXXXX\250XXXXXĮxtract the LOCALDATAEXTRACTOR.exe into that directory and execute it (again a. This command will run for some time (something like 10 mins), depending on your hardware and fragmentation of your hard disk. After this simply call the binary from a commandline:ĭAT_UNPACKER.exe client_local_English.dat So how do we achieve that?įirst of all copy DAT_UNPACKER.exe and datexport.dll to the root folder of LOTRO (it's a. The first one can be used to unpack client_local_English.dat, the later one will generate a large text file with all the strings. The site provides two binaries, the dat-unpacker and the localedata-extractor. I used lotrounpacker to take a look at the clients data. Today we'll take a look at how he does that and how.įirst of all let's take a look how the strings are stored. As mentioned earlier the server will send some strings to the client to display.
