Skip to content

sk-zk/Extractor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

77 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Extractor

A cross-platform .scs extractor for both HashFS and ZIP archives. Supports raw dumps, partial extraction, and extracting all .scs files at once.

HashFS v2, introduced with game version 1.50, is supported.

Build

A self-contained binary for Windows 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 --recursive
cd Extractor
dotnet publish -c Release

Usage

extractor path... [options]

General options

Short Long Descripton
-a --all Extract all .scs archives in the specified directory.
-d --dest Sets the output directory. Defaults to ./extracted.
-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 newlines.
-s --skip-existing Don't overwrite existing files.
-?, -h --help Prints the extractor's version and usage information.

HashFS options

Short Long Descripton
--list Lists entries and exits.
-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.
--tree Prints the directory tree and exits. Can be combined with --partial, --paths, and --all.

Examples

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 map only for all .scs files in a directory:

extractor "path\to\directory" -a -p=/map

Extract locale.scs:

extractor "path\to\locale.scs" -p=/locale