wiiudownloader

package module
v0.0.0-...-60ecc29 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 21, 2024 License: GPL-3.0 Imports: 26 Imported by: 0

README

WiiUDownloader

WiiUDownloader is a Golang program that allows you to download Wii U games from Nintendo's servers. It provides a user-friendly GUI built using GTK to browse and download Wii U titles directly to your local storage. Additionally, it supports decryption of downloaded contents for use on your Wii U console.

Features

  • Browse and search for Wii U games, updates, DLC, demos, and more.
  • Download selected titles or queue multiple titles for batch download.
  • Decrypt downloaded contents for use on your Wii U console.
  • Delete encrypted contents after decryption (optional).
  • Filter titles based on name or title ID.
  • Select regions (Japan, USA, and Europe) to filter available titles.

Installation

To install WiiUDownloader, download the appropriate binary for your operating system from the links below:

For Linux, you may need to give execution permission to the downloaded binary:

chmod +x WiiUDownloader-Linux-x86_64.AppImage   # For Linux

Usage

  1. Double-click the downloaded binary to launch WiiUDownloader.
  2. The WiiUDownloader GUI window will appear, showing a list of available Wii U titles.
  3. Use the search bar to filter titles by name or title ID.
  4. Click on the category buttons to filter titles by type (Game, Update, DLC, Demo, All).
  5. Click on the checkboxes to select the desired region(s) for filtering (Japan, USA, Europe).
  6. Click on the "Add to queue" button to add selected titles to the download queue. The button label will change to "Remove from queue" if titles are already in the queue.
  7. Click on the "Download queue" button to choose a location to save the downloaded games. The program will start downloading the queued titles.
  8. If you enable "Decrypt contents," the program will decrypt the downloaded files. You can also choose to delete encrypted contents after decryption (optional).
  9. If you already have downloaded files that aren't decrypted, you can go to Tools > Decrypt Contents and select the folder to decrypt.

Important Notes

  • WiiUDownloader provides access to Nintendo's servers for downloading titles. Please make sure to follow all legal and ethical guidelines when using this program.
  • Downloading and using copyrighted material without proper authorization may violate copyright laws in your country.

License

This program is distributed under the GPLv3 License. For more information, see the LICENSE file.

Acknowledgments

WiiUDownloader uses several open-source libraries and dependencies to provide its functionality:

Documentation

Index

Constants

View Source
const (
	MCP_REGION_JAPAN  = 0x01
	MCP_REGION_USA    = 0x02
	MCP_REGION_EUROPE = 0x04
	MCP_REGION_CHINA  = 0x10
	MCP_REGION_KOREA  = 0x20
	MCP_REGION_TAIWAN = 0x40
)
View Source
const (
	TITLE_KEY_mypass = iota
	TITLE_KEY_nintendo
	TITLE_KEY_test
	TITLE_KEY_1234567890
	TITLE_KEY_Lucy131211
	TITLE_KEY_fbf10
	TITLE_KEY_5678
	TITLE_KEY_1234
	TITLE_KEY_
	TITLE_KEY_MAGIC
)
View Source
const (
	TITLE_CATEGORY_GAME = iota
	TITLE_CATEGORY_UPDATE
	TITLE_CATEGORY_DLC
	TITLE_CATEGORY_DEMO
	TITLE_CATEGORY_ALL
	TITLE_CATEGORY_DISC
)
View Source
const (
	TID_HIGH_GAME            = 0x00050000
	TID_HIGH_DEMO            = 0x00050002
	TID_HIGH_SYSTEM_APP      = 0x00050010
	TID_HIGH_SYSTEM_DATA     = 0x0005001B
	TID_HIGH_SYSTEM_APPLET   = 0x00050030
	TID_HIGH_VWII_IOS        = 0x00000007
	TID_HIGH_VWII_SYSTEM_APP = 0x00070002
	TID_HIGH_VWII_SYSTEM     = 0x00070008
	TID_HIGH_DLC             = 0x0005000C
	TID_HIGH_UPDATE          = 0x0005000E
)
View Source
const (
	KEYGEN_SECRET = "fd040105060b111c2d49"
)

Variables

This section is empty.

Functions

func DecryptContents

func DecryptContents(path string, progress ProgressReporter, deleteEncryptedContents bool) error

func DownloadTitle

func DownloadTitle(cancelCtx context.Context, titleID, outputDirectory string, doDecryption bool, progressReporter ProgressReporter, deleteEncryptedContents bool, logger *Logger, ariaSessionPath string) error

func GenerateCert

func GenerateCert(tmdData []byte, contentCount uint16, progressReporter ProgressReporter, cancelCtx context.Context, buffer []byte, ariaSessionPath string) (bytes.Buffer, error)

func GenerateKey

func GenerateKey(tid string) ([]byte, error)

func GenerateTicket

func GenerateTicket(path string, titleID uint64, titleKey []byte, titleVersion uint16) error

func GetCategoryFromFormattedCategory

func GetCategoryFromFormattedCategory(formattedCategory string) uint8

func GetFormattedKind

func GetFormattedKind(titleID uint64) string

func GetFormattedRegion

func GetFormattedRegion(region uint8) string

func PKCS7Padding

func PKCS7Padding(data []byte, blockSize int) []byte

Types

type Aria2gocNotifier

type Aria2gocNotifier struct {
	// contains filtered or unexported fields
}

func (Aria2gocNotifier) OnComplete

func (n Aria2gocNotifier) OnComplete(gid string)

func (Aria2gocNotifier) OnError

func (n Aria2gocNotifier) OnError(gid string)

func (Aria2gocNotifier) OnPause

func (n Aria2gocNotifier) OnPause(gid string)

func (Aria2gocNotifier) OnStart

func (n Aria2gocNotifier) OnStart(gid string)

func (Aria2gocNotifier) OnStop

func (n Aria2gocNotifier) OnStop(gid string)

type LogLevel

type LogLevel int
const (
	Info LogLevel = iota
	Warning
	Error
	Fatal
)

type Logger

type Logger struct {
	// contains filtered or unexported fields
}

func NewLogger

func NewLogger(logFilePath string) (*Logger, error)

func (*Logger) Error

func (l *Logger) Error(format string, v ...interface{})

func (*Logger) Fatal

func (l *Logger) Fatal(format string, v ...interface{})

func (*Logger) Info

func (l *Logger) Info(format string, v ...interface{})

func (*Logger) Warning

func (l *Logger) Warning(format string, v ...interface{})

type ProgressReporter

type ProgressReporter interface {
	SetGameTitle(title string)
	UpdateDownloadProgress(downloaded, speed int64, filePath string)
	UpdateDecryptionProgress(progress float64)
	Cancelled() bool
	SetCancelled()
	SetDownloadSize(size int64)
	SetTotalDownloaded(total int64)
	AddToTotalDownloaded(toAdd int64)
}

type TitleEntry

type TitleEntry struct {
	Name    string
	TitleID uint64
	Region  uint8
	// contains filtered or unexported fields
}

func GetTitleEntries

func GetTitleEntries(category uint8) []TitleEntry

Directories

Path Synopsis
cmd

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL