haccrypto
haccrypto is the Nintendo Switch XTSN crypto for Python, originally from ninfs and now standalone.
Usage
You can import XTSN
class and parse_biskeydump
method from haccrypto.crypto
. XTSN
requires the crypt key and tweak when declaring an instance of it, it will provide you with the encrypt
and decrypt
methods. parse_biskeydump
will provide you with crypt keys and tweaks from a bis key dump.
Example usage
from haccrypto.crypto import parse_biskeydump, XTSN
with open("switch-keys.txt", "r") as o:
bis_keys = parse_biskeydump(o.read())
bis0xtsn = XTSN(bis_keys[0][0], bis_keys[0][1])
zeros = b'\0'*32
enc_zeros = bis0xtsn.encrypt(zeros, 0)
dec_zeros = bis0xtsn.decrypt(enc_zeros, 0)
if zeros == dec_zeros:
print("XTSN ran correctly!")
else:
print("XTSN has made a bad crypto operation.")
Licenses
haccrypto
is under the MIT license.
hac/aes.cpp
and hac/aes.hpp
are from @openluopworld's aes_128 commit b5b7f55
, and uses the MIT License.hac/_crypto.cpp
AES-XTS part by me(@luigoalma), based on @plutooo's crypto module.hac/crypto.py
written by @ihaveamac, falls under MIT license as well.