コード例 #1
0
ファイル: LZNT1.cs プロジェクト: pirenga/CVE-2020-1206-POC
        public static LZNT1_Literal GenerateFromLZ77Literal(LZ77Literal literal, ref int processedBytes)
        {
            var result = new LZNT1_Literal();

            result.Literal = literal.Literal;
            processedBytes++;
            return(result);
        }
コード例 #2
0
        /// <summary>
        /// Encode data into LZ77 symbols.
        /// </summary>
        /// <param name="data">Byte array containing data to be encoded.</param>
        /// <returns>Array containing LZ77 symbols.</returns>
        public List <LZ77Symbol> Encode(byte[] data)
        {
            var hash = new LZ77HashTable();

            int i = 0;

            var result = new List <LZ77Symbol>();

            while (i < data.Length)
            {
                LZ77Symbol symbol;
                int        location = hash.Match(data, i);
                var        distance = i - location;
                if (distance > 0 && distance <= MaximumMatchDistance)
                {
                    int len = 0;
                    int k   = location;
                    for (int j = i; j < data.Length; j++)
                    {
                        if (len > MaximumMatchLength)
                        {
                            break;
                        }
                        if (data[k] == data[j])
                        {
                            hash.Match(data, j);
                            k++;
                            len++;
                        }
                        else
                        {
                            break;
                        }
                    }
                    symbol = new LZ77Match()
                    {
                        Length = len, Distance = distance
                    };
                    i += len;
                }
                else
                {
                    symbol = new LZ77Literal()
                    {
                        Literal = data[i]
                    };
                    i++;
                }
                result.Add(symbol);
            }

            var eof = new LZ77EOF();

            result.Add(eof);

            return(result);
        }
コード例 #3
0
ファイル: LZNT1.cs プロジェクト: pirenga/CVE-2020-1206-POC
        public override LZ77Symbol ParseToLZ77Symbol(ref int processedBytes)
        {
            var result = new LZ77Literal()
            {
                Literal = Literal
            };

            processedBytes++;
            return(result);
        }