|Ian Burgwin a77386dd87||4 days ago|
|ninfs||4 days ago|
|scripts||5 months ago|
|.gitignore||6 months ago|
|BUILDING.md||5 months ago|
|LICENSE.md||1 year ago|
|MANIFEST.in||6 months ago|
|README.md||1 week ago|
|pyi-app.spec||6 months ago|
|setup.py||4 days ago|
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:
--boot9argument (if set)
BOOT9_PATHenvironment variable (if set)
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:
--seeddbargument (if set)
SEEDDB_PATHenvironment variable (if set)
Python 3.6.1+ and pycryptodomex are required. PySide2 is required for the GUI.
Windows 7 or later is required.
(GUI in progress of being re-created.) Python does not have to be installed, but WinFsp is still required.
python3must be used, not
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]
(GUI in progress of being re-created.) Python does not have to be installed, but FUSE for macOS is still required.
Versions of macOS supported by Apple are highly recommended. OS X Mavericks is the oldest 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]
python3 -m pip install --upgrade --user https://github.com/ihaveamac/ninfs/archive/2.0.zip.
--useris not needed if you are using a virtual environment.
python3 -m pip install --upgrade --user https://github.com/ihaveamac/ninfs/archive/2.0.zip#egg=ninfs[gui]
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
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_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.
Developer-unit contents are encrypted with different keys, which can be used with
--dev with CCI, CDN, CIA, NANDCTR, NCCH, and SD.
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
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 3DSdirectory from an SD card:
mount_sd --movable movable.sed "/path/to/Nintendo 3DS" mountpoint
Nintendo 3DSdirectory from an SD card with an SD key hexstring:
mount_sd --sd-key 504C415900000000504F4B454D4F4E21 "/path/to/Nintendo 3DS" mountpoint
mount_srl game.nds mountpoint
mount_threedsx boot.3dsx mountpoint
ninfsis under the MIT license.
OTP code is from Stary2001/3ds_tools, and is under the MIT license.