Exemplo n.º 1
0
        /// <summary>
        /// Convert from an array
        /// </summary>
        /// <param name="data">The data array</param>        
        public override void FromArray(byte[] data)
        {
            IDataStringParser convert = (IDataStringParser)CreateConverter();
            BinaryEncoding encoding = new BinaryEncoding();

            try
            {
                convert.FromString(encoding.GetString(data), this, GetLogger());
            }
            catch (Exception ex)
            {
                GetLogger().LogException(ex);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Converts key to an array
        /// </summary>
        /// <returns>The data</returns>
        public override byte[] ToArray()
        {
            IDataStringParser convert = (IDataStringParser)CreateConverter();
            BinaryEncoding encoding = new BinaryEncoding();
            byte[] ret = new byte[0];

            try
            {
                ret = encoding.GetBytes(convert.ToString(this, GetLogger()));
            }
            catch (Exception ex)
            {
                GetLogger().LogException(ex);
            }

            return ret;
        }
Exemplo n.º 3
0
        /// <summary>
        /// Set the data to difference
        /// </summary>
        /// <param name="left">The left data</param>
        /// <param name="right">The right data</param>
        public void SetData(DataNode left, DataNode right)
        {
            _left = left.ToArray();
            _right = right.ToArray();

            BinaryEncoding enc = new BinaryEncoding(true);

            string leftStr = left.ToDataString();
            string rightStr = right.ToDataString();

            leftStr = leftStr.Replace('\0', ' ');
            rightStr = rightStr.Replace('\0', ' ');

            _leftlines = SplitLines(leftStr);
            _rightlines = SplitLines(rightStr);

            richTextBoxLeft.Lines = _leftlines;
            richTextBoxRight.Lines = _rightlines;

            hexEditorControlLeft.Bytes = _left;
            hexEditorControlRight.Bytes = _right;
        }
Exemplo n.º 4
0
        private void DoFind(InlineSearchControl.SearchEventArgs e, bool next)
        {
            bool found = false;

            if (radioButtonHex.Checked)
            {
                byte[] data;

                if (e.Data != null)
                {
                    data = e.Data;
                }
                else
                {
                    data = new BinaryEncoding().GetBytes(e.Text);
                }

                found = hexEditorControl.FindAndSelect(data, next);
            }
            else
            {
                string s;

                if (e.Text != null)
                {
                    s = e.Text;
                }
                else
                {
                    s = new BinaryEncoding().GetString(e.Data);
                }

                found = textEditorControl.FindAndSelect(s, next);
            }

            if (!found)
            {
                MessageBox.Show(this, CANAPE.Properties.Resources.BinaryDataEditorControl_NoMatch,
                    CANAPE.Properties.Resources.BinaryDataEditorControl_NoMatchCaption,
                    MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
        /// <summary>
        /// Converts encoding to an encoding object
        /// </summary>
        /// <param name="encoding"></param>
        /// <returns></returns>
        protected static Encoding GetEncodingFromType(FilterStringEncoding encoding)
        {
            Encoding ret;

            switch (encoding)
            {
                case FilterStringEncoding.ASCII:
                    ret = new BinaryEncoding();
                    break;
                case FilterStringEncoding.UTF16_BE:
                    ret = new UnicodeEncoding(true, false);
                    break;
                case FilterStringEncoding.UTF16_LE:
                    ret = new UnicodeEncoding(false, false);
                    break;
                case FilterStringEncoding.UTF32_BE:
                    ret = new UTF32Encoding(true, false);
                    break;
                case FilterStringEncoding.UTF32_LE:
                    ret = new UTF32Encoding(false, false);
                    break;
                case FilterStringEncoding.UTF8:
                    ret = new UTF8Encoding();
                    break;
                case FilterStringEncoding.UTF7:
                    ret = new UTF7Encoding();
                    break;
                default:
                    throw new ArgumentException(Properties.Resources.StringDataFrameFilterFactory_GetEncodigFromTypeException);
            }

            return ret;
        }
Exemplo n.º 6
0
        private static void WriteStringPart(string value, DataWriter writer, Dictionary<string, int> stringCache)
        {
            Encoding encoding = new BinaryEncoding();

            if (String.IsNullOrEmpty(value) || (value == "."))
            {
                writer.Write(0);
            }
            else
            {
                if (stringCache.ContainsKey(value))
                {
                    ushort pos = (ushort)(0xC000 | stringCache[value]);
                    writer.WriteUInt16(pos, false);
                }
                else
                {
                    string[] values = value.Split(new[] { '.' }, 2, StringSplitOptions.RemoveEmptyEntries);

                    if (values[0].Length > 63)
                    {
                        throw new InvalidDataException("DNS names components cannot be longer than 63 characters");
                    }

                    long currPos = writer.GetStream().Position;
                    writer.Write((byte)(values[0].Length & 0x3F));
                    writer.Write(values[0]);
                    stringCache.Add(value, (int)currPos);

                    if (values.Length > 1)
                    {
                        WriteStringPart(values[1], writer, stringCache);
                    }
                    else
                    {
                        WriteStringPart(null, writer, stringCache);
                    }
                }
            }
        }
Exemplo n.º 7
0
        private static string ReadString(byte[] data, DataReader reader)
        {
            Encoding encoding = new BinaryEncoding();
            StringBuilder name = new StringBuilder();
            int len = reader.ReadByte();

            while (len != 0)
            {
                if ((len & 0xC0) != 0)
                {
                    int ofs = (len & ~0xC0) << 8;

                    ofs |= reader.ReadByte();

                    MemoryStream stm = new MemoryStream(data);
                    stm.Position = ofs;

                    name.Append(ReadString(data, new DataReader(stm)));

                    break;
                }
                else
                {
                    name.Append(reader.Read(len)).Append(".");
                }

                len = reader.ReadByte();
            }

            return name.ToString();
        }