Arx Fatalis PAK: Difference between revisions
Jump to navigation
Jump to search
(→Format Specifications: typo) |
imported>Ikskoks |
||
| (17 intermediate revisions by the same user not shown) | |||
| Line 76: | Line 76: | ||
* [[Game Extractor|Game Extractor]]<br> | * [[Game Extractor|Game Extractor]]<br> | ||
* [http://www.ctpax-x.org/?goto=files&show=100 Arx Fatalis .PAK unpacker] - with C++ source code | * [http://www.ctpax-x.org/?goto=files&show=100 Arx Fatalis .PAK unpacker] - with C++ source code | ||
* arxunpak | |||
* [http://teachsolaisgames.com/utils/ArxPakFull.zip ArxPak] | |||
* [http://dimoks86.narod.ru/files/Danae.rar afunpak] | |||
* [https://github.com/karablin/arx-unpacker arx-unpacker] | |||
<br><br> | |||
[[Category:Extension_pak | Extension: pak]] | |||
[[Category:XOR encryption]] | |||
[[Category:File Format]] | |||
Latest revision as of 19:29, 29 March 2022
Choose archive extension:
PAK
- Format Type : Archive
- Endian Order : Little Endian
Format Specifications
// ARCHIVE HEADER
- uint32 {4} - Directory Offset
byte {X} - File Data
// FILES DIRECTORY
- uint32 {4} - Directory Length
// for each directory
- char {X} - Path
- byte {1} - null Path Terminator
- uint32 {4} - Number Of Files
- // for each file
- char {X} - Filename
- byte {1} - null Filename Terminator
- uint32 {4} - File Offset
- uint32 {4} - Packed flag (0 - unpacked, else - PKWARE implode)
- uint32 {4} - Decompressed Length (0 if not packed - use File Length below)
- uint32 {4} - File Length
- char {X} - Filename
- // for each file
Notes and Comments
- In retail version Directory XORed with string:
AVQF3FCKE50GRIAYXJP2AMEYO5QGA0JGIIH2NHBTVOA1VOGGU5H3GSSIARKPRQPQKKYEOIAQG1XRX0J4F5OEAEFI4DD3LL45VJTVOA1VOGGUKE50GRIAYX
- There are two type of demo version - first one doesn't use any XOR in Directory and second one use different from retail string:
NSIARKPRQPHBTE50GRIH3AYXJP2AMF3FCEYAVQO5QGA0JGIIH2AYXKVOA1VOGGU5GSQKKYEOIAQG1XRX0J4F5OEAEFI4DD3LL45VJTVOA1VOGGUKE50GRI
- The way to detect which key must be used (or not used at all) is to read first 5 bytes (first entry always empty and have 0 files: 1 (null Path Terminator) + 4 (Number Of Files) = 5) of the Directory and compare it with: 5 zero bytes (demo1 - no encryption), "AVQF3" (retail) or "NSIAR" (demo2).
MultiEx BMS Script
ImpType StandardTail ; SavePos TailOffOff 0 ; Get TO Long 0 ; GoTo TO 0 ; Get TS Long 0 ; SavePos T 0 ; Math T += 5 ; GoTo T 0 ; Get Path String 0 ; Get FN Long 0 ; For D = 1 To FN ; Set Name String Path ; Get Name String 0 ; SavePos FOO 0 ; Get FO Long 0 ; Get ZipState Long 0 ; Get OrSize Long 0 ; SavePos FSO 0 ; Get FS Long 0 ; Log Name FO FS FOO FSO ; Next D ;
Compatible Programs
- MultiEx Commander
- Game Extractor
- Arx Fatalis .PAK unpacker - with C++ source code
- arxunpak
- ArxPak
- afunpak
- arx-unpacker