diff options
author | Dirk Engling <erdgeist@erdgeist.org> | 2015-06-02 19:44:40 +0200 |
---|---|---|
committer | Dirk Engling <erdgeist@erdgeist.org> | 2015-06-02 19:44:40 +0200 |
commit | cd57e6da895a1d64f17cf0cf5ab87f8cc78bd765 (patch) | |
tree | bbffbd01ee8d886d17da97efe4d2949b875fb0c1 /README | |
parent | f784fc3b3356109aecd7b44486513f7f5a2dcce9 (diff) | |
parent | 9b783b53ee8543f7922b3adc496a04e9486983c6 (diff) |
Merge remote-tracking branch 'refs/remotes/origin/master'
Diffstat (limited to 'README')
-rw-r--r-- | README | 8 |
1 files changed, 7 insertions, 1 deletions
@@ -53,4 +53,10 @@ Now we look at the continuation entry parts: A column_id of 0x4003 denotes a sta | |||
53 | version 3 | 53 | version 3 |
54 | ========= | 54 | ========= |
55 | 55 | ||
56 | TBD. | 56 | Some of the files on disc are obfuscated while others are plain. They consist of chunks of lha compressed data (as readable by the lha command). The obfuscation is a simple XOR of the first 32 (for streets: 34) bytes with a static 4 byte key that changes with every CD. Since lha headers do have a static signature (i.e. -lh5-), it's easy to derive the current key by xoring the static value with the bytes found in the file. Conveniently un-obfuscated files generate a all-zero key and don't need special treatment. The path name of each chunk is identical so it must be re-written and the header checksum must be re-calculated. |
57 | |||
58 | After decompressing all files (quite a lot, it's split at 3k entries per file) from dat/teiln.dat (case insensitive), we get three kinds of files: one with all Vorname columns, one with all Nachname columns and one with the rest of the columns. Before 2000_Q1 files {0,3,6,...} were Nachname, {1,4,7,...} were Vorname and {2,5,8,...} were all the other tables. After 2000_Q1 (incl.) {0,3,6,...} were all other columns, while {1,4,7,...} were Nachname and {2,5,8,...} Vorname columns. The first char in each entry in the Nachname column contains a continuation flag, where "1" means single line entry, "3" is the first and "2" are the remaining lines in a continuation. | ||
59 | |||
60 | If there is a dat/strassen.dat (case insensitive), the concatenated decompressed chunks are a list of all street names referenced in the street/hnr column. | ||
61 | |||
62 | If there is a dat/karto.dat (case insensitive), the concatenated decompressed chunks are a sorted list of all zip/streetname(/hnr) combinations on that CD, each line finished by the geo coordinates of that address. | ||