Jump to content

pierr32

sqlte DB struct

Recommended Posts

is it possible to provide a structure to which we can assign byte[] from the Data blob database ?

ps: the question is for the developers.

Greetings to the entire Developer team!

Share this post


Link to post
Share on other sites
  On 1/31/2024 at 1:29 AM, pierr32 said:

is it possible to provide a structure to which we can assign byte[] from the Data blob database ?

ps: the question is for the developers.

Greetings to the entire Developer team!

For those ones who not familiar with MySQL & SQLite.

The field type BLOB - is byte[] field, designed for storing any kind of data. Inside DayZ players.db -> Players (table) -> Data (field) - contains character data (Character ClassName, Coordinates, Character Gear, assignment slots, Modificators (health, stomach, healing mods, damages zones...), items health, states and many other information) - simply all user data. That data is hidden from usage and BI will never give you such information because of it may cause to creating the tools for hackers, different admintools, basic cheats for the server owners and etc, same as giving the ability to edit players mods and brigs alot of troubles to the server by wrong usage of that data.

 

Basically that data is the C++ class implementation, that class described inside EXE file of game (and you can get it's info only through reverse engineering of exe file that forbidden by game licence). Based on information from network you may get idea that serialisation process was implemented through the MS VC++ redistribution framework 2015 - 2022 versions, but without the code of class representation you'll not able to view or interpreter the data from it, so that would be useless.

The different olayers & and servers owners asked BI to describe the players database structure since first public release of DatZ Server but BI don't give a heck about it, because who the heck those cockroaches why heck we shall cares about them we're the Bohemian, we are the best (and other crp about it). So I bet that they will not give you such information (coz they didn't done that in last 7 years for sure since implementation of new engine for the game).

But I wish you luck with that!

Edited by Sid Debian

Share this post


Link to post
Share on other sites
  On 1/31/2024 at 3:16 PM, Sid Debian said:

For those ones who not familiar with MySQL & SQLite.

The field type BLOB - is byte[] field, designed for storing any kind of data. Inside DayZ players.db -> Players (table) -> Data (field) - contains character data (Character ClassName, Coordinates, Character Gear, assignment slots, Modificators (health, stomach, healing mods, damages zones...), items health, states and many other information) - simply all user data. That data is hidden from usage and BI will never give you such information because of it may cause to creating the tools for hackers, different admintools, basic cheats for the server owners and etc, same as giving the ability to edit players mods and brigs alot of troubles to the server by wrong usage of that data.

 

Basically that data is the C++ class implementation, that class described inside EXE file of game (and you can get it's info only through reverse engineering of exe file that forbidden by game licence). Based on information from network you may get idea that serialisation process was implemented through the MS VC++ redistribution framework 2015 - 2022 versions, but without the code of class representation you'll not able to view or interpreter the data from it, so that would be useless.

The different olayers & and servers owners asked BI to describe the players database structure since first public release of DatZ Server but BI don't give a heck about it, because who the heck those cockroaches why heck we shall cares about them we're the Bohemian, we are the best (and other crp about it). So I bet that they will not give you such information (coz they didn't done that in last 7 years for sure since implementation of new engine for the game).

But I wish you luck with that!

Hello Sid Debian, I'm glad you responded, but the question wasn't addressed to you. Nevertheless, I will answer you because my question is not that important and does not interfere with the structure of the game script itself, but of a file publicly available to server users. What's more, I know that there is a probability that the blob file has data encoded in AES or RSAblob or other libraries, because blob has a header. I think that the developers should provide us with access to this data, because it does not interfere in any way with the game script that is under the license, am I right?

Share this post


Link to post
Share on other sites
  On 2/1/2024 at 1:35 PM, pierr32 said:

Hello Sid Debian, I'm glad you responded, but the question wasn't addressed to you. Nevertheless, I will answer you because my question is not that important and does not interfere with the structure of the game script itself, but of a file publicly available to server users. What's more, I know that there is a probability that the blob file has data encoded in AES or RSAblob or other libraries, because blob has a header. I think that the developers should provide us with access to this data, because it does not interfere in any way with the game script that is under the license, am I right?

No it has no anykind of encryption.

You can check it through the SQLite DB Browser app, it can show the BLOB as byte array with supporting of string representation.

If you'll check the data you'll find that most of strings showing fine without any encryption, but Byte Serialisation means that each datat type shall has specific length (in bytes) and without the base serialisation class you'll not able to deserialise it. Well if describe it's in other way imagine the JSON document where all headers encrypted or named like "a","b"... and data that stored in those nodes are encrypted (with any kind of encryption), and the data is a byte array. So try to deserialise that (p.s. you'll met a trouble that you have no idea what those data means). Here you have exactly the same, without the base class that provides structures of all records you can't parse it. Heh it's almost the same way like you'll try to talk on language that you don't know 🙂

 

Also try to raice the ticket on Dev's Bug Tracker. That might be that devs will make it a private ticket and give you such information.

Share this post


Link to post
Share on other sites

It is not really a secret how the data is stored and there is no encryption. It is a simple raw dump from script.

The stored blob is based on the hierarchy root eg. player. From then on it goes through the OnStoreSave functions of all lower lying objects. It all starts in 4_World playerbase.c 

You need to know what is saved to build a reverse mapping table of how to parse the bytes and in the same order the data is actually being saved in script. Besides scanning basic information and lists of item names and logical placement on the player, it is way too much effort to actually build it.

Once you start modding a server, and there is any mod in use that has custom items or changes to the saved data, you need to adjust your parsing entirely.

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

×