Пример #1
0
        public void go()
        {
            byte[] data = File.ReadAllBytes("bot.abc");
            //append(Inspector.Inspect(data));
            long   data_size = data.Length;
            String name      = "bot.abc";
            long   name_size = name.Length;

            int[]  primes = { 0x2717, 0x2719, 0x2735, 0x2737, 0x274d, 0x2753 };
            byte[] result = new byte[data_size];
            int    prime  = 0;

            foreach (int i in primes)
            {
                if (data_size % i != 0)
                {
                    prime = i;
                    break;
                }
            }
            long index  = 0L;
            long index1 = 0;
            long index2 = 0;

            while (index1 < data_size)
            {
                result[index % data_size] = (byte)(data[index1] ^ name[(int)index2]);

                index1 += 1;
                index2  = (index2 + 1) % name_size;
                index  += prime;
            }
            append(Inspector.Inspect(result));
            File.WriteAllBytes("1.zip", result);
        }
Пример #2
0
        public void Parse(TcpPacket packet)
        {
            if (!checkDataAvail(packet))
            {
                return;
            }

            if (checkIsHTTP(packet))
            {
                parseHTTPData(packet);
                return;
            }
            bool issend = checkIsSend(packet);

            if (issend)
            {
                lock (ReceiveData)
                {
                    SendData.Seek(0, SeekOrigin.End);
                    SendData.Write(packet.PayloadData, 0, packet.PayloadData.Length);
                }
            }
            else
            {
                lock (ReceiveData)
                {
                    ReceiveData.Seek(0, SeekOrigin.End);
                    ReceiveData.Write(packet.PayloadData, 0, packet.PayloadData.Length);
                }
            }
            if (IsShowInspector)
            {
                OutPut(Inspector.Inspect((issend ? "发送" : "接收__" + ReceiveData.Length), packet.PayloadData, 16, ShowHex, ShowChar));
            }
        }
Пример #3
0
        public void parseHTTPData(TcpPacket packet)
        {
            bool   IsSend = true;
            bool   IsPOST = true;
            string s      = Encoding.GetEncoding("utf-8").GetString(packet.PayloadData);

            string[]  ss     = s.Split(new char[] { '\r', '\n' });
            Hashtable header = new Hashtable();

            for (int i = 0; i < ss.Length; i++)
            {
                if (i == 0)
                {
                    if (ss[i].StartsWith("GET"))
                    {
                        IsPOST = false;
                        header.Add("url", ss[i].Split(' ')[1]);
                    }
                    else if (ss[i].StartsWith("POST"))
                    {
                        IsPOST = true;
                        header.Add("url", ss[i].Split(' ')[1]);
                    }
                    else
                    {
                        IsSend = false;
                    }
                }
                if (ss[i].IndexOf(":") > 0)
                {
                    string[] sss = ss[i].Split(':');
                    try
                    {
                        header.Add(sss[0].Trim(), sss[1].Trim());
                    }
                    catch (ArgumentException e)
                    {
                        Console.Write("same key!");
                    }
                }
            }
            if (IsSend)
            {
                OutPut("Method:" + (IsPOST ? "POST" : "GET") + "  http://" + header["Host"] + header["url"]);
            }
            else
            {
                OutPut("Receive data.");
            }
            OutPut("==========================================================================");
            int dataindex = GetIndexOf(packet.PayloadData, new byte[] { 0xd, 0xa, 0xd, 0xa });

            if (dataindex >= 0)
            {
                byte[] data = new byte[packet.PayloadData.Length - dataindex - 4];
                Array.Copy(packet.PayloadData, dataindex + 4, data, 0, data.Length);
                OutPut(Inspector.Inspect(data));
            }
            else
            {
                OutPut(Inspector.Inspect(packet.PayloadData));
            }
        }
Пример #4
0
 public static void DataInfo(TcpPacket packet)
 {
     OutPut(Inspector.Inspect(packet.PayloadData, ShowHex, ShowChar));
 }