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
Sostituito PyInstaller con WinPython per la versione portatile di Windows.
- Ho passato molto tempo a eliminare ogni parte della libreria standard python non richiesta per risparmiare spazio di archiviazione e accelerare i tempi di estrazione avendo meno file da estrarre.
- Ciò è stato fatto perché PyInstaller ha attivato rilevamenti di falsi positivi su Windows Defender come riportato in #82.
- Testato su Windows 7, Windows 10 e Windows Server 2019.
Questa versione interessa SOLO la versione portatile di Windows. La versione PIP non è stata aggiornata poiché solo la distribuzione della build di Windows Portable è interessata da questa modifica.
Download: NSZ v4.0.1 [Win64]
Download: Source code NSZ v4.0.1
Fonte: github.com