[Tutorial] Extract/Decrypt games, NAND backups, and SD contents with fuse-3ds

Discussion in '3DS - Tutorials' started by ihaveamac, Mar 30, 2018.

  1. ihaveamac
    OP

    ihaveamac GBAtemp Guru

    Member
    5,586
    6,290
    Apr 20, 2015
    United States
    Tigard, OR
    This is a tutorial that shows you how to use fuse-3ds to extract the contents of games, NAND backups, and SD card contents. This tutorial is a work in progress; please post a reply if something is confusing or needs a correction.

    This supports Windows, macOS, and Linux. This tutorial mostly focuses on the GUI on Windows. For macOS/Linux steps plus CLI/installable-module usage, see the README and latest release at the repository.

    What sets fuse-3ds apart from others like ctrtool is that it doesn't need to decrypt separately first. Instead, files are decrypted as needed. For example, if you mount a CIA, you can see all of the files in it, and you only need to copy out what you need. This makes it much faster and more efficient, especially for larger games where it can take a while (and several gigabytes of space) to decrypt!

    Want to see a video demonstration? Here is one with Pokémon Ultra Moon, using an earlier version of fuse-3ds.
    Demonstration
    Getting started
    Windows users simply need two things:
    • Install the latest release of WinFsp
    • Download the latest release of fuse-3ds
      • You should download the win64 version if you're using 64-bit Windows.
    Please see the latest release notes for macOS and Linux (+ alternative steps for Windows).

    You also need the ARM9 bootROM. You can use boot9strap to dump it by holding START+SELECT+X at boot, and finding it at /boot9strap/boot9.bin on the SD card. You can find boot9strap setup at 3DS Hacks Guide.

    For newer digital games (2015+), you also need a SeedDB. Check out the SeedDB list.

    It is highly recommended you put boot9.bin and seeddb.bin at {user-directory}/3ds. For example, on Windows: make a 3ds folder in C:\Users\username then put the files in it.
    [​IMG]

    Usage (GUI)
    Run fuse-3ds (either the exe, or the module if you installed it). A console window will appear, then a GUI a few seconds later.
    [​IMG]
    First, choose the type that you want at the top:
    • CTR Cart Image (".3ds", ".cci")
    • CDN contents (directory with "cetk", "tmd", and contents)
    • CTR Importable Archive (".cia")
    • Executable Filesystem (".exefs", "exefs.bin")
    • NAND backup ("nand.bin")
      • Using a directory instead of drive letter is highly recommended for this!
      • You need OTP and CID files for this if the NAND backup does not have essential.exefs embedded by GodMode9. If you have essential.exefs as a separate file, you can extract it from that.
      • You can write to the NAND. In the GUI, you need to enable this option. Otherwise, the mount will be read-only.
    • NCCH (".cxi", ".cfa", ".ncch", ".app")
    • Read-only Filesystem (".romfs", "romfs.bin")
    • SD Card Contents ("Nintendo 3DS" from an SD card)
      • You need movable.sed from the system whose SD card contents you want to browse. You can get it from essential.exefs, or by copying it from CTRNAND -> private -> movable.sed.
      • You can write to the SD contents. In the GUI, you need to enable this option. Otherwise, the mount will be read-only.
    • 3DSX Homebrew (".3dsx")
    • Titles directory ("title" from NAND or SD)
      • To browse SD card titles, the contents must be decrypted first. You can use the SD Card Contents mount first to do that, then use this one.
    Once you choose the type, you need to choose the file (or directory) that you want to mount. This would be the game, NAND, or "Nintendo 3DS" SD card folder that you want.

    Finally, click "Mount". If there are no errors, Windows Explorer/File Explorer will automatically open at the mount. Some example contents are shown below.
    Root of a CIA mounted at F:
    Root of an NCCH mounted at A:
    Root of a NAND backup mounted at E:\NAND
    Now you can copy out the files you want.
    • If you mounted CCI, CDN, CIA, NCCH, or Titledir, you can see "decrypted.cxi" (or "decrypted.cfa" for non-executable contents) which acts like a decrypted version of the game. You can use it in applications that require decrypted contents like Citra.
    • For NAND, you can use a tool like OSFMount to mount partitions like CTRNAND, TWLN, and TWLP. Make sure you used directory mount, not drive letter.
      If you enabled writing, you can also write back to the partitions. They will be re-encrypted as you write.
    • For SD, you can browse the decrypted contents, and use something like the titledir mount to browse the installed games. You can also write to it, and the files you write will be re-encrypted.
      You can extract game saves and extdata with a tool like 3ds-save-tool.
    Once you are done, click "Unmount". The mount will be removed.

    Add to context/right-click menu
    You can add "Mount with fuse-3ds" to the context menu when you right-click on files. It will try to automatically detect the file type and show it in the GUI, so you can just click Mount.
    Context Menu Demonstration
    Open fuse-3ds, click "Help & Extras", then click "Add to menu". Read the dialog, then click "Add entry" or "Remove entry" to add or remove the context menu entry.

    If you move or rename the EXE, you will need to re-add it.

    Troubleshooting
    • I am using Windows 7, 8, or 8.1 and am getting "The procedure entry point ucrtbase.terminate could not be located in the dynamic link library api-ms-win-crt-runtime-l1-1-0.dll.".
    • I am on Windows 7 and am getting an error saying the driver is not signed when trying to install WinFsp.
      I am on Windows 7 and am getting "Cannot create WinFsp-FUSE file system: unspecified error."
     
    Last edited by ihaveamac, Apr 20, 2018 at 7:55 PM
  2. Chromaryu

    Chromaryu Newbie

    Newcomer
    5
    2
    Sep 7, 2017
    Japan
    Great Guide. hax.
     
    haxnume likes this.
  3. TurdPooCharger

    TurdPooCharger Remove the battery.

    Member
    509
    175
    Jan 1, 2018
    United States
    Is fuse-3ds capable of decompiling DSiWare and homebrew based CIA?

    My current go to decompilers in this order:
    • DotNet.3DS.Toolkit.v1.4.6 (which is GUI front of ctrtool and makerom??)
    • HackingToolkit9DS (or is it HackingToolkit3DS? Whoever named the latter, WHY?!?!)
    • ctrtool
    • GodMode9
    • some other programs, some obscure, for further decompiling (Every File Explorer, 3DS Explorer, DarcTool3DS, etc.)
    • HxD hex editor
    I have trouble with those two specific types of CIA because the first two can't seem to handle them, and the 4th, while God sent (punned intended), is kinda tedious going back and forth between desktop and 3DS system.
     
  4. ihaveamac
    OP

    ihaveamac GBAtemp Guru

    Member
    5,586
    6,290
    Apr 20, 2015
    United States
    Tigard, OR
    DSiWare itself isn't directly supported because there is no support for the nds/srl format (yet? not sure if I will add it). it also doesn't support DSiWare exports which are entirely different.

    this can decrypt the CIA/titlekey layer of it though, so you wouldn't need to decrypt it with ctrtool/gm9 first to then use other tools on the nds file.

    homebrew CIAs use the same NCCH format as other games, so it would work fine.
     
    TurdPooCharger likes this.
  5. Kartik

    Kartik Gbatemp advanced fan

    Member
    372
    283
    Jun 6, 2015
    India
    github
    Now you won't have to extract titles for me.:P
     
    Last edited by Kartik, Mar 30, 2018
  6. SirNapkin1334

    SirNapkin1334 Renound Aritst

    Member
    1,222
    615
    Aug 20, 2017
    United States
    Crap Mountain
    Can I place my movable.sed in {home}/3ds?
     
  7. ihaveamac
    OP

    ihaveamac GBAtemp Guru

    Member
    5,586
    6,290
    Apr 20, 2015
    United States
    Tigard, OR
    it won't automatically find it in this directory, you would still need to specify it in the gui or with --movable.
     
  8. ihaveamac
    OP

    ihaveamac GBAtemp Guru

    Member
    5,586
    6,290
    Apr 20, 2015
    United States
    Tigard, OR
  9. ihaveamac
    OP

    ihaveamac GBAtemp Guru

    Member
    5,586
    6,290
    Apr 20, 2015
    United States
    Tigard, OR
    Since my last post, I released v1.0b5 and v1.0b6. The new additions have been drag & drop support, update checking, 3DSX homebrew mounting (SMDH and RomFS), and many other fixes and changes. https://github.com/ihaveamac/fuse-3ds/releases
     
    SirNapkin1334 likes this.
Loading...