Beispiel #1
0
        public static SwitchFs OpenNandPartition(Keyset keyset, IAttributeFileSystem fileSystem)
        {
            var concatFs     = new ConcatenationFileSystem(fileSystem);
            var saveDirFs    = new SubdirectoryFileSystem(concatFs, "/save");
            var contentDirFs = new SubdirectoryFileSystem(concatFs, "/Contents");

            return(new SwitchFs(keyset, contentDirFs, saveDirFs));
        }
Beispiel #2
0
        public static SwitchFs OpenSdCard(Keyset keyset, IAttributeFileSystem fileSystem)
        {
            var concatFs     = new ConcatenationFileSystem(fileSystem);
            var saveDirFs    = new SubdirectoryFileSystem(concatFs, "/Nintendo/save");
            var contentDirFs = new SubdirectoryFileSystem(concatFs, "/Nintendo/Contents");

            var encSaveFs    = new AesXtsFileSystem(saveDirFs, keyset.SdCardKeys[0], 0x4000);
            var encContentFs = new AesXtsFileSystem(contentDirFs, keyset.SdCardKeys[1], 0x4000);

            return(new SwitchFs(keyset, encContentFs, encSaveFs));
        }
Beispiel #3
0
        public static SwitchFs OpenNandPartition(KeySet keySet, IAttributeFileSystem fileSystem)
        {
            var concatFs = new ConcatenationFileSystem(fileSystem);
            SubdirectoryFileSystem saveDirFs = null;

            if (concatFs.DirectoryExists("/save"))
            {
                SubdirectoryFileSystem.CreateNew(out saveDirFs, concatFs, "/save".ToU8String()).ThrowIfFailure();
            }

            SubdirectoryFileSystem.CreateNew(out SubdirectoryFileSystem contentDirFs, concatFs, "/Contents".ToU8String()).ThrowIfFailure();

            return(new SwitchFs(keySet, contentDirFs, saveDirFs));
        }
Beispiel #4
0
        public static SwitchFs OpenSdCard(Keyset keyset, IAttributeFileSystem fileSystem)
        {
            var concatFs = new ConcatenationFileSystem(fileSystem);

            SubdirectoryFileSystem.CreateNew(out SubdirectoryFileSystem contentDirFs, concatFs, "/Nintendo/Contents".ToU8String()).ThrowIfFailure();

            AesXtsFileSystem encSaveFs = null;

            if (fileSystem.DirectoryExists("/Nintendo/save"))
            {
                SubdirectoryFileSystem.CreateNew(out SubdirectoryFileSystem saveDirFs, concatFs, "/Nintendo/save".ToU8String()).ThrowIfFailure();
                encSaveFs = new AesXtsFileSystem(saveDirFs, keyset.SdCardKeys[0], 0x4000);
            }

            var encContentFs = new AesXtsFileSystem(contentDirFs, keyset.SdCardKeys[1], 0x4000);

            return(new SwitchFs(keyset, encContentFs, encSaveFs));
        }
Beispiel #5
0
        public static SwitchFs OpenSdCard(KeySet keySet, IAttributeFileSystem fileSystem)
        {
            var concatFs = new ConcatenationFileSystem(fileSystem);

            var contentDirFs = new SubdirectoryFileSystem(concatFs);

            contentDirFs.Initialize("/Nintendo/Contents".ToU8String()).ThrowIfFailure();

            AesXtsFileSystem encSaveFs = null;

            if (fileSystem.DirectoryExists("/Nintendo/save"))
            {
                var saveDirFs = new SubdirectoryFileSystem(concatFs);
                saveDirFs.Initialize("/Nintendo/save".ToU8String()).ThrowIfFailure();

                encSaveFs = new AesXtsFileSystem(saveDirFs, keySet.SdCardEncryptionKeys[0].DataRo.ToArray(), 0x4000);
            }

            var encContentFs = new AesXtsFileSystem(contentDirFs, keySet.SdCardEncryptionKeys[1].DataRo.ToArray(), 0x4000);

            return(new SwitchFs(keySet, encContentFs, encSaveFs));
        }