public override byte[] ReadFile(string path) { var xListen = xFS.GetRoot(); FAT.Listing.FatFile xFile = null; for (int j = 0; j < xListen.Count; j++) { /*if (xListen[j] is Sys.Filesystem.Listing.Directory) * { * //Console.WriteLine("[DIR]--" + xListen[j].Name + "(" + xListen[j].Size + ")"); * } * else if (xListen[j] is Sys.Filesystem.Listing.File) * { * //Console.WriteLine("[FILE]--" + xListen[j].Name + "(" + xListen[j].Size + ")"); * if (xListen[j].Name == "Amanp.txt") * { * xFile = (FAT.Listing.FatFile)xListen[j]; * } * }*/ if (xListen[j] is Sys.Filesystem.Listing.File) { if (xListen[j].Name == path.Substring(path.LastIndexOf('/'))) { xFile = (FAT.Listing.FatFile)xListen[j]; } } } var xStream = new Sys.Filesystem.FAT.FatStream(xFile); var xData = new byte[xFile.Size]; xStream.Read(xData, 0, (int)xFile.Size); return(xData); }
public void List() { for (int j = 0; j < xListing.Count; j++) { var xItem = xListing[j]; if (xItem is Sys.Filesystem.Listing.Directory) { //Detecting Dir in HDD Out.printf("<DIR> %s", this.xListing[j].Name); } else if (xItem is Sys.Filesystem.Listing.File) { //Detecting File in HDD // Console.WriteLine("<FILE> " + this.xListing[j].Name + " (" + this.xListing[j].Size + ")"); Out.printf("<FILE> %s (%i)", this.xListing[j].Name, this.xListing[j].Size); if (this.xListing[j].Name == "WOSFSROOT") { this.xRootFile = (Cosmos.System.Filesystem.FAT.Listing.FatFile) this.xListing[j]; } } } }
protected void TestATA() { #region Comment(OLD) /* * try * { * Console.WriteLine(); * Console.WriteLine("Block devices found: " + BlockDevice.Devices.Count); * * AtaPio xATA = null; * for (int i = 0; i < BlockDevice.Devices.Count; i++) * { * var xDevice = BlockDevice.Devices[i]; * if (xDevice is AtaPio) * { * xATA = (AtaPio)xDevice; * } * } * Console.WriteLine("--------------------------"); * Console.WriteLine("Type: " + (xATA.DriveType == AtaPio.SpecLevel.ATA ? "ATA" : "ATAPI")); * Console.WriteLine("Serial No: " + xATA.SerialNo); * Console.WriteLine("Firmware Rev: " + xATA.FirmwareRev); * Console.WriteLine("Model No: " + xATA.ModelNo); * Console.WriteLine("Block Size: " + xATA.BlockSize + " bytes"); * Console.WriteLine("Size: " + xATA.BlockCount * xATA.BlockSize / 1024 / 1024 + " MB"); * * //Partition xPartition = null; * //for (int i = 0; i < BlockDevice.Devices.Count; i++) * //{ * // var xDevice = BlockDevice.Devices[i]; * // if (xDevice is Partition) * // { * // xPartition = (Partition)xDevice; * // } * //} * * //var xFS = new FAT.FatFileSystem(xPartition); * //Sys.Filesystem.FileSystem.AddMapping("C", xFS); * * //Console.WriteLine(); * //Console.WriteLine("Root directory"); * //var xListing = xFS.GetRoot(); * //FAT.Listing.FatFile xRootFile = null; * //FAT.Listing.FatFile xKudzuFile = null; * //for (int i = 0; i < xListing.Count; i++) * //{ * // var xItem = xListing[i]; * // if (xItem is Sys.Filesystem.Listing.Directory) * // { * // Console.WriteLine("<" + xListing[i].Name + ">"); * // } * // else if (xItem is Sys.Filesystem.Listing.File) * // { * // Console.WriteLine(); * // Console.WriteLine(xListing[i].Name); * // Console.WriteLine(xListing[i].Size); * // if (xListing[i].Name == "Root.txt") * // { * // xRootFile = (FAT.Listing.FatFile)xListing[i]; * // } * // else if (xListing[i].Name == "Kudzu.txt") * // { * // xKudzuFile = (FAT.Listing.FatFile)xListing[i]; * // } * // } * //} * * //{ * // var xStream = new Sys.Filesystem.FAT.FatStream(xRootFile); * // var xData = new byte[xRootFile.Size]; * // xStream.Read(xData, 0, (int)xRootFile.Size); * // var xText = Encoding.ASCII.GetString(xData); * // Console.WriteLine(xText); * //} * * //{ * // Console.WriteLine(); * // Console.WriteLine("StreamReader"); * // var xStream = new Sys.Filesystem.FAT.FatStream(xRootFile); * // var xReader = new System.IO.StreamReader(xStream); * // string xText = xReader.ReadToEnd(); * // Console.WriteLine(xText); * //} * * //var xKudzuStream = new Sys.Filesystem.FAT.FatStream(xKudzuFile); * //var xKudzuData = new byte[xKudzuFile.Size]; * //xKudzuStream.Read(xKudzuData, 0, (int)xKudzuFile.Size); * * //string xLower = "Hello"; * //Console.WriteLine(xLower.ToUpper()); * //Console.WriteLine(xLower.ToLower()); * * //var xFile = new System.IO.FileStream(@"c:\Root.txt", System.IO.FileMode.Open); * * //int dummy = 42; * * //var xWrite = new byte[512]; * //for (int i = 0; i < 512; i++) * //{ * // xWrite[i] = (byte)i; * //} * //xATA.WriteBlock(0, 1, xWrite); * * //var xRead = xATA.NewBlockArray(1); * //xATA.ReadBlock(0, 1, xRead); * //string xDisplay = ""; * //for (int i = 0; i < 512; i++) * //{ * // xDisplay = xDisplay + xRead[i].ToHex(); * //} * //Console.WriteLine(xDisplay); * * } * catch (Exception e) * { * Console.WriteLine("Exception: " + e.Message); * Stop(); * }*/ #endregion try { Console.WriteLine(); Console.WriteLine("Block devices found: " + BlockDevice.Devices.Count); AtaPio xATA = null; for (int i = 0; i < BlockDevice.Devices.Count; i++) { var xDevice = BlockDevice.Devices[i]; if (xDevice is AtaPio) { xATA = (AtaPio)xDevice; } } //Info Console.WriteLine("--------------------------"); Console.WriteLine("Type: " + (xATA.DriveType == AtaPio.SpecLevel.ATA ? "ATA" : "ATAPI")); Console.WriteLine("Serial No: " + xATA.SerialNo); Console.WriteLine("Firmware Rev: " + xATA.FirmwareRev); Console.WriteLine("Model No: " + xATA.ModelNo); Console.WriteLine("Block Size: " + xATA.BlockSize + " bytes"); Console.WriteLine("Size: " + xATA.BlockCount * xATA.BlockSize / 1024 / 1024 + " MB"); //Partition Detecting Partition xPartition = null; if (BlockDevice.Devices.Count > 0) { for (int i = 0; i < BlockDevice.Devices.Count; i++) { var xDevice = BlockDevice.Devices[i]; if (xDevice is Partition) { xPartition = (Partition)xDevice; Console.WriteLine("FAT FS"); var xFS = new FAT.FatFileSystem(xPartition); Console.WriteLine("Mapping..."); FileSystem.AddMapping(xFS); Console.WriteLine(); Console.WriteLine("Root directory"); var xListing = xFS.GetRoot(); FAT.Listing.FatFile xRootFile = null; FAT.Listing.FatFile xKudzuFile = null; var xFile = default(FAT.Listing.FatFile); for (int j = 0; j < xListing.Count; j++) { var xItem = xListing[j]; if (xItem is Sys.Filesystem.Listing.Directory) { //Detecting Dir in HDD Console.WriteLine("<DIR> " + xListing[j].Name); } else if (xItem is Sys.Filesystem.Listing.File) { //Detecting File in HDD Console.WriteLine("<FILE> " + xListing[j].Name + " (" + xListing[j].Size + ")"); if (xListing[j].Name == "Root.txt") { xRootFile = (FAT.Listing.FatFile)xListing[j]; } else if (xListing[j].Name == "Kudzu.txt") { xKudzuFile = (FAT.Listing.FatFile)xListing[j]; } else if (xListing[j].Name == "Amanp.txt") { xFile = (FAT.Listing.FatFile)xListing[j]; } } } try { Console.WriteLine(); Console.WriteLine("StreamReader - Root File"); var xStream = new Sys.Filesystem.FAT.FatStream(xRootFile); var xData = new byte[xRootFile.Size]; xStream.Read(xData, 0, (int)xRootFile.Size); var xText = Encoding.ASCII.GetString(xData); Console.WriteLine(xText); } catch (Exception e) { Console.WriteLine("Error: " + e.Message); } var xKudzuStream = new Sys.Filesystem.FAT.FatStream(xKudzuFile); var xKudzuData = new byte[xKudzuFile.Size]; xKudzuStream.Read(xKudzuData, 0, (int)xKudzuFile.Size); if (xFile != null) { //var xFs = new Sys.Filesystem.FAT.FatStream(xFile); //xFs.Write(new byte[1024], 0, 1024); } } } } else { Console.WriteLine("No Block Device Found! "); } } catch (Exception e) { Console.WriteLine("Error: " + e.Message); } }
public void Mount() { // Detect a partition if (this.vlevel > 0) { Out.printf("+-- Mounting...\n"); } if (this.vlevel == 2) { Out.printf("| +-- Checking for partitions...\n"); } if (BlockDevice.Devices.Count > 0) { for (int i = 0; i < BlockDevice.Devices.Count; i++) { var xDevice = BlockDevice.Devices[i]; if (xDevice is Partition) { if (this.vlevel == 2) { Out.printf("| | +-- Partition found!\n"); } this.xPartition = (Partition)xDevice; this.xFS = new Cosmos.System.Filesystem.FAT.FatFileSystem(this.xPartition); if (this.vlevel > 0) { Out.printf("| +-- Mapping filesystem...\n"); } Sys.Filesystem.FileSystem.AddMapping("WITCHOS", this.xFS); this.xListing = xFS.GetRoot(); if (this.vlevel == 2) { Out.printf("| +-- Checking for root file...\n"); } for (int j = 0; j < xListing.Count; j++) { var xItem = xListing[j]; if (xItem is Sys.Filesystem.Listing.File && xItem.Name == "WOSFSROOT") { if (this.vlevel == 2) { Out.printf("| | +-- Root file found!\n"); } this.xRootFile = (Cosmos.System.Filesystem.FAT.Listing.FatFile) this.xListing[j]; break; } } if (this.vlevel == 2) { try { Out.printf("| | +-- Reading root file...\n"); if (this.xRootFile != null) { var xStream = new Sys.Filesystem.FAT.FatStream(this.xRootFile); var xData = new byte[this.xRootFile.Size]; xStream.Read(xData, 0, (int)this.xRootFile.Size); var xText = Encoding.ASCII.GetString(xData); Out.printf(xText); } else { Out.printf("| | | +-- Root file not found!\n"); } } catch (Exception ex) { Out.printf("Error: %s\n", ex.Message); } } else { try { if (this.xRootFile != null) { var xStream = new Sys.Filesystem.FAT.FatStream(this.xRootFile); var xData = new byte[this.xRootFile.Size]; xStream.Read(xData, 0, (int)this.xRootFile.Size); var xText = Encoding.ASCII.GetString(xData); } } catch (Exception ex) { //dewitcher.Core.Bluescreen.Init(ex, false); Out.printf("Error while reading root file: %s\n", ex.Message); } } } } } }
protected override void Run() { try { Console.ReadLine(); Console.WriteLine(); Console.WriteLine("Block devices found: " + BlockDevice.Devices.Count); AtaPio xATA = null; for (int i = 0; i < BlockDevice.Devices.Count; i++) { var xDevice = BlockDevice.Devices[i]; if (xDevice is AtaPio) { xATA = (AtaPio)xDevice; } } //Info Console.WriteLine("--------------------------"); Console.WriteLine("Type: " + (xATA.DriveType == AtaPio.SpecLevel.ATA ? "ATA" : "ATAPI")); Console.WriteLine("Serial No: " + xATA.SerialNo); Console.WriteLine("Firmware Rev: " + xATA.FirmwareRev); Console.WriteLine("Model No: " + xATA.ModelNo); Console.WriteLine("Block Size: " + xATA.BlockSize + " bytes"); Console.WriteLine("Size: " + xATA.BlockCount * xATA.BlockSize / 1024 / 1024 + " MB"); //Partition Detecting Partition xPartition = null; if (BlockDevice.Devices.Count > 0) { for (int i = 0; i < BlockDevice.Devices.Count; i++) { var xDevice = BlockDevice.Devices[i]; if (xDevice is Partition) { xPartition = (Partition)xDevice; Console.WriteLine("FAT FS"); var xFS = new FAT.FatFileSystem(xPartition); Console.WriteLine("Mapping..."); Sys.Filesystem.FileSystem.AddMapping("C", xFS); Console.WriteLine(); Console.WriteLine("Root directory"); var xListing = xFS.GetRoot(); FAT.Listing.FatFile xRootFile = null; FAT.Listing.FatFile xKudzuFile = null; for (int j = 0; j < xListing.Count; j++) { var xItem = xListing[j]; if (xItem is Sys.Filesystem.Listing.Directory) { //Detecting Dir in HDD Console.WriteLine("<DIR> " + xListing[j].Name); } else if (xItem is Sys.Filesystem.Listing.File) { //Detecting File in HDD Console.WriteLine("<FILE> " + xListing[j].Name + " (" + xListing[j].Size + ")"); if (xListing[j].Name == "Root.txt") { xRootFile = (FAT.Listing.FatFile)xListing[j]; } else if (xListing[j].Name == "Kudzu.txt") { xKudzuFile = (FAT.Listing.FatFile)xListing[j]; } } } try { Console.WriteLine(); Console.WriteLine("StreamReader - Root.txt File"); var xStream = new FAT.FatStream(xRootFile); var xData = new byte[xRootFile.Size]; xStream.Read(xData, 0, (int)xData.Length); var xText = Encoding.ASCII.GetString(xData); Console.WriteLine(xText); } catch (Exception e) { Console.WriteLine("Error: " + e.Message); } try { Console.WriteLine(); Console.WriteLine("StreamReader - Kudzu.txt File"); var xStream = new FAT.FatStream(xKudzuFile); var xData = new byte[xKudzuFile.Size]; xStream.Read(xData, 0, (int)xData.Length); var xText = Encoding.ASCII.GetString(xData); Console.WriteLine(xText); } catch (Exception e) { Console.WriteLine("Error: " + e.Message); } //var xKudzuStream = new Sys.Filesystem.FAT.FatStream(xKudzuFile); //var xKudzuData = new byte[xKudzuFile.Size]; //xKudzuStream.Read(xKudzuData, 0, (int)xKudzuFile.Size); try { //Console.WriteLine(); //Console.WriteLine("FileStream - Root File"); //var xRootFileStream = new System.IO.FileStream(@"c:\Root.txt", System.IO.FileMode.Open); //var xData = new byte[xRootFileStream.Length]; //xRootFileStream.Read(xData, 0, (int)xRootFile.Size); //var xText = Encoding.ASCII.GetString(xData); //Console.WriteLine(xText); } catch (Exception e) { Console.WriteLine("Error: " + e.Message); } } } } else { Console.WriteLine("No Block Device Found! "); } } catch (Exception e) { Console.WriteLine("Error: " + e.Message); } }