A cross-platform .scs extractor for both HashFS and ZIP.
- Supports HashFS v1 and v2 as well as ZIP (including "locked" ZIP files)
- Can extract multiple archives at once
- Partial extraction
- Raw dumps
- Built-in path-finding mode for HashFS archives without directory listings
- Automatic conversion of 3nK-encoded and encrypted SII files
A Windows executable is available on the Releases page. On other platforms, install the .NET 8 SDK and run the following:
git clone https://github.com/sk-zk/Extractor.git
cd Extractor
dotnet publish -c Release
extractor path... [options]
Short | Long | Description |
-a |
--all |
Extracts all .scs archives in the specified directory. |
-d |
--dest |
Sets the output directory. Defaults to ./extracted . |
--list |
Lists paths contained in the archive. Can be combined with --deep . |
|
-p |
--partial |
Limits extraction to the comma-separated list of files and/or directories specified. Examples:-p=/locale -p=/def,/map -p=/def/world/road.sii |
-P |
--paths |
Same as --partial , but expects a text file containing paths to extract, separated by
line breaks. |
-s |
--skip-existing |
Don't overwrite existing files. |
--tree |
Prints the directory tree and exits. Can be combined with --deep , --partial ,
--paths , and --all . |
|
-? , -h |
--help |
Prints the extractor's version and usage information. |
Short | Long | Description |
--deep |
An extraction mode which scans the contained entries for referenced paths instead of traversing
the directory tree from / . Use this option to extract archives without a top level directory listing. |
|
--list-entries |
Lists entries contained in the archive. | |
-r |
--raw |
Directly dumps the contained files with their hashed filenames rather than traversing the archive's directory tree. |
--salt |
Ignores the salt specified the archive header and uses the given one instead. | |
--table-at-end |
[v1 only] Ignores what the archive header says and reads the entry table from the end of the file. |
Normal extraction:
extractor "path\to\file.scs"
Extract two .scs files at once:
extractor "path\to\file1.scs" "path\to\file2.scs"
Extract all .scs files in a directory:
extractor "path\to\directory" -a
Extract def
and manifest.sii
only:
extractor "path\to\file.scs" -p=/def,/manifest.sii
Extract with deep mode:
extractor "path\to\file.scs" --deep