Project Name | Stars | Downloads | Repos Using This | Packages Using This | Most Recent Commit | Total Releases | Latest Release | Open Issues | License | Language |
---|---|---|---|---|---|---|---|---|---|---|
Ninfs | 324 | 10 months ago | 13 | March 25, 2022 | 15 | mit | Python | |||
FUSE filesystem Python scripts for Nintendo console files | ||||||||||
Kezplez Nx | 103 | 3 years ago | other | C | ||||||
The "easiest" way to get all 70+ Nintendo Switch keys to use with hactool! | ||||||||||
Switchfs | 46 | 4 years ago | mit | Python | ||||||
FUSE (Filesystem in Userspace) scripts for Nintendo Switch files | ||||||||||
Fuse Nx | 29 | 4 months ago | gpl-3.0 | C++ | ||||||
FUSE driver (and more) for various Nintendo Switch file formats | ||||||||||
Gcfuse | 9 | 3 years ago | gpl-2.0 | C | ||||||
Mount Nintendo GameCube disc images using FUSE | ||||||||||
Romdump | 8 | 5 years ago | gpl-2.0 | C | ||||||
fusee payload that dumps the RAW FUSE, KFUSE and BOOTROM bytes from a Nintendo Switch. | ||||||||||
Ndsfs | 8 | 8 years ago | C | |||||||
A FUSE application to mount Nintendo DS roms | ||||||||||
Rebuild Title Database | 5 | a year ago | 1 | mit | Python | |||||
Rebuilds the contents of title.db for Nintendo 3DS | ||||||||||
Dopus | 2 | 5 years ago | gpl-3.0 | C | ||||||
NSP/XCI manager for the Nintendo Switch |
ninfs (formerly fuse-3ds) is a FUSE program to extract data from Nintendo game consoles. It works by presenting a virtual filesystem with the contents of your games, NAND, or SD card contents, and you can browse and copy out just the files that you need.
Windows, macOS, and Linux are supported.
For 3DS types, The ARM9 bootROM is required. You can dump it using boot9strap, which can be set up by 3DS Hacks Guide. To dump the bootROM, hold START+SELECT+X when you boot up your 3DS. It is checked in order of:
--boot9
argument (if set)BOOT9_PATH
environment variable (if set)%APPDATA%\3ds\boot9.bin
(Windows-specific)~/Library/Application Support/3ds/boot9.bin
(macOS-specific)~/.3ds/boot9.bin
~/3ds/boot9.bin
boot9_prot.bin
can also be used in all of these locations.
"~
" means the user's home directory. "~/3ds
" would mean /Users/username/3ds
on macOS and C:\Users\username\3ds
on Windows.
CDN, CIA, and NCCH mounting may need SeedDB for mounting NCCH containers of newer games (2015+) that use seeds.
SeedDB is checked in order of:
--seeddb
argument (if set)SEEDDB_PATH
environment variable (if set)%APPDATA%\3ds\seeddb.bin
(Windows-specific)~/Library/Application Support/3ds/seeddb.bin
(macOS-specific)~/.3ds/seeddb.bin
~/3ds/seeddb.bin
Python 3.6.1+ and pycryptodomex are required. appJar is required for the GUI.
Windows 7 or later is required.
A standalone executable with a GUI is available for use. You can get a single executable for download from GitHub or the GBAtemp Download Center A window will appear allowing you to choose mount options easily.
Python does not have to be installed, but WinFsp is still required.
python
or python3
must be used, not py -3
.py -3 -m pip install --upgrade https://github.com/ihaveamac/ninfs/archive/master.zip
.
py -3 -m pip install --upgrade https://github.com/ihaveamac/ninfs/archive/master.zip#egg=ninfs[gui]
A standalone application bundle with a GUI is available for use. OS X 10.9.5 Mavericks or later is required. You can download the DMG from GitHub.
Python does not have to be installed, but FUSE for macOS is still required.
Versions of macOS supported by Apple are highly recommended. Mac OS X Snow Leopard is the lowest version that should work.
python3 -m pip install --upgrade https://github.com/ihaveamac/ninfs/archive/master.zip
.
python3 -m pip install --upgrade https://github.com/ihaveamac/ninfs/archive/master.zip#egg=ninfs[gui]
g++
and python3-dev
are required for the C extensions. To build and install as a package, python3-setuptools
and python3-wheel
are required.python3 -m pip install --upgrade --user https://github.com/ihaveamac/ninfs/archive/master.zip
.
--user
is not needed if you are using a virtual environment.python3 -m pip install --upgrade --user https://github.com/ihaveamac/ninfs/archive/master.zip#egg=ninfs[gui]
python3-tk
.python3 -m ninfs --install-desktop-entry
. If you want to install to a location other than the default ($XDG_DATA_HOME
), you can add another argument with a path like /usr/local/share
.A GUI can be used, if ninfs was installed with GUI support, by specifying the type to be gui
(e.g. Windows: py -3 -mninfs gui
, *nix: python3 -mninfs gui
). The GUI controls mounting and unmounting.
Run a mount script by using "mount_<type>
" (e.g. mount_cci game.3ds mountpoint
). Use -h
to view arguments for a script.
If it doesn't work, the other way is to use <python-cmd> -mninfs <type>
(e.g. Windows: py -3 -mninfs cci game.3ds mountpoint
, *nix: python3 -mninfs cci game.3ds mountpoint
).
Windows users can use a drive letter like F:
as a mountpoint, or use *
and a drive letter will be automatically chosen.
diskutil unmount /path/to/mount
fusermount -u /path/to/mount
mount_cci game.3ds mountpoint
mount_cdn cdn_directory mountpoint
mount_cdn --dec-key 3E3E6769742E696F2F76416A65423C3C cdn_directory mountpoint
mount_cia game.cia mountpoint
mount_exefs exefs.bin mountpoint
essential.exefs
embedded:mount_nandctr nand.bin mountpoint
mount_nandctr --otp otp.bin nand.bin mountpoint
mount_nandctr --otp otp.bin --cid nand_cid.bin nand.bin mountpoint
mount_nandctr --otp otp.bin --cid 7468616E6B7334636865636B696E6721 nand.bin mountpoint
mount_nandtwl --console-id 4E696E74656E646F nand_dsi.bin mountpoint
mount_nandtwl --console-id 4E696E74656E646F --cid 576879446F657344536945786973743F nand_dsi.bin mountpoint
mount_nandtwl --console-id ConsoleID.bin --cid CID.bin nand_dsi.bin mountpoint
mount_nandhac --keys prod.keys rawnand.bin mountpoint
mount_nandhac --keys prod.keys -S rawnand.bin.00 mountpoint
mount_ncch content.cxi mountpoint
mount_romfs romfs.bin mountpoint
Nintendo 3DS
directory from an SD card:mount_sd --movable movable.sed "/path/to/Nintendo 3DS" mountpoint
Nintendo 3DS
directory from an SD card with an SD key hexstring:mount_sd --sd-key 504C415900000000504F4B454D4F4E21 "/path/to/Nintendo 3DS" mountpoint
mount_nds
also works):mount_srl game.nds
mount_threedsx boot.3dsx mountpoint
ninfs
is under the MIT license.
fuse.py
is under the ISC license (taken from setup.py
).hac/aes.cpp
and hac/aes.hpp
are from @openluopworld's aes_128 commit b5b7f55
, and uses the MIT License.hac/_crypto.cpp
AES-XTS part by @luigoalma, based on @plutooo's crypto module; Python module implementation initially by me(@ihaveamac).Special thanks to @Stary2001 for help with NAND crypto (especially TWL), and @d0k3 for SD crypto.
OTP code is from Stary2001/3ds_tools, and is under the MIT license.