internal string GetOSVersion() { byte[] efiesp = GetPartition("EFIESP"); MemoryStream s = new MemoryStream(efiesp); DiscUtils.Fat.FatFileSystem fs = new DiscUtils.Fat.FatFileSystem(s); Stream mss = fs.OpenFile(@"Windows\System32\Boot\mobilestartup.efi", FileMode.Open, FileAccess.Read); MemoryStream msms = new MemoryStream(); mss.CopyTo(msms); byte[] mobilestartup = msms.ToArray(); Version OSVersion = PE.GetProductVersion(mobilestartup); s.Close(); return(OSVersion.ToString()); }
private static void _DoMassStorageDemo(VicarDevice vicar) { //Create an instance of a FAT32 file system image var stream = new DiscUtilsStream(new MassStorageHelper(vicar)); var fat = new DiscUtils.Fat.FatFileSystem(stream); var currentDir = "\\"; bool running = true; Console.WriteLine("Type 'help' for options or 'quit' to quit."); while (running) { Console.Write(currentDir.TrimStart('\\') + "> "); var line = Console.ReadLine(); var parts = line.Split(new char[] { ' ' }); try { switch (parts[0].ToLower()) { case "flush": { stream.Flush(); break; } case "ls": case "dir": { try { //List all directories foreach (var dir in fat.GetDirectories(currentDir)) { Console.WriteLine("\t" + dir); } //Now list all files foreach (var file in fat.GetFiles(currentDir)) { Console.WriteLine("\t" + Path.GetFileName(file)); } } catch (Exception ex) { Console.WriteLine("ERROR: " + ex.Message); } break; } case "pwd": { Console.WriteLine(currentDir); break; } case "get": { var file = fat.OpenFile(currentDir + "\\" + parts[1], FileMode.Open); var data = new byte[file.Length]; file.Read(data, 0, data.Length); file.Close(); File.WriteAllBytes(parts[1], data); break; } case "put": { var data = File.ReadAllBytes(parts[1]); var file = fat.OpenFile(currentDir + "\\" + parts[1], FileMode.Create); file.Write(data, 0, data.Length); file.Close(); break; } case "cd": { if (parts[1] == "..") { var idx = currentDir.LastIndexOf("\\"); if (idx != -1) { currentDir = currentDir.Substring(0, idx); } } else { currentDir += "\\" + parts[1]; } break; } case "exit": case "quit": { running = false; break; } case "help": { Console.WriteLine("Help:"); Console.WriteLine("cd\tChanges to specified directory."); Console.WriteLine("dir\tDisplays current directory's contents."); Console.WriteLine("ls"); Console.WriteLine("pwd\tPrints current directory."); Console.WriteLine("get\tGets specified file to disk."); break; } default: { break; } } } catch (Exception ex) { Console.WriteLine("Error handling command: " + ex.ToString()); } } }