Disponibile un nuovo aggiornamento per NSZ, lo strumento sviluppato dal developer Nico Bosshard ci permette di comprimere e decomprimere le ROM della console Switch, e senza subire alcuna perdita grazie all’algoritmo di compressione zstd.
I file compressi sono sostanzialmente identici alla controparte, questo significa che non sono realmente un nuovo formato. Il loro unico scopo è quello di avvisare l’utente che contiene file compressi.
Installazione
Per poter utilizzare correttamente lo script, dovrete fornire nella stessa directory del programma il file delle chiavi prod.keys
oppure keys.txt
. Le stesse chiavi si rendono compatibili con l’utility hactool. Se non avete a disposizione queste chiavi potrete scaricarle con Lockpick_RCM.
Build Windows
L’eseguibile per PC Windows non necessita di alcuna libreria, basta caricare le chiavi e cliccare sul file nsz.exe
. Chi preferisce può comunque continuare ad utilizzare gli script Python.
[stextbox id=’info’]Nota: I metodi elencati di seguito richiedono l’installazione di Python 3.6+.[/stextbox]
PIP Package
Il modo più semplice per installare lo script sarebbe quello di utilizzare il seguente comando in un terminale o un prompt dei comandi. Funziona su tutti i sistemi operativi con Python 3.6 e versioni successive.
pip3 install --upgrade nsz
Se sei interessato a installare la GUI per lo script, puoi farlo eseguendo uno dei seguenti comandi. Su Linux si consiglia vivamente di seguire invece i passaggi ‘In esecuzione dal source su Linux’.
Se avete installato Python 3.6 o Python 3.7 digitare:
pip3 install --upgrade nsz[gui]
Se invece avete installato Python 3.8 o una versione successiva, scaricare il file requirements-gui.txt
e digitare:
pip3 install -r requirements-gui.txt
In esecuzione dal source su Linux
Su Linux basta clonare ed eseguire pip3 install -r requirements.txt
per la versione senza GUI e ./install_linux.sh
se si desidera la GUI.
In esecuzione dal source su Windows
Lo script può essere eseguito anche clonando localmente la repository, è necessario installare le dipendenze eseguendo il seguente comando:
pip3 install -r requirements.txt
La GUI è opzionale e richiede moduli aggiuntivi per essere eseguita. Per installare i moduli necessari per eseguire la GUI, eseguire il seguente comando su Python 3.6 e Python 3.7 su Windows:
pip3 install -r requirements-gui.txt
Pochi esempi di utilizzo
- Per comprimere tutti i file in una cartella:
nsz -C /path/to/folder/with/roms/
- Per comprimere tutti i file in una cartella e verificare l’integrità dei file compressi:
nsz --verify -C /path/to/folder/with/roms/
- Per comprimere tutti i file in una cartella con 8 thread e inviare i file risultanti in una nuova directory:
nsz --threads 8 --output /path/to/out/dir/ -C /path/to/folder/with/roms/
- Per comprimere tutti i file in una cartella con livello di compressione di livello 22:
nsz --level 22 -C /path/to/folder/with/roms/
- Per decomprimere tutti i file in una cartella:
nsz -D /path/to/folder/with/roms/
[stextbox id=’info’]Nota: Per visualizzare tutti i possibili flag e una descrizione su cosa fa ogni flag, digitare nsz --help
.[/stextbox]
NSZ
I file NSZ sono sostanzialmente identici ai file NSP. Il loro unico scopo è avvisare l’utente che contiene file NCZ compressi. I file NCZ possono essere combinati con file NCA nello stesso contenitore.
In alternativa a questo strumento, NSC_Builder supporta anche la compressione di NSP in NSZ e la decompressione di NSZ in NSP. NSC_Builder può essere scaricato da: https://github.com/julesontheroad/NSC_BUILDER
XCZ
I file XCZ sono sostanzialmente identici ai file XCI. Il loro unico scopo è avvisare l’utente che contiene file NCZ compressi. I file NCZ possono essere combinati con file NCA nello stesso contenitore.
NCZ
Questi sono file NCA compressi. I file NCA vengono decodificati e quindi compressi mediante zstandard. I primi 0x4000 byte
di un file NCZ sono esattamente gli stessi del file NCA originale (è ancora crittografati). Ciò si applica anche se la prima sezione non inizia con 0x4000
.
A 0x4000
, ci sarà una struttura di intestazione NCZ di dimensioni variabili. Questa intestazione contiene un elenco di sezioni che indicano al decompressore come crittografare nuovamente i dati NCA dopo la decompressione. Può contenere anche un’intestazione di compressione del blocco opzionale che consente l’accesso in lettura casuale.
Tutte le informazioni nell’intestazione possono essere derivate dal Ticket NCA+originale, tuttavia vengono fornite pre-preparate per rendere la decompressione il più semplice possibile per terze parti.
Immediatamente dopo l’intestazione NCZ, il flusso zstandard inizia e termina in EOF. Il flusso viene decompresso per eseguire l’offset 0x4000
. Se viene utilizzata la compressione a blocchi, il flusso viene suddiviso in blocchi indipendenti e può essere decompresso come mostrato in https://github.com/nicoboss/nsz/blob/master/nsz/BlockDecompressorReader.py
Riferimenti
- Pacchetto pip NSZ: https://pypi.org/project/nsz/
- Thread del forum: https://gbatemp.net/threads/nsz-homebrew-compatible-nsp-xci-compressor-decompressor.550556/
Changelog
- Corretta la compatibilità di title-installer con le versioni standard di python-z successive alla versione 0.15.2, è confermato che i file NSZ compressi con le moderne versioni zstd funzionano sugli ultimi Tinfoil, DBI, AtmoXL e TinWoo. Alcuni installatori di titoli abbandonati che non sono stati aggiornati continueranno a non funzionare. Vedere #120 (le versioni di zstandard più recenti della versione 0.15.2 interrompono la compatibilità con tutti i programmi di installazione dei titoli tranne DBI) per maggiori informazioni.
- Corretto un errore nel codice FileExistingChecks causato dalla specifica dell’estensione del file di destinazione errata durante la chiamata a CreateTargetDict. Questo corregge #123 (File sorgente XCZ eliminato prima della decompressione nella stessa cartella di output dell’originale).
- Il file NSP corretto e il file NSZ risultante verranno eliminati utilizzando
--rm-source
quando la compressione solida fallisce. Questo corregge l’errore #124 (i file NSP e NSZ risultanti verranno eliminati utilizzando--rm-source
quando la compressione solida fallisce). - Aggiunto l’hash crc32 di master_key_0e. Grazie a @16BitWonder per averlo aggiunto!
- Implementata l’opzione per abilitare la modalità a lunga distanza zStandard per una compressione ancora migliore come richiesto in #117 (aggiunge il supporto per la modalità a lunga distanza zStandard).
- Seguito il feedback dell’autore di python-zstandard in merito al flushing per correggere tutte le imperfezioni relative al flushing.
- Corretto l’errore “‘Counter’ object has no attribute ‘write'” durante l’utilizzo di
--create
. Questo corregge l’errore #118 (--create
non funziona). - Implementato il supporto per l’espansione della directory per
--create
e migliorata la documentazione. Questo chiude #119 (la sintassi per--create
è stupida e la documentazione pessima). - Chiarita la regola del testo in chiaro dell’estensione di compressione del blocco del formato di file NSZ come discusso in #120.
BiteYourConsole declina ogni responsabilità per quanto riguarda informazioni, software, prodotti e servizi inclusi. Tutte le suddette informazioni sono pubblicate “così come sono” senza garanzia di alcun tipo.
Decliniamo ogni responsabilità per quanto riguarda queste informazioni e per quanto riguarda i software, i prodotti e i servizi inclusi.
BiteYourConsole inoltre non garantisce che questo sistema funzionerà senza incidenti o guasti all’hardware, al software o alla comunicazione.
Gli utenti sono autorizzati ad utilizzare questo programma solo per scopi legali e degni che sono consoni a tutte le leggi, i regolamenti e le consuetudini accettate in Italia e in qualsiasi altra entità giuridica da cui ci si connette a questo sistema.
Download: NSZ v4.2.0 [Win64]
Download: Source code NSZ v4.2.0
Fonte: github.com