ROM Hack ninfs - FUSE filesystem Python scripts for Nintendo console files

  • Thread starter Thread starter ihaveahax
  • Start date Start date
  • Views Views 42,508
  • Replies Replies 115
  • Likes Likes 30
Ok, whenever I try to start the gui on linux, it says i don't have appJar (/ the gui) installed which i do have installed. I can mess with the command line, but I would like to know how to fix this problem.
 
Ok, whenever I try to start the gui on linux, it says i don't have appJar (/ the gui) installed which i do have installed. I can mess with the command line, but I would like to know how to fix this problem.
Install appJar manually or install with gui support. This will ensure it installs the dependencies properly.
Code:
python3 -m pip install --upgrade --user https://github.com/ihaveamac/fuse-3ds/releases/download/v1.2b2/fuse-3ds-1.2b2-src.zip#egg=fuse-3ds[gui]
Make sure you also have Tk installed (on Ubuntu: python3-tk; look for your distro's equivalent)
 
Last edited by ihaveahax,
@ihaveamac
I have a specific situation here, and I wonder if 3ds-fuse could help me.

1 - I formatted and installed Bs9 in a 3ds running Rxtools. I did not backup the SD saves, believing I could just copy and paste the Nintendo 3ds folder, that everything would be okay. It was a stupid thing. The saves and data were not recognized by 3ds.

2- Basically what I have is an old SD with the files of my 3ds that ran RXtools, including a backup of Nand pre installation RXTOOLS, and the backups done automatically by GM9 when I installed the latest version of BS9.

The question is:

How could I make the saves of my games in RX tools, run in 3ds Bs9 Installed? Is it possible to do this with Fuse? How would it be?
 
@ihaveamac
I have a specific situation here, and I wonder if 3ds-fuse could help me.

1 - I formatted and installed Bs9 in a 3ds running Rxtools. I did not backup the SD saves, believing I could just copy and paste the Nintendo 3ds folder, that everything would be okay. It was a stupid thing. The saves and data were not recognized by 3ds.

2- Basically what I have is an old SD with the files of my 3ds that ran RXtools, including a backup of Nand pre installation RXTOOLS, and the backups done automatically by GM9 when I installed the latest version of BS9.

The question is:

How could I make the saves of my games in RX tools, run in 3ds Bs9 Installed? Is it possible to do this with Fuse? How would it be?
If you have boot9 and your OTP (GM9 lets you dump this if you have b9s), you can decrypt NANDs. Inside you can find /private/movable.sed which includes the SD encryption key. You can use this to decrypt saves if you have the right key for the data you want.

If you have a backup of when those games worked (or possibly even before), you should be able to do this.
 
If you have boot9 and your OTP (GM9 lets you dump this if you have b9s), you can decrypt NANDs. Inside you can find /private/movable.sed which includes the SD encryption key. You can use this to decrypt saves if you have the right key for the data you want.

If you have a backup of when those games worked (or possibly even before), you should be able to do this.

Thanks for the answer. My console was at 9.2 and I used the "push button R" method to enter Rxtools. So, as soon as I cleaned the SD with the RXtools files, I used the soundhax and installed the BS9.

I believe the Nand version and essential.exefs are from the backup made immediately after the BS9 installation. Do they serve me? If so, how can I decrypt them? From what I studied about fuse-3ds, it uses the OTP and CID I have no idea how to get them.
 
Thanks for the answer. My console was at 9.2 and I used the "push button R" method to enter Rxtools. So, as soon as I cleaned the SD with the RXtools files, I used the soundhax and installed the BS9.

I believe the Nand version and essential.exefs are from the backup made immediately after the BS9 installation. Do they serve me? If so, how can I decrypt them? From what I studied about fuse-3ds, it uses the OTP and CID I have no idea how to get them.
essential.exefs contains the otp and cid, which are unique to every console and never change. fuse-3ds only needs the otp for 99% of cases. You can also get otp.mem in GM9 from [M:] MEMORY VIRTUAL.
 
Hello, i need help. Keep getting this error:
Running: ['C:\\Users\\fnova\\Documents\\games3ds\\fuse-3ds.exe', 'nanddsi', '-f', 'C:/Users/fnova/Desktop/nand.bin', 'C:/Users/fnova/Desktop/dsinand']
fuse-3ds v1.1.1 - https://github.com/ihaveamac/fuse-3ds
Traceback (most recent call last):
File "Z:\fuse-3ds\fuse3ds\_pyi_main.py", line 26, in <module>
File "Z:\fuse-3ds\fuse3ds\main.py", line 62, in mount
File "C:\Program Files\Python36\lib\importlib\__init__.py", line 126, in import_module
File "<frozen importlib._bootstrap>", line 994, in _gcd_import
File "<frozen importlib._bootstrap>", line 971, in _find_and_load
File "<frozen importlib._bootstrap>", line 953, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'mount.nanddsi'
[4388] Failed to execute script _pyi_main
 
Hello, i need help. Keep getting this error:
Running: ['C:\\Users\\fnova\\Documents\\games3ds\\fuse-3ds.exe', 'nanddsi', '-f', 'C:/Users/fnova/Desktop/nand.bin', 'C:/Users/fnova/Desktop/dsinand']
fuse-3ds v1.1.1 - https://github.com/ihaveamac/fuse-3ds
Traceback (most recent call last):
File "Z:\fuse-3ds\fuse3ds\_pyi_main.py", line 26, in <module>
File "Z:\fuse-3ds\fuse3ds\main.py", line 62, in mount
File "C:\Program Files\Python36\lib\importlib\__init__.py", line 126, in import_module
File "<frozen importlib._bootstrap>", line 994, in _gcd_import
File "<frozen importlib._bootstrap>", line 971, in _find_and_load
File "<frozen importlib._bootstrap>", line 953, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'mount.nanddsi'
[4388] Failed to execute script _pyi_main
Try v1.2b3
 
Last edited by ihaveahax,
It's up to v1.3.1 now, with a new icon, and a standalone macOS application.
64x64.png

v1.3 also added features to skip online updates.
https://github.com/ihaveamac/fuse-3ds/releases/tag/v1.3.1
 
sorry noob qxn, must the boot9.bin and the nand file to be opened belong to the same console? Can't i use any boot9.bin ?
 
Last edited by emuashui,
I put out some new releases since the last post. Notably, 1.5 can read split Nintendo Switch NAND backups, and 1.6 fixes a write corruption bug in the SD mount.

https://github.com/ihaveamac/ninfs/releases/tag/v1.6

Changes since v1.4
  • Support split Nintendo Switch NAND backup files
    • Each part is expected to end in two digits (e.g. rawnand.bin.00, rawnand.bin.01, ...). Any part can be selected, the program will search for all parts starting with 00.
    • The command line argument -S or --split-files is used for a split backup.
    • The GUI will attempt to automatically detect this based on the filename.
  • GUI: Automatically detect Nintendo DSi NAND backups
  • GUI: Fix oversight breaking automatic detection of Nintendo 3DS NAND backups
  • ExeFS: Always show code-decompressed.bin, even if .code is not compressed
Changes since v1.5
  • CDN: Support using a tmd file to mount - #36
    • The GUI now expects a tmd file by default instead of a directory.
  • SD: Support manual SD key input
    • --sd-key reads the key as a hexstring. It cannot be used at the same time as --movable.
    • The GUI currently does not accept the key as a hexstring, only a movable.sed file.
  • CMDLINE: Support --boot9 for loading the ARM9 bootROM from any path
  • SD: Workaround write corruption bug
  • NANDHAC: Performance improvements to AES-XTSN crypto operations by @luigoalma
  • CCI: Remove useless SeedDB option
  • Stability or something, I guess.
 
  • Like
Reactions: GilgameshArcher
I'd like to know why does ninfs not need a dsi cid for nand decryption? (is there something to generate it or stuff that needs it only use the consoleid to derive them?)
 
I'd like to know why does ninfs not need a dsi cid for nand decryption? (is there something to generate it or stuff that needs it only use the consoleid to derive them?)
If no CID is provided, it will attempt to generate the Counter, using a block of known plaintext in the header. In practice, this header never changes, so it's a good target. A similar process is used for 3DS NANDs.

https://github.com/ihaveamac/ninfs/...6b46f19f08a5/ninfs/mount/nandtwl.py#L102-L114
 

Site & Scene News

Popular threads in this forum