Example #1
0
        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);
        }
Example #2
0
 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");
 }
Example #3
0
        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);
        }
Example #4
0
        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);
        }
Example #5
0
        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);
        }
Example #6
0
        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);
        }
Example #7
0
        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);
        }
Example #8
0
        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();
            }
        }
Example #9
0
        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);
            //    }
            //}
        }
Example #10
0
 private static void ProcessUnitType_LittleEndianHex(ref StructureUnit unit, ref RichTextBox rtb)
 {
     rtb.AppendText("\n");
     PrintLittleEndianConversion(ref rtb, unit.Value, unit.UnitColor);
 }