User Tools

Site Tools


en:games:star_trek_armada_1:zone_file_system

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
en:games:star_trek_armada_1:zone_file_system [2025-05-05-00-16] – [Encryption/File Contents] 7saturnen:games:star_trek_armada_1:zone_file_system [2025-05-05-00-25] (current) – [Zone File System] 7saturn
Line 1: Line 1:
 ====== Zone File System ====== ====== Zone File System ======
-The //Zone File System// is a method used by //Star Trek: Armada// to store game assets in archive-like files, namely the //objtxt.zfs// and //assets.zfs//. Especially the latter contains most of the [[en:games:star_trek_armada_1:modding:ODF files]] as well as the [[en:games:star_trek_armada_1:modding:tech_tree_file|tech tree files]]. The contents are not stored in their plain format, so the whole storage method may be considered kind of a method of obfuscation of actual game assets. The format is, however not very complicated to decipher/unpack.+The //Zone File System// is a method used by //Star Trek: Armada// to store game assets in archive-like files, namely the //objtxt.zfs// and //assets.zfs//. Especially the latter contains most of the [[en:games:star_trek_armada_1:modding:ODF files]] as well as the [[en:games:star_trek_armada_1:modding:tech_tree_file|tech tree files]]. The contents are not stored in their plain format, so the whole storage method may be considered kind of a method of obfuscation of actual game assets. The format is, however not very complicated to decipher/unpack. [[en:games:star_trek_-_armada_2|Star Trek: Armada II]] did not use this method of delivering game contents any more.
 ===== ZFS File Format ===== ===== ZFS File Format =====
 A ZFS has a header as well as directory-like sections and actual file content sections. A ZFS has a header as well as directory-like sections and actual file content sections.
Line 6: Line 6:
 The header has a length of 28 byte, consisting of the following information: The header has a length of 28 byte, consisting of the following information:
 ^  Start Offset  ^  Data Type  ^  Meaning  ^ ^  Start Offset  ^  Data Type  ^  Meaning  ^
-| 0 | uint32 | ID of the File, usually ''ZFSF'' |+| 0 | uint32 | ID of the File, Usually ''ZFSF'' |
 | 4 | uint32 | Version of the Format of the File, for Armada That is 1. | | 4 | uint32 | Version of the Format of the File, for Armada That is 1. |
 | 8 | uint32 | Maximum length of a File Name in Directories (//max. file name length//). | | 8 | uint32 | Maximum length of a File Name in Directories (//max. file name length//). |
Line 40: Line 40:
  
 If the //Next Directory Block Offset// is zero it implies that no more directory blocks follow, marking the block the last one of the directory. If the //Next Directory Block Offset// is zero it implies that no more directory blocks follow, marking the block the last one of the directory.
-===== objtxt.zfs ===== 
-The stock game file //objtxt.zfs// contains mostly mission objective texts as well as one //testobjectives.t// file: 
  
-++++ (click to expand) |+==== Encryption/File Contents ==== 
 +The file content itself is not stored in plain in the ZFS files, while the file names and metadata of directories are. The >>encryption<< of the file contents is actually very simple: Each file is stored in chunks of 4 bytes, each being xor-ed with the //Cypher Key// taken from the header. So in essence the >>password<< is provided along with the encrypted file contents. This is why this method of storage cannot seriously be considered proper encryption. Neither is the algorithm strong, nor is an already provided password any serious blockage from reading the file. It's at best a method of obfuscating things. 
  
-  * //b1ob1.txt//, 
-  * //b1ob2.txt//, 
-  * //b1ob3.txt//, 
-  * //b1ob4.txt//, 
-  * //b3ob1.txt//, 
-  * //b3ob2.txt//, 
-  * //b4ob1.txt//, 
-  * //b5ob1.txt//, 
-  * //f1ob1.txt//, 
-  * //f1ob2.txt//, 
-  * //f1ob3.txt//, 
-  * //f2ob1.txt//, 
-  * //f2ob2.txt//, 
-  * //f2ob3.txt//, 
-  * //f2ob4.txt//, 
-  * //f2ob5.txt//, 
-  * //f2ob6.txt//, 
-  * //f3ob1.txt//, 
-  * //f3ob2.txt//, 
-  * //f3ob3.txt//, 
-  * //f5ob1.txt//, 
-  * //f5ob2.txt//, 
-  * //f5ob3.txt//, 
-  * //f5ob4.txt//, 
-  * //f5ob5.txt//, 
-  * //fi1ob1.txt//, 
-  * //fi1ob2.txt//, 
-  * //fi4ob1.txt//, 
-  * //fi4ob2.txt//, 
-  * //fi5ob1.txt//, 
-  * //fi5ob2.txt//, 
-  * //fi5ob3.txt//, 
-  * //fi5ob4.txt//, 
-  * //fi5tm1.txt//, 
-  * //fi5tm2.txt//, 
-  * //fi5tm3.txt//, 
-  * //fi5tm4.txt//, 
-  * //fi5tm5.txt//, 
-  * //fi5tm6.txt//, 
-  * //fi5tm7.txt//, 
-  * //fi5tm8.txt//, 
-  * //fi5tm9.txt//, 
-  * //fi6ob1.txt//, 
-  * //fi6ob2.txt//, 
-  * //fi6ob3.txt//, 
-  * //fi6ob4.txt//, 
-  * //fi6ob5.txt//, 
-  * //fi6ob6.txt//, 
-  * //k1ob1.txt//, 
-  * //k1ob2.txt//, 
-  * //k1ob3.txt//, 
-  * //k3ob1.txt//, 
-  * //k4ob1.txt//, 
-  * //k5ob1.txt//, 
-  * //r2ob1.txt//, 
-  * //r2ob10.txt//, 
-  * //r2ob11.txt//, 
-  * //r2ob12.txt//, 
-  * //r2ob2.txt//, 
-  * //r2ob3.txt//, 
-  * //r2ob4.txt//, 
-  * //r2ob5.txt//, 
-  * //r2ob6.txt//, 
-  * //r2ob7.txt//, 
-  * //r2ob8.txt//, 
-  * //r2ob9.txt//, 
-  * //r2tm1.txt//, 
-  * //r2tm2.txt//, 
-  * //r2tm3.txt//, 
-  * //r2tm4.txt//, 
-  * //r3ob1.txt//, 
-  * //r3ob2.txt//, 
-  * //r3ob3.txt//, 
-  * //r3ob4.txt//, 
-  * //r4ob1.txt//, 
-  * //r4ob2.txt//, 
-  * //r5ob1.txt//, 
-  * //r5ob2.txt//, 
-  * //r5ob3.txt//, 
-  * //r5ob4.txt// and 
-  * //testobjectives.t//. 
  
-++++ 
 ===== assets.zfs ===== ===== assets.zfs =====
 This file contains almost all the [[.modding:ODF files]] as well as [[.modding:Tech Tree File|tech tree files]]: This file contains almost all the [[.modding:ODF files]] as well as [[.modding:Tech Tree File|tech tree files]]:
Line 668: Line 586:
  
 ++++ ++++
 +
 +===== objtxt.zfs =====
 +The stock game file //objtxt.zfs// contains mostly mission objective texts as well as one //testobjectives.t// file:
 +
 +++++ (click to expand) |
 +
 +  * //b1ob1.txt//,
 +  * //b1ob2.txt//,
 +  * //b1ob3.txt//,
 +  * //b1ob4.txt//,
 +  * //b3ob1.txt//,
 +  * //b3ob2.txt//,
 +  * //b4ob1.txt//,
 +  * //b5ob1.txt//,
 +  * //f1ob1.txt//,
 +  * //f1ob2.txt//,
 +  * //f1ob3.txt//,
 +  * //f2ob1.txt//,
 +  * //f2ob2.txt//,
 +  * //f2ob3.txt//,
 +  * //f2ob4.txt//,
 +  * //f2ob5.txt//,
 +  * //f2ob6.txt//,
 +  * //f3ob1.txt//,
 +  * //f3ob2.txt//,
 +  * //f3ob3.txt//,
 +  * //f5ob1.txt//,
 +  * //f5ob2.txt//,
 +  * //f5ob3.txt//,
 +  * //f5ob4.txt//,
 +  * //f5ob5.txt//,
 +  * //fi1ob1.txt//,
 +  * //fi1ob2.txt//,
 +  * //fi4ob1.txt//,
 +  * //fi4ob2.txt//,
 +  * //fi5ob1.txt//,
 +  * //fi5ob2.txt//,
 +  * //fi5ob3.txt//,
 +  * //fi5ob4.txt//,
 +  * //fi5tm1.txt//,
 +  * //fi5tm2.txt//,
 +  * //fi5tm3.txt//,
 +  * //fi5tm4.txt//,
 +  * //fi5tm5.txt//,
 +  * //fi5tm6.txt//,
 +  * //fi5tm7.txt//,
 +  * //fi5tm8.txt//,
 +  * //fi5tm9.txt//,
 +  * //fi6ob1.txt//,
 +  * //fi6ob2.txt//,
 +  * //fi6ob3.txt//,
 +  * //fi6ob4.txt//,
 +  * //fi6ob5.txt//,
 +  * //fi6ob6.txt//,
 +  * //k1ob1.txt//,
 +  * //k1ob2.txt//,
 +  * //k1ob3.txt//,
 +  * //k3ob1.txt//,
 +  * //k4ob1.txt//,
 +  * //k5ob1.txt//,
 +  * //r2ob1.txt//,
 +  * //r2ob10.txt//,
 +  * //r2ob11.txt//,
 +  * //r2ob12.txt//,
 +  * //r2ob2.txt//,
 +  * //r2ob3.txt//,
 +  * //r2ob4.txt//,
 +  * //r2ob5.txt//,
 +  * //r2ob6.txt//,
 +  * //r2ob7.txt//,
 +  * //r2ob8.txt//,
 +  * //r2ob9.txt//,
 +  * //r2tm1.txt//,
 +  * //r2tm2.txt//,
 +  * //r2tm3.txt//,
 +  * //r2tm4.txt//,
 +  * //r3ob1.txt//,
 +  * //r3ob2.txt//,
 +  * //r3ob3.txt//,
 +  * //r3ob4.txt//,
 +  * //r4ob1.txt//,
 +  * //r4ob2.txt//,
 +  * //r5ob1.txt//,
 +  * //r5ob2.txt//,
 +  * //r5ob3.txt//,
 +  * //r5ob4.txt// and
 +  * //testobjectives.t//.
 +
 +++++
 +
 {{page>footer&nofooter}} {{page>footer&nofooter}}
en/games/star_trek_armada_1/zone_file_system.1746404166.txt.gz · Last modified: 2025-05-05-00-16 by 7saturn

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki