Ejemplo n.º 1
0
        public bool VerifyCRC(CryptoSystem fq)
        {
            if (Header.HasFlag(PacketHeaderFlags.EncryptedChecksum))
            {
                var key = ((Header.Checksum - headerChecksum) ^ payloadChecksum);
                if (fq.Search(key))
                {
                    fq.ConsumeKey(key);
                    return(true);
                }
            }
            else
            {
                if (headerChecksum + payloadChecksum == Header.Checksum)
                {
                    packetLog.DebugFormat("{0}", this);
                    return(true);
                }

                packetLog.DebugFormat("{0}, Checksum Failed", this);
            }

            NetworkStatistics.C2S_CRCErrors_Aggregate_Increment();

            return(false);
        }
Ejemplo n.º 2
0
        private bool VerifyEncryptedCRC(CryptoSystem fq, out string keyOffsetForLogging)
        {
            var verifiedKey = new Tuple <int, uint>(0, 0);

            uint receivedKey = (Header.Checksum - headerChecksum) ^ payloadChecksum;

            Func <Tuple <int, uint>, bool> cbSearch = new Func <Tuple <int, uint>, bool>((pair) =>
            {
                if (receivedKey == pair.Item2)
                {
                    verifiedKey = pair;
                    return(true);
                }

                return(false);
            });

            if (fq.Search(cbSearch))
            {
                keyOffsetForLogging = verifiedKey.Item1.ToString();
                return(true);
            }

            keyOffsetForLogging = "???";
            return(false);
        }
Ejemplo n.º 3
0
        private bool VerifyEncryptedCRC(CryptoSystem fq, out string keyOffsetForLogging, bool rangeAdvance)
        {
            var verifiedKey = new Tuple <int, uint>(0, 0);
            Func <Tuple <int, uint>, bool> cbSearch = new Func <Tuple <int, uint>, bool>((pair) =>
            {
                if (VerifyChecksum(pair.Item2))
                {
                    verifiedKey = pair;
                    return(true);
                }
                else
                {
                    return(false);
                }
            });

            if (fq.Search(cbSearch, rangeAdvance))
            {
                keyOffsetForLogging = verifiedKey.Item1.ToString();
                return(true);
            }
            keyOffsetForLogging = "???";
            return(false);
        }