Bucket file specification (.bck file/PBUK DBLB file)
The bucket files are an archive that contains small files with zlib encoding.
They can be found in assets_system_1.tor and are extracted into the folder /resources/systemgenerated/buckets/. The file extension is .bck, the header starts with PBUK.
The file names are sequentially numbered from 0.bck onwards, a list of all bucket files can be found in /resources/systemgenerated/buckets.info.
There are quite a few integers that I am not sure about what they mean, so any help is appreciated.
File header:
0-3: 4 byte identifier:
PBUK (
50 42 55 4B)
4-5: Unknown 16-bit little-endian integer (maybe number of DBLB sections?), always
02 00
6-7: Unknown 16-bit little-endian integer, always
04 00
DBLB block:
LOOP (for each DBLB block) {
--- 32-bit little-endian integer specifying the size of this block starting with DBLB, eg.
0C 00 00 00 or
64 A0 03 00
--- 4 byte identifier:
DBLB (
44 42 4C 42)
--- Unknown 32-bit little-endian integer, always
01 00 00 00
--- 32-bit little-endian integer specifying number of files in this block, eg.
B6 00 00 00
---
LOOP (for each file in this block) {
--- --- Unknown 16-bit little-endian integer, always
0F 00
--- --- Unknown 16-bit little-endian integer, eg.
52 00 or
66 00 or
71 00
--- --- 6 unknown bytes (maybe CRC checksum?), eg.
01 FC 70 C1 12 01 or
20 32 63 27 01 or
80 0D 21 92 E2 0A
--- --- 4 bytes, always
00 E0 2E 00
--- --- Unknown 16-bit little-endian integer, always lower by one than the previous integer, eg.
51 00 or
65 00 or
70 00
--- --- Unknown 32-bit little-endian integer, eg.
17 00 00 00
--- --- 4 unknown bytes (maybe CRC checksum?), eg.
50 14 1E E2 or
0E CD 1A 01
--- --- 6 unknown bytes, always
00 00 00 40 00 00
--- --- Unknown 16-bit little-endian integer, eg.
58 00 or
68 00 or
78 00
--- --- Unknown 32-bit little-endian integer, eg.
61 00 00 00 or
63 02 00 00 or
74 01 00 00
--- --- Unknown 16-bit little-endian integer equal to the one two lines above, eg.
58 00 or
68 00 or
78 00
--- --- Unknown 16-bit little-endian integer, always
04 00
--- --- Two unknown bytes, always
01 03
--- --- String with a variable length until
00 00, specifying FQN of this file, eg.
ipp.class.spy.a05.c02.s02.legs_v01
--- --- Separator/end of string, always
00 00
--- --- Beginning of a file, it is unknown where its length is stored. In most cases, the file starts with
xœ (
78 9C) and can be decoded with zlib.
--- --- 3 unknown bytes, identifying end of section, either
00 00 00 or
01 00 00
---
} END LOOP
} END LOOP