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); }
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)); } }
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)); } }
public static void DataInfo(TcpPacket packet) { OutPut(Inspector.Inspect(packet.PayloadData, ShowHex, ShowChar)); }