Releases: borntohonk/hactool
Release list
hactool-1.5.4 - keygen command refactor (23.0.0 supported)
revert cross-compile of windows binary back to windows os compiled
static links libcapstone
do both x86_64 and arm64 versions of macos
retargets keygen away from old stale boot0 input path to instead take an input folder containing firmware ncas - producing the keyset of the firmware files input
hactool-1.5.3 (23.0.0 support)
adds support for 23.0.0 firmware
adds support for zbic compressed exefs, also outputs compression status, and which compression algorithm (if compressed) on inspecting .nso0 files
re-release of 1.5.2 latest master
capstone 5 for linux
minor tweaks and fixes
need to do for 1.5.3:
zbic decompression
hactool-1.5.1
just embedding key sources for _16 (22.0.0) keyset
hactool-1.5.0 (ai vibe-coded edition)
Add support for newer bktr formats: credits claude 4.5
edit:
Add support for sorting and organizing firmware files (-t switchfs --outdir=out) - ( used https://github.com/borntohonk/Switch-Ghidra-Guides/blob/master/scripts/organize_firmware_files.py as reference )
Improve upon -t keygen ( used https://github.com/borntohonk/Switch-Ghidra-Guides/blob/master/scripts/crypto.py as reference )
binaries replaced; will become 1.5.1 after completing next implementations;
current todo:
- Add in more api calls to pki.c, ( used as reference https://github.com/borntohonk/Switch-Ghidra-Guides/blob/master/scripts/crypto.py )
- Allow the nca parser to use the pki.c api calls ( used as reference https://github.com/borntohonk/Switch-Ghidra-Guides/blob/master/scripts/nca.py )
upon evaluation, the steps above already are built into hactool if a keyset is initialized, and my changes to how keygen works accomplishes this.
After most of my other stuff is implemented into hactool:
-
Add functionality to the way hactool handles package1/package2 ( used as reference github.com/borntohonk/Switch-Ghidra-Guides/blob/master/scripts/extract_packages.py ) (this step involves just what extra api commands for data to add - to be able to call for them
-
implement as needed, using this as reference https://github.com/borntohonk/Switch-Ghidra-Guides/blob/master/scripts/process_firmware.py ( this step just combines switchfs and pkg21/pk11 commands, and extracts the specific files from the firmware input
-
proceed to implement, using this as reference https://github.com/borntohonk/Switch-Ghidra-Guides/blob/master/scripts/find_patterns.py
-
Consider adding capstone as requirement, evaluate as needed, since macos builds might not support that.
-
after doing all related to firmware processing, add a failsafe to extract the new master_kek_source, and various other keys, from package1 / package2