Difference between revisions of "Telara.db"

From The Ghar Station Wiki
Jump to: navigation, search
m (Update link to see)
 
(12 intermediate revisions by 3 users not shown)
Line 1: Line 1:
== telara.db ==
+
= telara.db =
  
'''telara.db''' is an encrypted SQLite3 database stored within the RIFT [[Assets]] and consists of 3 tables, only 2 are used by us.
+
'''telara.db''' is an encrypted [https://www.sqlite.org/see/doc/release/www/index.wiki SQLite3 database] stored within the RIFT [[Assets]] and consists of 3 tables, only 2 are used by program.
  
 +
It can be decrypted using [https://github.com/newsoft/sqlite3-dbx sqlite3-dbx] and the appropriate encryption key.
 +
 +
Alternately, the file can be decrypted without using sqlite3 because the DB is encrypted using a simple 128-AES block cipher.  See [https://www.sqlite.org/see/doc/trunk/www/readme.wiki SQLite Encryption Extension Documentation] for more information.
 +
 +
The only caveat is that bytes 16-23 on the first page are NOT encrypted. See: [https://www.sqlite.org/fileformat.html Database File Format] for the exact purpose of these bytes.
 +
The only one you really need is the first 2 bytes at offset 16 which contain the pagesize, which is the amount of bytes you have to feed into the decryption routine.
 +
 +
 +
== Dataset Info ==
  
 
=== dataset ===
 
=== dataset ===
Line 16: Line 25:
 
This table contains 2 columns, "datasetId" and "frequencies" and contains the 1024 byte Huffman table frequencies to build a [https://rosettacode.org/wiki/Huffman_coding Huffman tree] to decompress the dataset entries.
 
This table contains 2 columns, "datasetId" and "frequencies" and contains the 1024 byte Huffman table frequencies to build a [https://rosettacode.org/wiki/Huffman_coding Huffman tree] to decompress the dataset entries.
  
The exact algorithm to build the tree is unknown at this time.
+
See [https://github.com/imathrowback/telarafly/blob/master/Assets/DatParser/HuffmanReader.cs here] for an implementation in C#.
 +
 
 +
== Dataset Summary ==
 +
 
 +
{| class="wikitable sortable"
 +
! Dataset # !! Contents
 +
|-
 +
|43 || Messages?
 +
|-
 +
|52 || UNKNOWN - Every entry empty
 +
|-
 +
|53 || Spell Categories
 +
|-
 +
|80 || UNKNOWN - Every entry empty
 +
|-
 +
|98 || Buffs/Auras
 +
|-
 +
|111 || Scene definitions - Skymaps possibly ambient lighting
 +
|-
 +
|113 || Zone definitions
 +
|-
 +
|114 || More zone sounds? Ambient? VFX - refs 4479
 +
|-
 +
|119 || ?
 +
|-
 +
|121 || Ambient sounds
 +
|-
 +
|125 || triggers for ambience?
 +
|-
 +
|3199 || levels of mobs?
 +
|-
 +
|10005 || sound bank files
 +
|-
 +
|3410 || ability defintions of some kind - gfx related?
 +
|-
 +
|623 || model definitions? KFM/NIF/HKX
 +
|-
 +
|3004 || spells or abilities VFX
 +
|-
 +
|7305 || nif references
 +
|-
 +
|7304 || HKX (Collision data?)
 +
|-
 +
|6009 || icons
 +
|-
 +
|3613 || not sure? Npc related?
 +
|-
 +
|10017 || voice references
 +
|-
 +
|2200 || achievement related, references 2204
 +
|-
 +
|2204 || achievement names
 +
|-
 +
|7638 || appearance sets
 +
|-
 +
|7629 || items -> refs: 6009/7305/7377
 +
|-
 +
|7701 || EULA
 +
|-
 +
|4307 || profanity/blocked text
 +
|-
 +
|10701 || artifacts
 +
|-
 +
|11343 || map -> refs XML files
 +
|-
 +
|1101 || LUA documentation
 +
|-
 +
|159 || Class callings/soul presets
 +
|-
 +
|1870 || language related -> refs 83
 +
|-
 +
|10854 || minion card quests
 +
|-
 +
|4479 || teleport/spawn locations
 +
|-
 +
|4426 || instances/worlds
 +
|-
 +
|7710 || console commands
 +
|-
 +
|3798 || Moving object paths
 +
|-
 +
|13148 || Store promotion definitions
 +
|}

Latest revision as of 04:32, 14 April 2020

telara.db

telara.db is an encrypted SQLite3 database stored within the RIFT Assets and consists of 3 tables, only 2 are used by program.

It can be decrypted using sqlite3-dbx and the appropriate encryption key.

Alternately, the file can be decrypted without using sqlite3 because the DB is encrypted using a simple 128-AES block cipher. See SQLite Encryption Extension Documentation for more information.

The only caveat is that bytes 16-23 on the first page are NOT encrypted. See: Database File Format for the exact purpose of these bytes. The only one you really need is the first 2 bytes at offset 16 which contain the pagesize, which is the amount of bytes you have to feed into the decryption routine.


Dataset Info

dataset

Contains 6 columns. The most useful are "datasetID", "datasetKey" and "value". The ID and Key together point to a unique entry. Most of the entries are COMPRESSED and have to be decompressed to be read.

Each entry starts with a LEB128 to indicate decompressed size, followed by compressed DAT_Format data.


dataset_compression

This table contains 2 columns, "datasetId" and "frequencies" and contains the 1024 byte Huffman table frequencies to build a Huffman tree to decompress the dataset entries.

See here for an implementation in C#.

Dataset Summary

Dataset # Contents
43 Messages?
52 UNKNOWN - Every entry empty
53 Spell Categories
80 UNKNOWN - Every entry empty
98 Buffs/Auras
111 Scene definitions - Skymaps possibly ambient lighting
113 Zone definitions
114 More zone sounds? Ambient? VFX - refs 4479
119  ?
121 Ambient sounds
125 triggers for ambience?
3199 levels of mobs?
10005 sound bank files
3410 ability defintions of some kind - gfx related?
623 model definitions? KFM/NIF/HKX
3004 spells or abilities VFX
7305 nif references
7304 HKX (Collision data?)
6009 icons
3613 not sure? Npc related?
10017 voice references
2200 achievement related, references 2204
2204 achievement names
7638 appearance sets
7629 items -> refs: 6009/7305/7377
7701 EULA
4307 profanity/blocked text
10701 artifacts
11343 map -> refs XML files
1101 LUA documentation
159 Class callings/soul presets
1870 language related -> refs 83
10854 minion card quests
4479 teleport/spawn locations
4426 instances/worlds
7710 console commands
3798 Moving object paths
13148 Store promotion definitions