=========================================
"Super Star Book Viewer" book catalog file format
=========================================
Version 1.1
SHUN COX (shuncox@263.net)
note:
This article can be replicated, converted, and released, but must maintain the consistency and complete file content.
If you have any questions, please go to bookExpress.iscool.net or email shuncox@263.net
First, .dat file
___________________________________________________________________________________________
Overall structure
---------
| Head |
---------
| Record 1 |
---------
| Record 2 |
---------
| ... |
---------
| Record N |
---------
The head structure of the .dat file
Struct dathead {
DWORD MARK; / / Sign, 'SSDT'
Word ver; / / may be version number, generally 2
Word Type; // Type, 2 in Site and Address,
// bktree is 0 (2) in V3.51),
// bklist is 3
DWORD NUMOFREC; / / How much record
DWORD LENPERREC; / / Per record length
DWORD LENOFHEAD; // head length
DWORD Encoffset; // The beginning of the encryption section, only in BKLIST
// (This variable is invalid in V3.51)
}
Second, the record structure of different .dat files
___________________________________________________________________________________________
Site.dat
------------
Record completely encrypted
Struct siteinfo {
CHAR path [32]; // local path
Char name [64]; // Library Name
Word rev1; // unknown
Char Date [22]; // Update Date
CHAR URL [132]; // Update the URL of the library
DWORD REV2; // Unknown
}
Address.dat
-----------
Record completely encrypted
Struct addrinfo {
DWORD REV; // Unknown
Char addr []; // download host address
}
Bktree.dat
------------
V3.51 before the record is not encrypted, V3.51 completely encrypts Struct TreeInfo over the entire record {
Char name [100]; // Category Name
Word rev; // unknown
Word Level; // Classification The number of layers
DWORD Start; / / The starting record number in the corresponding BKLIST
DWORD NUM; // Book Number
}
BKList.dat
------------
BKLIST record is relatively complex
Offset 0 (V3.51 is not encrypted before, V3.51 is completely encrypted over the entire record):
Struct bookinfo {
Char Name [100]; // Title
DWORD PAGES; / / Page
Word addrno; // host number (starting from 1, host address
Address)
}
Offset Dathead :: Encoffset is encrypted (V3.51 starting from 0x6a):
* For SSReader V3.4
Struct encinfo {
Word enclen; // encrypted length
// Encryption start
Word Copyright; // Copyright, if (Copyright >> 8 == 0), you can download
CHAR path [100]; // path and file name
Char author []; // Author, if (Dathead :: lenperrec! = 0x110)
}
* For SSReader V3.5 - V3.51
Struct encinfo {
Word enclen; // encryption length (this variable is invalid in V3.51)
// Encryption start
Word Copyright; // Copyright, if (Copyright >> 8 == 0), you can download
Char Rev [58]; // unknown
DWORD SN; / / SARB number
Char path []; // path and file name
}
Third, decryption algorithm
___________________________________________________________________________________________
Decryption is performed in the order of 0x10 bytes, and the byte of the last insufficient unit is ignored.
Void Decrypt (DWORD * S)
{
DWORD V = 0xE3779B90;
DWORD D = 0x9e3779b9;
Static DWORD K [] = {0x3f65496d, 0x61737745, 0x2e2c2e5e,
0x38375f2f};
INT I;
For (i = 0; i <0x10; i ) {
s [3] - = ((s [0] << 4) K [2]) ^ (s [0] V) ^
((S [0] >> 5) k [1]);
s [2] - = ((S [3] << 4) K [0]) ^ (s [3] V) ^
((S [3] >> 5) k [3]);
s [1] - = ((S [2] << 4) K [2]) ^ (s [2] V) ^
((S [2] >> 5) k [3]);
s [0] - = ((S [1] << 4) K [0]) ^ (s [1] V) ^
((S [1] >> 5) k [1]); V - = D;
}
}
___________________________________________________________________________________________
"Super Star Book Viewer" is a registered trademark of Beijing Century Super Star Information Technology Development Company
<<<< End