Il developer SciresM ha pubblicato un nuovo aggiornamento per hactool, lo strumento ci permette di decrittografare ed estrarre formati di file comuni per Nintendo Switch.
L’applicazione a riga di comando supporta la maggior parte dei formati della console ibrida Nintendo Switch (NCA, XCI, HFS0, PFS0, RomFS, NPDM, Package1, Package2, INI1 e KIP1).
Le chiavi possono essere elaborati al momento della compilazione o caricati esternamente da file (da riga di comando digitare -k/--keyset
).
I file keyset, sono dei semplici file di testo contenenti una chiave per riga, nel formato key_name = HEXADECIMALKEY
. Il case non dovrebbe avere importanza, né dovrebbe contenere spazi bianchi.
Inoltre, se l’opzione -k/--keyset
non viene impostata, hactool andrà a controllare la presenza di un file keyset in $HOME/.switch/prod.keys
(o $HOME/.switch/dev.keys
se viene impostato -d/--dev
). Se presente, questo file verrà automaticamente caricato.
Formati supportati
- NCA
- XCI
- HFS0
- PFS0
- RomFS
- NPDM
- Package1 (PK11)
- Package2 (PK21)
- INI1
- KIP1
- NAX0
- NSO0
Changelog v1.0.1
- Corruzione della memoria durante l’analisi di alcuni NPDM.
- Modalità AES non valida utilizzata per la decrittografia dei titlekey.
- Validità della sezione BKTR deselezionata prima di accedere ai dati decrittografati.
- Edge case nel layout della sottosezione BKTR causerebbe una ricorsione infinita.
Changelog v1.1.0
I dati chiave possono essere elaborati al momento della compilazione o caricati da un file di chiave esterno. Inoltre, una chiave di avvio sicura + chiave TSEC + coppia di file boot0 può essere inoltrata con un file chiave esterno per ricavare tutte le chiavi che è possibile conoscere in base alle informazioni disponibili.
Nuove caratteristiche
- Aggiunto supporto per NAX0 (Nintendo Aes Xts File (sistema), contenuto della scheda SD).
- Aggiunto il supporto per la derivazione della chiave usando EKS (keyblobs) e la chiave sbk/tsec.
- Aggiunto supporto per i contenuti “NCA2” precedenti alla versione 1.0.0.
Bug corretti
- BKTR non supportava il bucket case non singolo, che influenzava i giochi con enormi patch (Splatoon 2, forse altri).
- Troppi quelli piccoli da contare 🙂
Changelog v1.2.0
Nuove caratteristiche:
- Aggiunto il supporto per la lettura di file package2 come testo normale.
- Aggiunta la conversione NPDM -> JSON.
- KIP1 -> Aggiunta la conversione JSON.
- Keygen ora può essere eseguito senza passare un file BOOT0.
- Aggiunto il supporto per i nuovi file XCI con una partizione del logo.
- Aggiunto il supporto per i file NCA0 precedenti alla versione 1.0.0.
- Aggiunto tramite comando
--uncompressed=
il supporto per decomprimere file NSO0 e KIP1. - Ora è possibile caricare Titlekeys da un file esterno rinominato in
title.keys
, che si trova nella stessa directory diprod.keys
odev.keys
. I Titlekeys devono essere memorizzati nel formatohexadecimal_rights_id = hexadecimal_title_key
. - Vari [WARN] sono stati aggiunti quando viene rilevato un comportamento strano.
Bug corretti:
- Decifratura NAX0 fallita durante la lettura degli offset non allineati.
- Le NCA che utilizzano la crittografia AES-XTS non sono più completamente danneggiate.
- Corretto il supporto per i file NCA2 precedenti alla versione 1.0.0.
- Getopt non si rompe più su arm-linux (grazie @jakibaki!).
- Troppi piccoli bug da contare 🙂
Ultime modifiche:
- “encrypted_header_key” è stato modificato nel keyset in “header_key_source”, per essere coerente con altri nomi di chiavi.
Changelog v1.2.1
- Il supporto dell’estrazione dell’aggiornamento non dovrebbe più causare errori.
- L’output NPDM JSON è stato convertito nel nuovo formato.
- I dati chiave 6.x non saranno più chiamati “Unknown”.
Download: hactool v1.2.1
Download: Source code hactool v1.2.1