Home Homebrew Rilasciato NSZ v5.0.0: Nuova compressione più veloce con PyCryptodome, fix XCZ/NCZ...

[Scena Switch] Rilasciato NSZ v5.0.0: Nuova compressione più veloce con PyCryptodome, fix XCZ/NCZ e supporto Docker

107
0

Disponibile un nuovo importante aggiornamento per NSZ, il noto strumento open source sviluppato da Nico Bosshard dedicato alla compressione e decompressione dei giochi Nintendo Switch nei formati NSP, XCI e derivati.

 

La versione 5.0.0 di NSZ arriva dopo ben 2 anni e 8 mesi di sviluppo, pari a 958 giorni dall’ultima release ufficiale, introducendo numerosi miglioramenti tecnici, ottimizzazioni e correzioni di bug che rendono il programma più veloce, stabile e affidabile.

NSZ utilizza l’algoritmo di compressione zstd, permettendo di ridurre le dimensioni dei file senza perdita di dati.

I pacchetti compressi rimangono sostanzialmente identici agli originali e non rappresentano un nuovo formato proprietario, ma semplicemente un metodo per indicare che il contenuto interno è stato compresso. Questo permette di risparmiare spazio di archiviazione mantenendo la piena compatibilità con gli strumenti supportati.

Uno dei cambiamenti più importanti introdotti in questa nuova versione riguarda il sistema di crittografia. Grazie all’utilizzo dell’implementazione AES di PyCryptodome, NSZ ora risulta sensibilmente più veloce e richiede meno risorse durante le operazioni di compressione e decompressione.

Inoltre sono stati risolti alcuni problemi critici che, in rare circostanze, potevano generare file corrotti durante la decompressione dei blocchi o dei pacchetti XCZ. Gli stessi file NSZ e XCZ interessati non risultavano danneggiati e possono essere correttamente estratti utilizzando NSZ v5.0.0.

Il nuovo aggiornamento introduce anche numerose modifiche interne e miglioramenti alla compatibilità.

Sono stati corretti problemi nella gestione delle chiavi, aggiornato il supporto alle nuove master key, migliorata la gestione dei file NSP e XCZ, aggiunto il supporto ai pacchetti senza ticket e ai contenuti multipli senza ticket, oltre a miglioramenti nella gestione dei file di automazione.

Tra gli interventi più rilevanti troviamo anche una migliore gestione dell’allineamento degli header NSP e PFS0, il ripristino della compatibilità No-Intro per l’opzione --fix-padding, un output più leggibile per gli strumenti automatici, nuove opzioni per specificare file di chiavi personalizzati e il supporto alla directory di configurazione XDG su sistemi Linux.

NSZ v5.0.0 migliora inoltre la compatibilità multipiattaforma grazie all’introduzione del supporto ai container Docker con architettura multipla, numerosi aggiornamenti alla libreria utilizzabile dagli sviluppatori e una serie di ottimizzazioni al codice interno.

Sono stati sistemati anche diversi crash, problemi della pipeline di compilazione e varie anomalie individuate durante i test automatici.

L’aggiornamento porta infine miglioramenti anche all’interfaccia grafica, con una gestione DPI più precisa e nuove impostazioni dedicate al ridimensionamento dello schermo, rendendo l’utilizzo del programma più comodo soprattutto su monitor ad alta risoluzione.

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

NSZ v5.0.0 è la prima release ufficiale di NSZ dopo 2 anni e 8 mesi (958 giorni). Nel frattempo il progetto è cambiato e migliorato molto. Grazie all’utilizzo dell’implementazione AES di PyCryptodome, NSZ è diventato molto più veloce e meno impegnativo per le risorse. Oltre a numerose nuove funzionalità e miglioramenti, sono stati risolti alcuni importanti bug che in rare occasioni potevano causare dati corrotti durante la decompressione dei blocchi e la decompressione XCZ. Il file NSZ/XCZ stesso non viene compromesso e può essere correttamente decompresso utilizzando NSZ v5.0.0. Ci scusiamo per il lungo tempo trascorso dall’ultima release, ma ci saranno aggiornamenti più frequenti in futuro.

Cosa è cambiato

  • Controllo del valore None durante la chiamata a ExtractTitleIDAndVersion in GameList di @Avasam in #168
  • Risolto il problema che interrompeva la pipeline con gli errori VerificationErrors di @einsweniger in #170
  • Aggiunto l’hash della chiave master_key_11 di @wzsx150 in #177
  • Aggiornato Keys.py di @dnsBlah in #185
  • Utilizzo di stringhe raw per le espressioni regolari di @drizzt in #184
  • Risolto il problema della lettura delle dimensioni in BlockDecompressorReader e aggiunto IndependentNczDecompressorConcise di @scturtle in #191
  • Disabilitato il messaggio “press enter” quando non viene utilizzato un terminale di @andrewrabert in #192
  • Aggiunto il supporto Ticketless, il supporto multicontenuto Ticketless e i file di script per l’automazione di @ElektroStudios in #196
  • Evitata l’aggiunta di padding agli header PFS0 che dispongono già del padding necessario di @connesc in #197
  • Aggiornato Keys.py di @dnsBlah in #199
  • Ripristinata la compatibilità No-intro per l’opzione --fix-padding di @connesc in #201
  • Aggiunto output leggibile dalle macchine e suggerimenti per correggere la gestione dell’avanzamento di @Clearmist in #202
  • Consentito l’allineamento dell’header NSP a 16 byte di @ZeppLu in #209
  • Risolto il problema della decompressione dei blocchi NCZ quando BlockSize è un multiplo della dimensione decompressa di @ITotalJustice in #211
  • Miglioramenti alla libreria di @a1ex4 in #212
  • Risolto un errore di battitura nella funzione undupe che causava problemi con le liste prioritarie di @Xefir in #213
  • Risolto l’utilizzo del titolo di @drizzt in #215
  • Risolto il problema della sovrascrittura delle partizioni durante la decompressione XCZ di @Furoryan in #217
  • Aggiunta la funzionalità keys con supporto alla ricerca della directory di configurazione XDG di @mateconpizza in #226
  • Aggiunto il supporto alla containerizzazione Docker con architettura multipla di @jparrill in #216
  • Aggiunta l’opzione --keys per specificare una posizione personalizzata del file delle chiavi di @luketanti in #221
  • Aggiunto il supporto sia alle estensioni file .nsp che .nsz per Fs.Nsp di @seiya-git in #230
  • Correzione bug e aggiornamento delle master key di @luketanti in #227
  • Aggiunto l’argomento for_nutPrint al metodo parse per una gestione più flessibile dell’help di @seiya-git in #231
  • Ottimizzato aes128.py utilizzando l’implementazione AES di PyCryptodome di @seiya-git in #232
  • Aggiunte ulteriori opzioni di compilazione e correzioni di bug di @Clearmist in #234
  • Correzioni dei crash, miglioramenti alla toolchain e pulizia del codice di @Brycey92 in #235
  • Miglioramenti per utilizzare NSZ come libreria di @a1ex4 in #236
  • Aggiunti ulteriori test alla pipeline Azure di @Brycey92 in #238
  • Migliorato il ridimensionamento DPI, risolti numerosi problemi relativi al DPI e aggiunte nuove impostazioni dedicate al ridimensionamento dello schermo di @nicoboss.

NSZ v5.0.0

Linux ARM64

Linux x64

macOS ARM64 (Apple Silicon)

Windows ARM64

Windows x64

Codice sorgente

Alcune parti di questo articolo sono state generate con l’aiuto dell’intelligenza artificiale.

🔥 Prodotti in promozione e articoli più venduti: Nintendo Switch

Vedi altri prodotti Nintendo Switch

Questo articolo contiene link affiliati a Amazon. Se acquisti tramite questi link, potrei guadagnare una commissione senza costi aggiuntivi per te.

Ultimo aggiornamento 2026-08-20 / Link di affiliazione / Immagini da Amazon Product Advertising API

LASCIA UN COMMENTO

Per favore inserisci il tuo commento!
Per favore inserisci il tuo nome qui
Captcha verification failed!
Punteggio utente captcha non riuscito. Ci contatti per favore!

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.