Skip to main content

用于 Nintendo 控制台文件的 FUSE 文件系统 Python 脚本

项目描述

宁夫

ninfs(以前的 fuse-3ds)是一个 FUSE 程序,用于从任天堂游戏机中提取数据。它通过呈现一个包含游戏内容、NAND 或 SD 卡内容的虚拟文件系统来工作,您可以只浏览和复制所需的文件。

支持 Windows、macOS 和 Linux。

支持的类型

  • 任天堂 3DS:
    • CTR 购物车图片(“.3ds”、“.cci”)
    • CDN 内容(“cetk”、“tmd”和内容)
    • CTR 可导入存档(“.cia”)
    • 可执行文件系统(“.exefs”、“exefs.bin”)
    • 任天堂 3DS NAND 备份(“nand.bin”)
    • NCCH(“.cxi”、“.cfa”、“.ncch”、“.app”)
    • 只读文件系统(“.romfs”、“romfs.bin”)
    • SD 卡内容(来自 SD 的“Nintendo 3DS”)
    • 3DSX 自制软件(“.3dsx”)
    • Titles 目录(来自 NAND 或 SD 的“title”)
  • 任天堂 DS / DSi
    • 任天堂 DSi NAND 备份(“nand_dsi.bin”)
    • Nintendo DS ROM 映像(“.nds”、“.srl”)
  • 任天堂开关
    • Nintendo Switch NAND 备份(“rawnand.bin”)

示例用途

  • 挂载一个 NAND 备份并浏览 CTRNAND、TWLNAND 和其他文件,然后写回它们,而无需先提取和解密它们。
  • 浏览解密的 SD 卡内容。转储已安装的游戏并保存,或在两个系统的 SD 内容之间复制内容。
  • 从 CIA、CCI(“.3ds”)、NCCH、RomFS、原始 CDN 内容中提取游戏文件,只需安装它们并浏览其文件即可。或者使用虚拟解密文件并立即开始在Citra中玩游戏。

设置

对于 3DS 类型,需要 ARM9 bootROM。您可以使用 boot9strap 转储它,它可以通过3DS Hacks Guide进行设置。它按以下顺序检查:

  • --boot9参数(如果设置)
  • BOOT9_PATH环境变量(如果设置)
  • %APPDATA%\3ds\boot9.bin(特定于 Windows)
  • ~/Library/Application Support/3ds/boot9.bin(特定于 macOS)
  • ~/.3ds/boot9.bin
  • ~/3ds/boot9.bin

boot9_prot.bin也可以在所有这些位置使用。

" ~" 表示用户的主目录。“ ~/3ds” 意味着/Users/username/3ds在 macOS 和C:\Users\username\3dsWindows 上。

CDN、CIA 和 NCCH 安装可能需要SeedDB来安装使用种子的较新游戏(2015 年以上)的 NCCH 容器。
SeedDB 按以下顺序检查:

  • --seeddb参数(如果设置)
  • SEEDDB_PATH环境变量(如果设置)
  • %APPDATA%\3ds\seeddb.bin(特定于 Windows)
  • ~/Library/Application Support/3ds/seeddb.bin(特定于 macOS)
  • ~/.3ds/seeddb.bin
  • ~/3ds/seeddb.bin

需要 Python 3.6.1+ 和 pycryptodomex。GUI 需要 appJar。

  • fusepy是预先包含的,直到垃圾有一个完全稳定的版本。

视窗

需要 Windows 7 或更高版本。

可以使用带有 GUI 的独立可执行文件。您可以从GitHubGBAtemp 下载中心下载单个可执行文件将出现一个窗口,让您轻松选择挂载选项。

不必安装 Python,但仍需要WinFsp

使用现有的 Python 安装

  • 安装最新版本的Python 3。在 64 位 Windows 上首选 x86-64 版本。
  • 安装最新版本的WinFsp
  • 安装 ninfs py -3 -m pip install --upgrade https://github.com/ihaveamac/ninfs/archive/master.zip
    • 使用 GUI 支持:py -3 -m pip install --upgrade https://github.com/ihaveamac/ninfs/archive/master.zip#egg=ninfs[gui]

苹果系统

可以使用带有 GUI 的独立应用程序包。需要 OS X 10.9.5 Mavericks 或更高版本。您可以从GitHub下载 DMG 。

不必安装 Python,但仍然需要FUSE for macOS 。

使用现有的 Python 安装

强烈推荐 Apple 支持的 macOS 版本。Mac OS X Snow Leopard 是可以运行的最低版本。

  • 安装最新版本的 Python 3。推荐的方式是Homebrew。您还可以使用来自python.org的安装程序或类似pyenv的工具。
  • 为 macOS安装最新版本的FUSE
  • 安装 ninfs python3 -m pip install --upgrade https://github.com/ihaveamac/ninfs/archive/master.zip
    • 使用 GUI 支持:python3 -m pip install --upgrade https://github.com/ihaveamac/ninfs/archive/master.zip#egg=ninfs[gui]

Linux

  • Arch Linux: ninfs 在 AUR 中可用: normal , with gui , git , git with gui
  • 最近的发行版应预先安装 Python 3.6.1 或更高版本,或包含在其存储库中。如果没有,您可以使用额外的存储库(例如deadsnakes 的Ubuntu 的 PPA),从 source 构建,或使用pyenv 之类的工具。
  • 大多数发行版应该默认启用/安装保险丝。如果不是,请使用您的包管理器。
  • 安装 ninfs python3 -m pip install --upgrade --user https://github.com/ihaveamac/ninfs/archive/master.zip
    • --user如果您使用的是虚拟环境,则不需要。
    • 使用 GUI 支持:python3 -m pip install --upgrade --user https://github.com/ihaveamac/ninfs/archive/master.zip#egg=ninfs[gui]
  • 您可以使用python3 -m ninfs --install-desktop-entry. 如果要安装到默认 ( $XDG_DATA_HOME) 以外的位置,可以添加另一个参数,其路径为/usr/local/share.

用法

图形用户界面

如果安装了带有 GUI 支持的 ninfs,则可以通过指定类型来使用 GUI gui(例如 Windows: py -3 -mninfs gui、 *nix: python3 -mninfs gui)。GUI 控制安装和卸载。

命令行

使用“ mount_<type>”(例如mount_cci game.3ds mountpoint)运行挂载脚本。用于-h查看脚本的参数。

如果它不起作用,另一种方法是使用<python-cmd> -mninfs <type>(例如 Windows: py -3 -mninfs cci game.3ds mountpoint, *nix: python3 -mninfs cci game.3ds mountpoint)。

Windows 用户可以使用驱动器F:号作为挂载点,或者使用*驱动器号将自动选择。

卸载

  • Windows:在命令提示符/PowerShell 窗口中按Ctrl+ 。C
  • macOS:两种方法:
    • 右键单击挂载并选择“弹出“驱动器名称””。
    • 从终端运行:diskutil unmount /path/to/mount
  • Linux:从终端运行:fusermount -u /path/to/mount

例子

  • 3DS游戏卡转储:
    mount_cci game.3ds mountpoint
  • 从 CDN 下载的内容:
    mount_cdn cdn_directory mountpoint
  • 具有特定解密标题密钥的 CDN 内容:
    mount_cdn --dec-key 3E3E6769742E696F2F76416A65423C3C cdn_directory mountpoint
  • 中央情报局:
    mount_cia game.cia mountpoint
  • 执行文件:
    mount_exefs exefs.bin mountpoint
  • essential.exefs嵌入式3DS NAND 备份:
    mount_nandctr nand.bin mountpoint
  • 带有 OTP 文件的 3DS NAND 备份(自动生成计数器):
    mount_nandctr --otp otp.bin nand.bin mountpoint
  • 带有 OTP 和 CID 文件的 3DS NAND 备份:
    mount_nandctr --otp otp.bin --cid nand_cid.bin nand.bin mountpoint
  • 带有 OTP 文件和 CID 十六进制字符串的 3DS NAND 备份:
    mount_nandctr --otp otp.bin --cid 7468616E6B7334636865636B696E6721 nand.bin mountpoint
  • DSi NAND备份(计数器自动生成):
    mount_nandtwl --console-id 4E696E74656E646F nand_dsi.bin mountpoint
  • 带有控制台 ID 十六进制字符串和指定 CID 十六进制字符串的 DSi NAND 备份:
    mount_nandtwl --console-id 4E696E74656E646F --cid 576879446F657344536945786973743F nand_dsi.bin mountpoint
  • 带有控制台 ID 文件和指定 CID 文件的 DSi NAND 备份:
    mount_nandtwl --console-id ConsoleID.bin --cid CID.bin nand_dsi.bin mountpoint
  • 切换NAND备份
    mount_nandhac --keys prod.keys rawnand.bin mountpoint
  • 多部分切换NAND备份
    mount_nandhac --keys prod.keys -S rawnand.bin.00 mountpoint
  • NCCH 容器(.app、.cxi、.cfa、.ncch):
    mount_ncch content.cxi mountpoint
  • ROMFS:
    mount_romfs romfs.bin mountpoint
  • Nintendo 3DSSD卡中的目录:
    mount_sd --movable movable.sed "/path/to/Nintendo 3DS" mountpoint
  • Nintendo 3DS带有 SD 密钥十六进制字符串的 SD 卡中的目录:
    mount_sd --sd-key 504C415900000000504F4B454D4F4E21 "/path/to/Nintendo 3DS" mountpoint
  • Nintendo DS ROM 映像(NDS/SRL,mount_nds也可以):
    mount_srl game.nds
  • 3DSX 自制应用程序:
    mount_threedsx boot.3dsx mountpoint
  • title来自 NAND 备份或 SD 卡安装中的目录:
    mount_titledir title mountpoint

有用的工具

  • wwylele 的3ds-save-tool可用于提取游戏保存和额外数据(分别为 DISA 和 DIFF)。
    • wwylele 的save3ds是用于 3DS 保存文件的 FUSE 安装。目前仅支持 macOS 和 Linux。
  • OSFMount for Windows 可以在 NAND 备份中挂载 FAT12/FAT16 分区。

相关工具

  • Maschell 的fuse-wiiu可用于挂载 Wii U 内容。
  • koolkdev 的wfslib有 wfs-fuse 来挂载 Wii U mlc 转储和 USB 设备。

许可证/学分

  • ninfs是在麻省理工学院许可下。
    • fuse.py是在 ISC 许可下(取自setup.py)。
    • hac/aes.cpp并且hac/aes.hpp来自@openluopworld 的aes_128 commit b5b7f55,并使用 MIT 许可证。
    • hac/ccrypto.cppAES-XTS 部分由@luigoalma 提供,基于@plutooo 的加密模块;我的 Python 模块实现(@ihaveamac)。

特别感谢 @Stary2001 对 NAND 加密(尤其是 TWL)的帮助,以及 @d0k3 对于 SD 加密的帮助。

OTP 代码来自Stary2001/3ds_tools,并在 MIT 许可下。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

ninfs-1.6.1.tar.gz (4.0 MB 查看哈希

已上传 source

内置发行版

ninfs-1.6.1-cp37-cp37m-win_amd64.whl (2.1 MB 查看哈希

已上传 cp37

ninfs-1.6.1-cp37-cp37m-win32.whl (2.0 MB 查看哈希

已上传 cp37

ninfs-1.6.1-cp37-cp37m-macosx_10_9_x86_64.whl (2.3 MB 查看哈希

已上传 cp37

ninfs-1.6.1-cp36-cp36m-win_amd64.whl (2.1 MB 查看哈希

已上传 cp36

ninfs-1.6.1-cp36-cp36m-win32.whl (2.0 MB 查看哈希

已上传 cp36

ninfs-1.6.1-cp36-cp36m-macosx_10_9_x86_64.whl (2.3 MB 查看哈希

已上传 cp36