Homebrew RELEASE LibHac & hactoolnet v0.1.3

  • Thread starter Thread starter minibar
  • Start date Start date
  • Views Views 26,222
  • Replies Replies 32
  • Likes Likes 17
I'm a little late posting it here, but v0.2.0 has been released.

Download

v0.2.0

A single-exe version of hactoolnet has been added to the downloads for convenience over using an exe with dlls
  • Use a new `IStorage` interface throughout the library instead of `Stream`
    • This interface is more similar to the `IStorage` interface used by Horizon.
    • Instead of having a Stream that keeps track of the current position, IStorage accepts an offset, buffer, and length when reading or writing.
    • Unlike a Stream, an IStorage instance can be shared between multiple consumers without issue
    • `Stream.AsStorage()` and `IStorage.AsStream()` methods are provided for switching between `Stream` and `IStorage`
  • Improve AES-XTS performance by ~16x
  • Improve AES-CTR performance by 2x
  • Add AES-XTS tests
  • Add benchmarks for AES-XTS and AES-CTR
  • Ability to open a decrypted IStorage of an NCA, Package1 or Package2
  • Validate NCA, NPDM and package2 signatures
  • Add NPDM parsing support
  • Allow more disposal methods to cascade down to the base storage
  • Support writing version 5 of `JournalStorage` used in newer save data files
  • Fix a fatal save allocation table bug that would occur if the last block of the save data FS was read
  • Add a build script

    hactoolnet changes

  • Add the ability to replace files in a save data file (Currently the new file must be the same size as the old file)
  • Add benchmarks for AES-XTS and AES-CTR
  • Change how Switch FS title info is displayed, and add an option to display info on all NCAs
Hey man jw, can this be used to modify NSO files
 
Can someone post some examples on how to use the command line for this...The readme isn't that helpful - thanks.
 
I found a need for hactoolnet recently and struggled with the command line a bit until I got it, figure I post it here for future reference. A prior warning here, any modifications to the Nintendo Switch partition and any files within may result in data corruption, the worst case may be bricking the Switch. Now that we are aware of the risk, before attempting any of the steps below, make sure you have a good NAND backup as well as back up of the save files.

# 1. Read the save file from the User partition (e.g. User\save\000000000000000a). Note the CMAC Signature line is FAIL because we have not provided the proper key to verify its signature yet
hactoolnet.exe -t save 000000000000000a

# 2. Extract the save file with the proper key file (-t keys.txt). The key file essentially is a copy of the prod.keys and title.keys combined if you have backed it up with Lockpick_RCM
hactoolnet.exe -k keys.txt -t save --outdir output_folder 000000000000000a

# 3. Repack the extracted directory and sign it with the Switch's device key you like to transfer to. It needs an actual save file (e.g. 000000000000000a) to overwrite to, that's where it was confusing for me
hactoolnet.exe -k keys.txt --sign --repack .\output_folder -t save 000000000000000a

# 4. Verify if the repacked/signed save file with the same key as in the last step. It should have "CMAC Signature (GOOD)" instead of "CMAC Signature (FAIL)"
hactoolnet.exe -k keys.txt -t save 000000000000000a

Now we can put the save file (e.g. 000000000000000a) back to the User partition (e.g. User\save\000000000000000a) now. If we are putting in on a different Switch, just make sure to match the file name which you will overwrite.

Source
[1] Search in GBAtemp for "Edit OFW clean Switch save data from NAND backup/restoring via Fusee Gelee payloads", the author laid out a very detailed instruction and example for hactoolnet
 
Last edited by gghaxor,
Releases are available on GitHub.

LibHac


LibHac is a .NET Framework and .NET Core library for reading and editing file formats used by the Nintendo Switch.

Supported formats
  • NCA
  • XCI
  • NAX0
  • PFS0/HFS0/NSP
  • RomFS
  • Save file
  • Package1
  • Package2
  • INI1/KIP1
  • CNMT
  • NACP
  • Ticket
  • PRODINFO
  • Switch NAND and SD card

Additional features
  • Save file editing and signing
  • PFS0 creation
  • Switch key derivation
  • Integrity verification of NCA, XCI, etc.
  • Personalized title key reading
  • Read, parse and display information about a Switch NAND or SD card
  • Extract NCA, RomFS and other formats directly from an SD card or NAND, including patched titles
  • And more!

hactoolnet


Hactoolnet is a tool that uses LibHac for viewing and extracting data from common Nintendo Switch file formats. It partially mimics hactool's interface.

Features
  • Dump the container formats that LibHac supports
  • A progress bar!
  • Save file signing
  • Dump RomFS directly from an XCI or SD card
  • Dump SD card titles as NSP files
  • Verify the integrity of all titles on a Switch SD card
  • Switch key derivation
  • Automatic integrity verification of NCA, XCI, etc.
  • Give information about the titles and applications on a Switch NAND or SD card
  • Extract NCA, RomFS and other formats directly from an SD card or NAND, including patched titles

Download

Changelog



v0.2.0

A single-exe version of hactoolnet has been added to the downloads for convenience over using an exe with dlls
  • Use a new `IStorage` interface throughout the library instead of `Stream`
    • This interface is more similar to the `IStorage` interface used by Horizon.
    • Instead of having a Stream that keeps track of the current position, IStorage accepts an offset, buffer, and length when reading or writing.
    • Unlike a Stream, an IStorage instance can be shared between multiple consumers without issue
    • `Stream.AsStorage()` and `IStorage.AsStream()` methods are provided for switching between `Stream` and `IStorage`
  • Improve AES-XTS performance by ~16x
  • Improve AES-CTR performance by 2x
  • Add AES-XTS tests
  • Add benchmarks for AES-XTS and AES-CTR
  • Ability to open a decrypted IStorage of an NCA, Package1 or Package2
  • Validate NCA, NPDM and package2 signatures
  • Add NPDM parsing support
  • Allow more disposal methods to cascade down to the base storage
  • Support writing version 5 of `JournalStorage` used in newer save data files
  • Fix a fatal save allocation table bug that would occur if the last block of the save data FS was read
  • Add a build script

    hactoolnet changes

  • Add the ability to replace files in a save data file (Currently the new file must be the same size as the old file)
  • Add benchmarks for AES-XTS and AES-CTR
  • Change how Switch FS title info is displayed, and add an option to display info on all NCAs

v0.1.3
  • Add basic save file editing. Any files already in the save file can be written to
  • Check validity of save files
  • Check validity of PFS files
  • Check validity of SwitchFS and SD cards
  • Check file hashes in HFS archives
  • Partial NSO support
  • When keys required to decrypt an NCA are missing, throw an exception with information about the missing keys.
  • Add more sanity checks when reading an NCA.
  • Read only the NCA header when first opening an NCA. This allows for reading of partial NCAs and slightly improves performance when opening an NCA.
  • Fix bug in CombinationStream when reading across boundaries

    hactoolnet changes

  • Add option to verify SwitchFS and SD cards
  • Add option to export all keys
  • Add PFS0 extraction
  • Print more information about save files
i cant download this anywhere
 
Does someone have a mirror of this? the github release page got taken down.
Post automatically merged:

Does someone have a mirror of this? the github page got taken down.
 
i cant download this anywhere
Does someone have a mirror of this? the github release page got taken down.
Post automatically merged:

Does someone have a mirror of this? the github page got taken down.
can somebody re up this?
Also looking for a mirror or someone to upload a version of this please?
Sorry, late to the party.

I found it bundled in a tool pack before getting removed later, so it's not straight from the source (here be dragons) but it's out there:

https://github.com/shadow2560/Ultim...3/tools/Hactool_based_programs/hactoolnet.exe

Unfortunately, I couldn't find other (Linux/macOS) versions anywhere.
 

Site & Scene News

Popular threads in this forum