[Scena Switch] Rilasciato NSZ v4.0

Disponibile un nuovo e interessantissimo 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.

Nota: I metodi elencati di seguito richiedono l’installazione di Python 3.6+.

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/

Nota: Per visualizzare tutti i possibili flag e una descrizione su cosa fa ogni flag, digitare nsz --help.

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

Changelog

  • Implementato il supporto Drag & Drop come richiesto in #51
  • Implementata  validazione chiave CRC32 e aggiunto il supporto per le future chiavi master.
    • Corretto il problema del mancato riconoscimento della master_key_0a.
    • Aggiunto CRC32 per master_key_0a.
  • Supporto di Windows 7 per build di Windows.
  • Migliorato il ridimensionamento della dimensione del carattere nella GUI.
  • Imposta la finestra della GUI di NSZ su TopMost (sempre in primo piano) su Windows in modo che il Drag & Drop diventi molto più conveniente.
    • Aggiunta un’impostazione per specificare se la finestra di Kivy deve essere sempre in primo piano o meno.
  • XCI/XCZ infine estrae in cartelle contenenti i file NCA/NCZ invece dei dump della partizione HFS0.
  • Corretto un grave bug di compatibilità XCI implementando il supporto di compressione/decompressione per i file NCA con la prima sezione con un offset più piccolo o più grande di 0x4000. Questo corregge #49
  • Aggiunto il supporto per l’estrazione NSPZ (formato di file legacy nsZip).
  • Resa la GUI un’installazione opzionale.
  • Corretto il problema #59 con la decompressione ncz non funzionante.
  • Importazioni pulite per il pacchetto nsz.
  • Ferma la barra per evitare shell rotte.
  • Aggiunto pywin32 come dipendenza GUI per Windows. Questo corregge #56
  • Corretto BlockDecompressorReader.seek con whence = 2 (ricerca relativa alla fine del file). Questo corregge  #64
  • L’avvio di nsz.py da una diversa directory di lavoro finalmente funziona.
    • Corretto il problema corrente di Azure Pipeline.
  • Aggiunti test di decompressione solida, decompressione a blocchi, compressione solida e compressione a blocchi a azure-pipelines.yml.
  • Reso NSZ nuovo di ritorno con codice di errore 1 se ci sono eccezioni.
  • Corretto deadlock in BlockCompressor.py.
  • Velocità di decompressione dei blocchi notevolmente migliorata memorizzando nella cache il blocco corrente.
  • Aggiunto progetto Python di Visual Studio 2019.
  • Aggiunti titleId e version all’elenco dei file e migliorato notevolmente il suo design.
  • Gli elementi SelectableLabel all’interno dell’elenco dei giochi ora ridimensionano correttamente la propria altezza in base alla larghezza disponibile e alla lunghezza del testo del percorso del file. Questo corregge #50
  • Aggiunto un font open source di supporto multilingue per #61
  • Implementata cartella di input come cartella di output per impostazione predefinita per #61
  • In attesa di Invio prima dell’uscita all’avvio tramite GUI in modo che gli errori e l’output della console possano essere visualizzati prima che si chiuda per #74
  • Corretto il problema con l’installazione fallita su Kubuntu 20.04 e molte altre distribuzioni Linux moderne migliorando install_linux.sh per #75
  • Rimosso il codice che manipolava la dimensione dell’intestazione XCI per nessun motivo che corregge il problema #77
  • Migliorata  la velocità di decompressione del 400% riducendo notevolmente la quantità di chiamate di aggiornamento della barra di stato ad alta intensità di prestazioni.
  • La decisione se l’ultimo blocco debba essere decompresso o copiato ora corrisponde alle specifiche del formato del file confrontando la dimensione del blocco decompresso di quel blocco specifico con la sua dimensione compressa. Questo problema è stato causato dalla mancanza del caso limite (improbabile) in cui l’ultimo blocco può essere più grande quando viene compresso senza superare la dimensione generale del blocco. Questo corregge #79
  • Migliorate le prestazioni di BlockCompression e l’utilizzo complessivo della CPU riducendo la quantità di chiamate di aggiornamento della barra di stato ad alta intensità di prestazioni.
  • Assicurarsi che la riga a destra del cursore sia pulita quando l’applicazione termina.
  • Implementate versioni undupe, undupe-dryrun, undupe-prioritylist, undupe-whitelist e undupe-old-version per rimuovere i giochi duplicati.
  • Migliorato di molto il messaggio di errore prod.keys/keys.txt mancante non mostrando la traccia dello stack e attendendo un input dell’utente prima di uscire.
  • README.md altamente migliorato.
  • Miglioramenti generali della stabilità del sistema per migliorare l’esperienza dell’utente.

Download: NSZ v4.0 [Win64]

Download: Source code NSZ v4.0

Fonte: github.com

(Visited 1 times, 1 visits today)

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *