public List <FatDirectoryArea> LongFileNames = new List <FatDirectoryArea>(); //if any public bool GetAttributeStatus(StructureUnit aUnitWithAttributes, FileAttribute attribute) { byte val = Conversion.HexToByteArray(aUnitWithAttributes.Value)[0]; var mask = ((byte)attribute & val); return(mask == (byte)attribute); }
private static void ProcessUnitType_Ascii(ref StructureUnit unit, ref RichTextBox rtb) { rtb.AppendText("\n"); rtb.AppendText($"\t\tASCII representation:".PadRight(padRightLarge) + $"{Conversion.HexToAscii(unit.Value)}", unit.UnitColor); //rtb.AppendText("\n"); }
private static void ProcessUnitType_TimeTenthofSeconds(ref StructureUnit unit, ref RichTextBox rtb) { var valueDecimal = Conversion.HexLittleEndianToInt(unit.Value); rtb.AppendText("\n"); rtb.AppendText($"\t\tValue in Tenth of Seconds:".PadRight(padRightLittle) + $"{valueDecimal}", unit.UnitColor); }
private static void ProcessUnitType_SizeInBytes(ref StructureUnit unit, ref RichTextBox rtb) { var bigEndian = Conversion.ConvertLittleEndianToBigEndianandViceVersa(unit.Value); var valueDecimal = Conversion.HexLittleEndianToInt(unit.Value); rtb.AppendText("\n"); rtb.AppendText($"\t\tSize in Bytes:\t" + $"0x{bigEndian} == {valueDecimal} (D)", unit.UnitColor); }
private static void ProcessUnitType_SizeInSectorsLittleEndian(ref StructureUnit unit, ref RichTextBox rtb) { PrintLittleEndianConversion(ref rtb, unit.Value, unit.UnitColor); var valueDecimal = Conversion.HexLittleEndianToInt(unit.Value); var location = valueDecimal * Common.BlockSizeInBytes; rtb.AppendText($"\n\t\tMultiply by sector size({Common.BlockSizeInBytes} bytes):".PadRight(padRightLarge) + $"0x{location.ToString("X8")} == {location} (D) ", unit.UnitColor); }
private static void ProcessUnitType_TimeHms(ref StructureUnit unit, ref RichTextBox rtb) { string binary = Helpers.Conversion.HexToBinaryLittleEndian(unit.Value); var second = (2 * Helpers.Conversion.BinaryToInt(binary.Substring(16 - 5, 5))).ToString(); var minute = Helpers.Conversion.BinaryToInt(binary.Substring(16 - 5 - 6, 6)); var hour = (Helpers.Conversion.BinaryToInt(binary.Substring(16 - 5 - 6 - 5, 5))).ToString(); rtb.AppendText("\n"); rtb.AppendText($"\t\t Hour:Minute:Second = {hour}:{minute}:{second}", unit.UnitColor); }
private static void ProcessUnitType_Date(ref StructureUnit unit, ref RichTextBox rtb) { string binary = Helpers.Conversion.HexToBinaryLittleEndian(unit.Value); var day = (Helpers.Conversion.BinaryToInt(binary.Substring(16 - 5, 5))).ToString(); var month = Helpers.Conversion.BinaryToInt(binary.Substring(16 - 9, 4)); var year = (1980 + Helpers.Conversion.BinaryToInt(binary.Substring(0, 7))).ToString(); rtb.AppendText("\n"); rtb.AppendText($"\t\t Day/Month/Year = {day}/{month}/{year}", unit.UnitColor); }
private static void ProcessUnitType(StructureUnit unit, ref RichTextBox rtb) { switch (unit.Type) { case UnitType.Default: break; case UnitType.Vbr: break; case UnitType.SizeInSectorsLittleEndian: ProcessUnitType_SizeInSectorsLittleEndian(ref unit, ref rtb); break; case UnitType.LittleEndianHex: ProcessUnitType_LittleEndianHex(ref unit, ref rtb); break; case UnitType.Ascii: ProcessUnitType_Ascii(ref unit, ref rtb); break; case UnitType.TimeTenthofSeconds: ProcessUnitType_TimeTenthofSeconds(ref unit, ref rtb); break; case UnitType.TimeHms: ProcessUnitType_TimeHms(ref unit, ref rtb); break; case UnitType.Day: ProcessUnitType_Date(ref unit, ref rtb); break; case UnitType.SizeInBytes: ProcessUnitType_SizeInBytes(ref unit, ref rtb); break; case UnitType.FatDirectoryEntryAttributes: ProcessUnitType_FatDirectoryEntryAttributes(ref unit, ref rtb); break; default: throw new ArgumentOutOfRangeException(); } }
private static void ProcessUnitType_FatDirectoryEntryAttributes(ref StructureUnit unit, ref RichTextBox rtb) { rtb.AppendText("\n"); rtb.AppendText($"\t\tFlags[", unit.UnitColor); string toPrint = ""; foreach (var anAttribute in Enum.GetValues(typeof(FileAttribute))) { //_logger.LogMessage($"{at.ToString()} : {at} : {(byte)at}",LogMsgType.Debug); byte val = Conversion.HexToByteArray(unit.Value)[0]; var mask = ((byte)anAttribute & val); if (mask == (byte)anAttribute) { if (!string.IsNullOrEmpty(toPrint)) { toPrint += "+"; } toPrint += anAttribute; } } rtb.AppendText($"{toPrint}]", unit.UnitColor); //List<Tuple<byte, string>> masksList = new List<Tuple<byte, string>> //{ // new Tuple<byte, string>(0x01, "Read Only"), // new Tuple<byte, string>(0x02, "Hidden File"), // new Tuple<byte, string>(0x04, "System File"), // new Tuple<byte, string>(0x08, "Volume Label"), // new Tuple<byte, string>(0x0f, "Long File Name"), // new Tuple<byte, string>(0x10, "Directory"), // new Tuple<byte, string>(0x20, "Archive") //}; //rtb.AppendText("\n"); //rtb.AppendText($"\t\tFlags[",unit.UnitColor); //foreach (var tuple in masksList) //{ // byte val= Conversion.HexToByteArray(unit.Value)[0]; // var mask = (tuple.Item1 & val); // if (mask == tuple.Item1) // { // rtb.AppendText($"{tuple.Item2}+",unit.UnitColor); // } //} }
private static void ProcessUnitType_LittleEndianHex(ref StructureUnit unit, ref RichTextBox rtb) { rtb.AppendText("\n"); PrintLittleEndianConversion(ref rtb, unit.Value, unit.UnitColor); }