Home Homebrew Rilasciato libWiiPy v0.6.0: La libreria Python per la gestione completa dei...

[Scena Wii] Rilasciato libWiiPy v0.6.0: La libreria Python per la gestione completa dei file Wii ora presenta il supporto per i file Dev WAD

83
0

Pubblicato un nuovo aggiornamento per LibWiiPy, la moderna libreria scritta in Python 3 pensata per gestire vari file e formati legati alla console Wii.

Creata con l’obiettivo di semplificare il lavoro degli sviluppatori, questa libreria offre una soluzione completa e facile da usare per la manipolazione dei dati relativi alla Wii, fornendo una gamma di funzionalità utili a chi sviluppa applicazioni homebrew o tool per la console.

Questo nuovo aggiornamento introduce diverse novità e miglioramenti, come per il Title ID di un TMD e di un Ticket che non deve necessariamente corrispondere ai dati per poter essere caricato correttamente, sebbene tale configurazione resti tecnicamente non valida.

Inoltre, è stato introdotto un parametro opzionale che permette di specificare un endpoint esterno per il download dei file dal Nintendo Update Server (NUS), ignorando quello predefinito, sebbene attualmente non venga effettuata alcuna validazione sugli URL forniti.

La classe TMD ha ricevuto nuove funzioni per ottenere la dimensione del contenuto elencato nei suoi record, con la possibilità di includere o meno i contenuti condivisi.

Inoltre, il Title ID di un Ticket ora viene memorizzato come raw bytes anziché ASCII bytes, un formato più appropriato, anche se questo potrebbe causare problemi a chi accede direttamente alla proprietà.

Per quanto riguarda l’EmuNAND, sono stati introdotti nuovi metodi per ottenere un elenco di tutti i titoli installati e per recuperare i relativi TMD e Ticket.

Inoltre, i Title object creati da componenti individuali anziché da un file WAD ora vengono installati correttamente tramite la funzione install_title().

L’aggiornamento introduce anche nuovi moduli. Il modulo cert aggiunge il supporto alla gestione dei certificati Wii, includendo classi per la convalida di certificati CA, TMD e Ticket.

Il modulo lz77 introduce funzioni per comprimere e decomprimere file con l’algoritmo di compressione LZ77 utilizzato dalla Wii, sebbene la compressione su file di grandi dimensioni risulti ancora piuttosto lenta.

Sono state inoltre aggiunte due nuove classi. La classe IMETHeader permette di gestire l’intestazione IMET, che precede i dati di un banner in un canale Wii e memorizza il nome del canale per ogni regione, oltre alle dimensioni dei file del banner.

Attualmente, questa classe si limita all’analisi dei dati, ma in futuro verrà ampliata per supportare la creazione di banner. La classe IMD5Header, invece, permette di memorizzare le informazioni contenute in un’intestazione IMD5, sebbene al momento sia solo una classe dati in attesa di un’estensione per la gestione dei banner.

Infine, la documentazione API è stata completamente rinnovata mentre la libreria si rende disponibile come sempre su PyPI per una più facile installazione.

Caratteristiche

La libreria è ispirata a libWiiSharp, sviluppata originariamente da Leathl e mantenuta ora da @TheShadowEevee, ma con un approccio completamente nuovo. Tra le principali funzionalità attualmente disponibili in libWiiPy troviamo:

  • Analisi/modifica TMD e Ticket ( .tmd.tik).
  • Analisi/modifica del titolo, inclusa la crittografia/decrittografia del contenuto.
  • Analisi/modifica del file WAD ( .wad).
  • Scaricare titoli dalla NUS.
  • Imballaggio e disimballaggio degli archivi U8 ( .app.arc).
  • Decompressione dei file ASH ( .ashsia le varianti standard che quelle presenti in My Pokémon Ranch).
  • Patch IOS.
  • Funzionalità relative alla NAND:
    • Gestione del titolo EmuNAND (attualmente richiede un EmuNAND esistente).
    • content.mapanalisi/modifica.
    • uid.sysanalisi/modifica.
  • Varie funzionalità varie utilizzate per rendere possibili le altre funzionalità principali.

Per una panoramica più dettagliata di ciò che è disponibile in libWiiPy, consultare la documentazione API .

Con queste caratteristiche, libWiiPy si presenta come una soluzione completa per chiunque voglia sviluppare strumenti legati alla Wii utilizzando Python, risparmiando tempo e sforzi nel dover combinare più librerie.

Installazione e utilizzo

L’installazione di libWiiPy è molto semplice e può essere eseguita direttamente tramite PyPI, la repository ufficiale per i pacchetti Python: pip install -U libWiiPy

Tuttavia, poiché la libreria è ancora in una fase di sviluppo iniziale, è consigliabile installare la versione più recente direttamente dalla repository GitHub, in modo da ottenere tutte le nuove funzionalità in tempo reale: pip install -U git+https://github.com/NinjaCheetah/libWiiPy

Le istruzioni dettagliate su come iniziare a utilizzare libWiiPy, compresi i passaggi per la compilazione locale, sono disponibili nella documentazione ufficiale.

Changelog

Modifiche al Title generale

  • Il Title ID di un TMD e di un Ticket non deve più corrispondere ai dati per poter essere caricato con successo in un titolo. Sebbene questa configurazione resti tecnicamente non valida, il caricamento di questi dati potrebbe essere necessario per correggerla.
  • Durante il download di qualsiasi file dal Nintendo Update Server (NUS), è ora possibile specificare un valore per il parametro endpoint_override, consentendo l’uso di un endpoint esterno. Se impostato, questo valore farà ignorare l’endpoint predefinito della Wii U. Attualmente, tuttavia, non viene effettuata alcuna validazione sugli URL forniti per l’override.
  • Aggiunte le funzioni get_content_size() e get_content_size_blocks() alla classe TMD, permettendo di ottenere la dimensione del contenuto elencato nei suoi record. Come per i metodi correlati alla dimensione di un titolo, queste funzioni accettano il parametro absolute, che determina se includere o meno i contenuti condivisi nel calcolo totale.
  • La proprietà title_id di un Ticket verrà ora memorizzata come raw bytes invece di ASCII bytes, un formato più appropriato. Questo cambiamento potrebbe causare problemi se la proprietà viene letta direttamente, ma non avrà alcun effetto sulle funzioni della libreria.

EmuNAND

  • Aggiunta la funzione get_installed_titles() per ottenere un indice di tutti i titoli attualmente installati su un’EmuNAND.
  • Aggiunte le funzioni get_title_tmd() e get_title_ticket() per ottenere rispettivamente il TMD e il Ticket di un titolo installato.
  • Gli oggetti Title passati alla funzione install_title() verranno ora installati correttamente anche se creati da componenti individuali invece che direttamente da un file WAD.

Nuovo modulo: cert

  • Contiene una nuova classe Certificate utilizzata per memorizzare i vari certificati usati dalla Wii per la validazione dei contenuti.
  • Contiene una nuova classe CertificateChain utilizzata per memorizzare l’intera catena di certificati necessaria per validare un titolo Wii completo.
  • Aggiunta la funzione validate_ca_cert() per la validazione di un certificato CA retail o di sviluppo.
  • Aggiunta la funzione validate_cert_sig() per validare qualsiasi certificato TMD o Ticket utilizzando un certificato CA.
  • Aggiunte le funzioni validate_tmd_sig() e validate_ticket_sig() per validare un TMD o un Ticket utilizzando i certificati appropriati.

Nuovo modulo: lz77

  • Aggiunta la funzione decompress_lz77() per decomprimere qualsiasi file compresso utilizzando la variante dell’algoritmo LZ77 adottata dalla Wii.
  • Aggiunta la funzione compress_lz77() per comprimere qualsiasi file utilizzando la variante LZ77 della Wii. Supporta due livelli di compressione, indicati come 1 o 2, con 1 come valore predefinito. Attualmente, questa funzione è molto lenta se eseguita su file più grandi di qualche centinaio di kilobyte.

Nuova classe: IMETHeader

  • Nuova classe per la gestione dell’header IMET, che precede i dati di un banner in un canale Wii. Questo header memorizza il nome del canale per ogni regione supportata, oltre alle dimensioni dei file del banner.
  • Attualmente, questa classe è utilizzata principalmente per il parsing, ma in futuro, con un maggiore supporto ai banner, sarà possibile sfruttarla per funzionalità legate alla creazione dei banner.
  • Fornisce i metodi get_channel_names() e set_channel_names() per ottenere o impostare il nome del canale per le regioni specificate.

Nuova classe: IMD5Header

  • Nuova classe per memorizzare le informazioni contenute nell’intestazione di un IMD5. Al momento si tratta solo di una classe di dati, poiché la funzionalità di parsing del banner necessaria per estenderla non esiste ancora.

L’aggiornamento è disponibile anche su PyPI mentre la documentazione API viene aggiornata automaticamente dalle docstring.

Download: libWiiPy v0.6.0 py3-none-any.whl

Download: libwiipy v0.6.0.tar.gz

Download: Source code libWiiPy v0.6.0

Fonte: github.com

LASCIA UN COMMENTO

Per favore inserisci il tuo commento!
Per favore inserisci il tuo nome qui

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