示例#1
0
        private void ExtractCurrentFsDoWork(object sender, DoWorkEventArgs doWorkEventArgs)
        {
            var reader = new NANDReader(doWorkEventArgs.Argument as string);

            try {
                AddOutput("Scanning for RootFS... {0}", Environment.NewLine);
                reader.ScanForFsRootAndMobile();
                AddOutput("Parsing RootFS @ 0x{0:X}...{1}", reader.FsRoot.Offset, Environment.NewLine);
                var fs      = new NANDFileSystem();
                var entries = fs.ParseFileSystem(ref reader);
                AddOutput("FSEntries found: {0}{1}", entries.Length, Environment.NewLine);
                var dir = (doWorkEventArgs.Argument as string) + "_ExtractedFS";
                Directory.CreateDirectory(dir);
                foreach (var fileSystemEntry in entries)
                {
                    AddOutput("Extracting: {0}...{1}", fileSystemEntry.Filename, Environment.NewLine);
                    fileSystemEntry.ExtractToFile(ref reader, Path.Combine(dir, fileSystemEntry.Filename));
                    //File.WriteAllBytes(Path.Combine(dir, fileSystemEntry.Filename), fileSystemEntry.GetData(ref reader));
                }
            }
            catch (Exception ex) {
                AddException(ex.ToString());
            }
            finally {
                reader.Close();
            }
            AddDone();
        }
示例#2
0
        private void TestFsParserDoWork(object sender, DoWorkEventArgs doWorkEventArgs)
        {
            var reader = new NANDReader(doWorkEventArgs.Argument as string);

            try {
                AddOutput("Parsing RootFS @ 0x{0:X}...{1}", reader.FsRoot.Offset, Environment.NewLine);
                var fs      = new NANDFileSystem();
                var entries = fs.ParseFileSystem(ref reader);
                AddOutput("FSEntries found:{0}", Environment.NewLine);
                foreach (var fileSystemEntry in entries)
                {
                    AddOutput("{0}{1}", fileSystemEntry, Environment.NewLine);
                }
            }
            catch (Exception ex) {
                AddException(ex.ToString());
            }
            finally {
                reader.Close();
            }
            AddDone();
        }