Пример #1
0
        public static string PostData(string code)
        {
            StringBuilder postData = new StringBuilder();

            postData.Append("code=" + code + "&");
            postData.Append("client_id=" + ConfigurationManager.AppSettings["CLIENT_ID"] + "&");
            string secret = "12:" + ConfigurationManager.AppSettings["client_secret"].ToString() + "@1234";

            string aesSecret = "";

            try
            {
                aesSecret = Crypto.AESEncrypt(secret, ConfigurationManager.AppSettings["CLIENT_TOKEN"].ToString());
            }
            catch (Exception ex)
            {
                return(ex.Message);
            }



            postData.Append("client_secret=" + aesSecret + "&");
            postData.Append("grant_type=" + "authorization_code" + "&");
            postData.Append("redirect_uri=" + ConfigurationManager.AppSettings["CLIENT_CALLBACK_URI"]);



            return(postData.ToString());
        }
Пример #2
0
 private static byte[] Encrypt(byte[] data, int messageEncryptType, String aesKey)
 {
     if (messageEncryptType == MessageEncryptType.MD5)
     {
         byte[]       md5Data      = Crypto.MD5(data);
         MemoryStream memoryStream = new MemoryStream();
         try
         {
             memoryStream.Write(data, 0, data.Length);
             memoryStream.Write(md5Data, 0, md5Data.Length);
             return(memoryStream.ToArray());
         }
         finally
         {
             memoryStream.Close();
         }
     }
     else if (messageEncryptType == MessageEncryptType.AES)
     {
         if (aesKey == null)
         {
             return(null);
         }
         if (data.Length <= 15)
         {
             return(data);
         }
         byte[] realData = new byte[data.Length - 15];
         Array.Copy(data, 15, realData, 0, data.Length - 15);
         byte[]       aesData      = Crypto.AESEncrypt(realData, aesKey);
         MemoryStream memoryStream = new MemoryStream();
         try
         {
             memoryStream.Write(data, 0, data.Length);
             memoryStream.Write(aesData, 0, aesData.Length);
             return(memoryStream.ToArray());
         }
         finally
         {
             memoryStream.Close();
         }
     }
     else
     {
         return(data);
     }
 }
Пример #3
0
        public void TestMethod_Crypto()
        {
            //要加密的原始数据
            byte[] data = new byte[1024 * 1024 + 7];//假设有一个1M大的文件
            for (int i = 0; i < data.Length; i++)
            {
                data[i] = (byte)(i % 256);
            }

            //使用xuexue这个文本来随便生成一个密钥
            MemoryStream msKey = new MemoryStream();
            StreamWriter sw    = new StreamWriter(msKey);

            while (msKey.Length < 16)
            {
                sw.Write("xuexue");
                sw.Flush();
            }
            msKey.SetLength(16);

            byte[] key = msKey.ToArray();//生成一个16字节的密钥


            MemoryStream msIn  = new MemoryStream(data); //使用原始数据生成一个流
            MemoryStream msAES = new MemoryStream();     //加密后的数据
            int          elen  = Crypto.AESEncrypt(msIn, data.Length, msAES, key);

            msAES.Position = 0;                           //把加密后的数据流置回头

            MemoryStream msEDResult = new MemoryStream(); //解密的结果流
            int          dlen       = Crypto.AESDecrypt(msAES, msEDResult, key);

            byte[] dataEDResult = msEDResult.ToArray();

            //确认结果和原先是否一致
            Assert.IsTrue(data.Length == dataEDResult.Length);
            for (int i = 0; i < data.Length; i++)
            {
                Assert.IsTrue(data[i] == dataEDResult[i]);
            }
        }
Пример #4
0
        /// <inheritdoc />
        public override void Process(BotData data)
        {
            base.Process(data);

            var localInputStrings = ReplaceValuesRecursive(inputString, data);
            var outputs           = new List <string>();

            for (int i = 0; i < localInputStrings.Count; i++)
            {
                var localInputString = localInputStrings[i];
                var outputString     = "";

                switch (FunctionType)
                {
                case Function.Constant:
                    outputString = localInputString;
                    break;

                case Function.Base64Encode:
                    outputString = localInputString.ToBase64();
                    break;

                case Function.Base64Decode:
                    outputString = localInputString.FromBase64();
                    break;

                case Function.HTMLEntityEncode:
                    outputString = WebUtility.HtmlEncode(localInputString);
                    break;

                case Function.HTMLEntityDecode:
                    outputString = WebUtility.HtmlDecode(localInputString);
                    break;

                case Function.Hash:
                    outputString = GetHash(localInputString, hashType).ToLower();
                    break;

                case Function.HMAC:
                    outputString = Hmac(localInputString, hashType, ReplaceValues(hmacKey, data), hmacBase64, keyBase64);
                    break;

                case Function.Translate:
                    outputString = localInputString;
                    foreach (var entry in TranslationDictionary.OrderBy(e => e.Key.Length).Reverse())
                    {
                        if (outputString.Contains(entry.Key))
                        {
                            outputString = outputString.Replace(entry.Key, entry.Value);
                            if (StopAfterFirstMatch)
                            {
                                break;
                            }
                        }
                    }
                    break;

                case Function.DateToUnixTime:
                    outputString = localInputString.ToDateTime(dateFormat).ToUnixTimeSeconds().ToString();
                    break;

                case Function.Length:
                    outputString = localInputString.Length.ToString();
                    break;

                case Function.ToLowercase:
                    outputString = localInputString.ToLower();
                    break;

                case Function.ToUppercase:
                    outputString = localInputString.ToUpper();
                    break;

                case Function.Replace:
                    if (useRegex)
                    {
                        outputString = Regex.Replace(localInputString, ReplaceValues(replaceWhat, data), ReplaceValues(replaceWith, data));
                    }
                    else
                    {
                        outputString = localInputString.Replace(ReplaceValues(replaceWhat, data), ReplaceValues(replaceWith, data));
                    }
                    break;

                case Function.RegexMatch:
                    outputString = Regex.Match(localInputString, ReplaceValues(regexMatch, data)).Value;
                    break;

                case Function.Unescape:
                    outputString = Regex.Unescape(localInputString);
                    break;

                case Function.URLEncode:
                    // The maximum allowed Uri size is 2083 characters, we use 2080 as a precaution
                    outputString = string.Join("", SplitInChunks(localInputString, 2080).Select(s => Uri.EscapeDataString(s)));
                    break;

                case Function.URLDecode:
                    outputString = Uri.UnescapeDataString(localInputString);
                    break;

                case Function.UnixTimeToDate:
                    outputString = double.Parse(localInputString).ToDateTime().ToString(dateFormat);
                    break;

                case Function.CurrentUnixTime:
                    outputString = DateTime.UtcNow.ToUnixTimeSeconds().ToString();
                    break;

                case Function.UnixTimeToISO8601:
                    outputString = double.Parse(localInputString).ToDateTime().ToISO8601();
                    break;

                case Function.RandomNum:
                    var min             = int.Parse(ReplaceValues(randomMin, data));
                    var max             = int.Parse(ReplaceValues(randomMax, data));
                    var randomNumString = data.random.Next(min, max).ToString();
                    outputString = randomZeroPad ? randomNumString.PadLeft(max.ToString().Length, '0') : randomNumString;
                    break;

                case Function.RandomString:
                    outputString = localInputString;
                    outputString = Regex.Replace(outputString, @"\?l", m => _lowercase[data.random.Next(_lowercase.Length)].ToString());
                    outputString = Regex.Replace(outputString, @"\?u", m => _uppercase[data.random.Next(_uppercase.Length)].ToString());
                    outputString = Regex.Replace(outputString, @"\?d", m => _digits[data.random.Next(_digits.Length)].ToString());
                    outputString = Regex.Replace(outputString, @"\?s", m => _symbols[data.random.Next(_symbols.Length)].ToString());
                    outputString = Regex.Replace(outputString, @"\?h", m => _hex[data.random.Next(_hex.Length)].ToString());
                    outputString = Regex.Replace(outputString, @"\?a", m => _allChars[data.random.Next(_allChars.Length)].ToString());
                    outputString = Regex.Replace(outputString, @"\?m", m => _udChars[data.random.Next(_udChars.Length)].ToString());
                    outputString = Regex.Replace(outputString, @"\?i", m => _ludChars[data.random.Next(_ludChars.Length)].ToString());
                    break;

                case Function.Ceil:
                    outputString = Math.Ceiling(Decimal.Parse(localInputString, _style, _provider)).ToString();
                    break;

                case Function.Floor:
                    outputString = Math.Floor(Decimal.Parse(localInputString, _style, _provider)).ToString();
                    break;

                case Function.Round:
                    outputString = Math.Round(Decimal.Parse(localInputString, _style, _provider), 0, MidpointRounding.AwayFromZero).ToString();
                    break;

                case Function.Compute:
                    outputString = new DataTable().Compute(localInputString.Replace(',', '.'), null).ToString();
                    break;

                case Function.CountOccurrences:
                    outputString = CountStringOccurrences(localInputString, stringToFind).ToString();
                    break;

                case Function.ClearCookies:
                    data.Cookies.Clear();
                    break;

                case Function.RSAEncrypt:
                    outputString = Crypto.RSAEncrypt(
                        localInputString,
                        ReplaceValues(RsaN, data),
                        ReplaceValues(RsaE, data),
                        RsaOAEP
                        );
                    break;

                /*
                 * case Function.RSADecrypt:
                 * outputString = Crypto.RSADecrypt(
                 *  localInputString,
                 *  ReplaceValues(RsaN, data),
                 *  ReplaceValues(RsaD, data),
                 *  RsaOAEP
                 *  );
                 * break;
                 */

                case Function.RSAPKCS1PAD2:
                    outputString = Crypto.RSAPkcs1Pad2(
                        localInputString,
                        ReplaceValues(RsaN, data),
                        ReplaceValues(RsaE, data)
                        );
                    break;

                case Function.Delay:
                    try { Thread.Sleep(int.Parse(localInputString)); } catch { }
                    break;

                case Function.CharAt:
                    outputString = localInputString.ToCharArray()[int.Parse(ReplaceValues(charIndex, data))].ToString();
                    break;

                case Function.Substring:
                    outputString = localInputString.Substring(int.Parse(ReplaceValues(substringIndex, data)), int.Parse(ReplaceValues(substringLength, data)));
                    break;

                case Function.ReverseString:
                    char[] charArray = localInputString.ToCharArray();
                    Array.Reverse(charArray);
                    outputString = new string(charArray);
                    break;

                case Function.Trim:
                    outputString = localInputString.Trim();
                    break;

                case Function.GetRandomUA:
                    if (UserAgentSpecifyBrowser)
                    {
                        outputString = UserAgent.ForBrowser(UserAgentBrowser);
                    }
                    else
                    {
                        outputString = UserAgent.Random(data.random);
                    }
                    break;

                case Function.AESEncrypt:
                    outputString = Crypto.AESEncrypt(localInputString, ReplaceValues(aesKey, data), ReplaceValues(aesIV, data), AesMode, AesPadding);
                    break;

                case Function.AESDecrypt:
                    outputString = Crypto.AESDecrypt(localInputString, ReplaceValues(aesKey, data), ReplaceValues(aesIV, data), AesMode, AesPadding);
                    break;

                case Function.PBKDF2PKCS5:
                    outputString = Crypto.PBKDF2PKCS5(localInputString, ReplaceValues(KdfSalt, data), KdfSaltSize, KdfIterations, KdfKeySize, KdfAlgorithm);
                    break;
                }

                data.Log(new LogEntry(string.Format("Executed function {0} on input {1} with outcome {2}", functionType, localInputString, outputString), Colors.GreenYellow));

                // Add to the outputs
                outputs.Add(outputString);
            }

            var isList = outputs.Count > 1 || InputString.Contains("[*]") || InputString.Contains("(*)") || InputString.Contains("{*}");

            InsertVariable(data, isCapture, isList, outputs, variableName, "", "", false, true);
        }
Пример #5
0
        /// <inheritdoc />
        public override async Task Process(LSGlobals ls)
        {
            var data = ls.BotData;
            await base.Process(ls);

            var localInputStrings = ReplaceValuesRecursive(InputString, ls);
            var outputs           = new List <string>();

            for (var i = 0; i < localInputStrings.Count; i++)
            {
                var localInputString = localInputStrings[i];
                var outputString     = "";

                switch (FunctionType)
                {
                case Function.Constant:
                    outputString = localInputString;
                    break;

                case Function.Base64Encode:
                    outputString = Base64Converter.ToBase64String(Encoding.UTF8.GetBytes(localInputString));
                    break;

                case Function.Base64Decode:
                    outputString = Encoding.UTF8.GetString(Base64Converter.ToByteArray(localInputString));
                    break;

                case Function.HTMLEntityEncode:
                    outputString = WebUtility.HtmlEncode(localInputString);
                    break;

                case Function.HTMLEntityDecode:
                    outputString = WebUtility.HtmlDecode(localInputString);
                    break;

                case Function.Hash:
                    outputString = GetHash(localInputString, HashType, InputBase64).ToLower();
                    break;

                case Function.HMAC:
                    outputString = Hmac(localInputString, HashType, ReplaceValues(HmacKey, ls), InputBase64, KeyBase64, HmacBase64);
                    break;

                case Function.Translate:
                    outputString = localInputString;
                    foreach (var entry in TranslationDictionary.OrderBy(e => e.Key.Length).Reverse())
                    {
                        if (outputString.Contains(entry.Key))
                        {
                            outputString = outputString.Replace(entry.Key, entry.Value);
                            if (StopAfterFirstMatch)
                            {
                                break;
                            }
                        }
                    }
                    break;

                case Function.DateToUnixTime:
                    outputString = localInputString.ToDateTime(DateFormat).ToUnixTime().ToString();
                    break;

                case Function.Length:
                    outputString = localInputString.Length.ToString();
                    break;

                case Function.ToLowercase:
                    outputString = localInputString.ToLower();
                    break;

                case Function.ToUppercase:
                    outputString = localInputString.ToUpper();
                    break;

                case Function.Replace:
                    outputString = UseRegex
                            ? Regex.Replace(localInputString, ReplaceValues(ReplaceWhat, ls), ReplaceValues(ReplaceWith, ls))
                            : localInputString.Replace(ReplaceValues(ReplaceWhat, ls), ReplaceValues(ReplaceWith, ls));
                    break;

                case Function.RegexMatch:
                    outputString = Regex.Match(localInputString, ReplaceValues(RegexMatch, ls)).Value;
                    break;

                case Function.Unescape:
                    outputString = Regex.Unescape(localInputString);
                    break;

                case Function.URLEncode:
                    // The maximum allowed Uri size is 2083 characters, we use 2080 as a precaution
                    outputString = string.Join("", SplitInChunks(localInputString, 2080).Select(s => Uri.EscapeDataString(s)));
                    break;

                case Function.URLDecode:
                    outputString = Uri.UnescapeDataString(localInputString);
                    break;

                case Function.UnixTimeToDate:
                    outputString = long.Parse(localInputString).ToDateTimeUtc().ToString(DateFormat);
                    break;

                case Function.CurrentUnixTime:
                    outputString = DateTime.UtcNow.ToUnixTime().ToString();
                    break;

                case Function.UnixTimeToISO8601:
                    outputString = long.Parse(localInputString).ToDateTimeUtc().ToISO8601();
                    break;

                case Function.RandomNum:
                    var min             = int.Parse(ReplaceValues(RandomMin, ls));
                    var max             = int.Parse(ReplaceValues(RandomMax, ls));
                    var randomNumString = data.Random.Next(min, max).ToString();
                    outputString = RandomZeroPad ? randomNumString.PadLeft(max.ToString().Length, '0') : randomNumString;
                    break;

                case Function.RandomString:
                    outputString = localInputString;
                    outputString = Regex.Replace(outputString, @"\?l", m => _lowercase[data.Random.Next(_lowercase.Length)].ToString());
                    outputString = Regex.Replace(outputString, @"\?u", m => _uppercase[data.Random.Next(_uppercase.Length)].ToString());
                    outputString = Regex.Replace(outputString, @"\?d", m => _digits[data.Random.Next(_digits.Length)].ToString());
                    outputString = Regex.Replace(outputString, @"\?s", m => _symbols[data.Random.Next(_symbols.Length)].ToString());
                    outputString = Regex.Replace(outputString, @"\?h", m => _hex[data.Random.Next(_hex.Length)].ToString());
                    outputString = Regex.Replace(outputString, @"\?a", m => _allChars[data.Random.Next(_allChars.Length)].ToString());
                    outputString = Regex.Replace(outputString, @"\?m", m => _udChars[data.Random.Next(_udChars.Length)].ToString());
                    outputString = Regex.Replace(outputString, @"\?n", m => _ldChars[data.Random.Next(_ldChars.Length)].ToString());
                    outputString = Regex.Replace(outputString, @"\?i", m => _ludChars[data.Random.Next(_ludChars.Length)].ToString());
                    outputString = Regex.Replace(outputString, @"\?f", m => _upperlwr[data.Random.Next(_upperlwr.Length)].ToString());
                    break;

                case Function.Ceil:
                    outputString = Math.Ceiling(decimal.Parse(localInputString, _style, _provider)).ToString();
                    break;

                case Function.Floor:
                    outputString = Math.Floor(decimal.Parse(localInputString, _style, _provider)).ToString();
                    break;

                case Function.Round:
                    outputString = Math.Round(decimal.Parse(localInputString, _style, _provider), 0, MidpointRounding.AwayFromZero).ToString();
                    break;

                case Function.Compute:
                    outputString = new DataTable().Compute(localInputString.Replace(',', '.'), null).ToString();
                    break;

                case Function.CountOccurrences:
                    outputString = CountStringOccurrences(localInputString, StringToFind).ToString();
                    break;

                case Function.ClearCookies:
                    data.COOKIES.Clear();
                    break;

                case Function.RSAEncrypt:
                    outputString = Crypto.RSAEncrypt(
                        localInputString,
                        ReplaceValues(RsaN, ls),
                        ReplaceValues(RsaE, ls),
                        RsaOAEP
                        );
                    break;

                /*
                 * case Function.RSADecrypt:
                 * outputString = Crypto.RSADecrypt(
                 *  localInputString,
                 *  ReplaceValues(RsaN, data),
                 *  ReplaceValues(RsaD, data),
                 *  RsaOAEP
                 *  );
                 * break;
                 */

                case Function.RSAPKCS1PAD2:
                    outputString = Crypto.RSAPkcs1Pad2(
                        localInputString,
                        ReplaceValues(RsaN, ls),
                        ReplaceValues(RsaE, ls)
                        );
                    break;

                case Function.Delay:
                    try { Thread.Sleep(int.Parse(localInputString)); } catch { }
                    break;

                case Function.CharAt:
                    outputString = localInputString.ToCharArray()[int.Parse(ReplaceValues(CharIndex, ls))].ToString();
                    break;

                case Function.Substring:
                    outputString = localInputString.Substring(int.Parse(ReplaceValues(SubstringIndex, ls)), int.Parse(ReplaceValues(SubstringLength, ls)));
                    break;

                case Function.ReverseString:
                    var charArray = localInputString.ToCharArray();
                    Array.Reverse(charArray);
                    outputString = new string(charArray);
                    break;

                case Function.Trim:
                    outputString = localInputString.Trim();
                    break;

                case Function.GetRandomUA:
                    outputString = data.Providers.RandomUA.Generate();
                    break;

                case Function.AESEncrypt:
                    outputString = Crypto.AESEncrypt(localInputString, ReplaceValues(AesKey, ls),
                                                     ReplaceValues(AesIV, ls), AesMode, AesPadding);
                    break;

                case Function.AESDecrypt:
                    outputString = Crypto.AESDecrypt(localInputString, ReplaceValues(AesKey, ls),
                                                     ReplaceValues(AesIV, ls), AesMode, AesPadding);
                    break;

                case Function.PBKDF2PKCS5:
                    outputString = Crypto.PBKDF2PKCS5(localInputString, ReplaceValues(KdfSalt, ls),
                                                      KdfSaltSize, KdfIterations, KdfKeySize, KdfAlgorithm);
                    break;
                }

                data.Logger.Log($"Executed function {FunctionType} on input {localInputString} with outcome {outputString}", LogColors.GreenYellow);

                // Add to the outputs
                outputs.Add(outputString);
            }

            var isList = outputs.Count > 1 || InputString.Contains("[*]") || InputString.Contains("(*)") || InputString.Contains("{*}");

            InsertVariable(ls, IsCapture, isList, outputs, VariableName, "", "", false, true);
        }
Пример #6
0
        //protected void Page_Load(object sender, EventArgs e)
        //{
        //    try
        //    {



        //        if (Request.QueryString["code"].Length > 0)
        //        {
        //            Session["state"] = Request.QueryString["state"];

        //            string code = Request.QueryString["code"].ToString();
        //            string resource = "";
        //            string login = "";
        //            if (Connect.RedirectToPage(code, ref resource, ref login))
        //            {
        //                string url = Session["page"].ToString();
        //                Session["data"] = resource;
        //                Session["logedin"] = "true";
        //                Response.Redirect(url, true);
        //            }
        //        }

        //    }
        //    catch (Exception) { }



        //}

        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                //string Svalue = Session["state"].ToString();
                //string Rvalue = Request.QueryString["state"].ToString();
                //if (Svalue == Rvalue)
                //{
                Session["state"] = Request.QueryString["state"];
                string secret = "12:" + ConfigurationManager.AppSettings["CLIENT_SECRET"].ToString() + "@1234";
                Response.Write(secret + "<br/>");
                WebRequest request =
                    WebRequest.Create(ConfigurationManager.AppSettings["CONNECT_SERVER_URI"] + ConfigurationManager.AppSettings["TOKEN_ENDPOINT"]);
                // Set the Method property of the request to POST.
                request.Method = "POST";

                // Create POST data and convert it to a byte array.
                StringBuilder postData = new StringBuilder();

                postData.Append("code=" + Request.QueryString["code"] + "&");
                postData.Append("client_id=" + ConfigurationManager.AppSettings["client_id"] + "&");

                /////aes

                string aesSecret = "";
                try
                {
                    aesSecret = Crypto.AESEncrypt(secret, ConfigurationManager.AppSettings["CLIENT_TOKEN"].ToString());
                }
                catch (Exception ex)
                {
                    Response.Write(ex.Message);
                }

                Response.Write(aesSecret);

                /////

                postData.Append("client_secret=" + aesSecret + "&");
                postData.Append("grant_type=" + "authorization_code" + "&");
                postData.Append("redirect_uri=" + ConfigurationManager.AppSettings["CLIENT_CALLBACK_URI"]);

                string posd = postData.ToString();
                // Response.Write(posd);
                byte[] byteArray = Encoding.UTF8.GetBytes(posd);
                // Set the ContentType property of the WebRequest.
                request.ContentType = "application/x-www-form-urlencoded";
                // Set the ContentLength property of the WebRequest.
                request.ContentLength = byteArray.Length;
                // Get the request stream.
                Stream dataStream = request.GetRequestStream();
                // Write the data to the request stream.
                dataStream.Write(byteArray, 0, byteArray.Length);
                // Close the Stream object.
                dataStream.Close();
                // Get the response.
                WebResponse response = request.GetResponse();
                // Display the status.
                // Console.WriteLine(((HttpWebResponse)response).StatusDescription);
                // Get the stream containing content returned by the server.
                // Response.Write(((HttpWebResponse)response).StatusDescription+"ppp");
                dataStream = response.GetResponseStream();
                // Open the stream using a StreamReader for easy access.
                StreamReader reader = new StreamReader(dataStream);
                // Read the content.
                string responseFromServer = reader.ReadToEnd();
                // Display the content.
                // Console.WriteLine(responseFromServer);
                //  Response.Write(responseFromServer);
                Dictionary <string, string> s = myjson.jsonParse(responseFromServer);
                // Response.Write("token="+ s["access_token"]);
                if (s.ContainsKey("access_token"))
                {
                    string         content = "";
                    HttpWebRequest req     = (HttpWebRequest)(HttpWebRequest.Create(ConfigurationManager.AppSettings["CONNECT_SERVER_URI"] + ConfigurationManager.AppSettings["RESOURCE_URL"]));
                    req.Method          = "POST";
                    req.ProtocolVersion = HttpVersion.Version11;
                    // req.ContentType = "application/json";
                    req.Headers.Set(HttpRequestHeader.Authorization, "Bearer " + s["access_token"]);
                    req.ContentLength = content.Length;
                    Stream wri = req.GetRequestStream();
                    // byte[] array = Encoding.UTF8.GetBytes(content);
                    // wri.Write(array, 0, array.Length);
                    // wri.Flush();
                    // wri.Close();
                    HttpWebResponse HttpWResp  = (HttpWebResponse)req.GetResponse();
                    int             resCode    = (int)HttpWResp.StatusCode;
                    StreamReader    reader1    = new StreamReader(HttpWResp.GetResponseStream(), System.Text.Encoding.UTF8);
                    string          resultData = reader1.ReadToEnd();

                    //  if(Session["state"]  very session
                    Session["Connectdata"] = resultData;
                    // Session["logedin"] = "true";
                    // string url = Session["page"].ToString();
                    Response.Redirect("WebForm1.aspx", true);


                    // Response.Write(resultData);
                }
                else
                {
                    Response.Write("Error occurred");
                }


                // if (responseFromServer.Length == 0) Response.Write("Empty");
                // Clean up the streams.
                reader.Close();
                dataStream.Close();
                response.Close();



                //}
                //else
                //{


                //}

                //  Request.QueryString("code")
            }
            catch (Exception) { }
        }
Пример #7
0
        /// <inheritdoc />
        public override void Process(BotData data)
        {
            base.Process(data);

            var style    = NumberStyles.Number | NumberStyles.AllowCurrencySymbol;
            var provider = new CultureInfo("en-US");

            var localInputStrings = ReplaceValuesRecursive(inputString, data);
            var outputs           = new List <string>();

            for (int i = 0; i < localInputStrings.Count; i++)
            {
                var localInputString = localInputStrings[i];
                var outputString     = "";

                switch (FunctionType)
                {
                case Function.Constant:
                    outputString = localInputString;
                    break;

                case Function.Base64Encode:
                    outputString = localInputString.ToBase64();
                    break;

                case Function.Base64Decode:
                    outputString = localInputString.FromBase64();
                    break;

                case Function.HTMLEntityEncode:
                    outputString = WebUtility.HtmlEncode(localInputString);
                    break;

                case Function.HTMLEntityDecode:
                    outputString = WebUtility.HtmlDecode(localInputString);
                    break;

                case Function.Hash:
                    outputString = GetHash(localInputString, hashType).ToLower();
                    break;

                case Function.HMAC:
                    outputString = Hmac(localInputString, hashType, ReplaceValues(hmacKey, data), hmacBase64);
                    break;

                case Function.Translate:
                    outputString = localInputString;
                    foreach (var entry in TranslationDictionary.OrderBy(e => e.Key.Length).Reverse())
                    {
                        if (outputString.Contains(entry.Key))
                        {
                            outputString = outputString.Replace(entry.Key, entry.Value);
                            if (StopAfterFirstMatch)
                            {
                                break;
                            }
                        }
                    }
                    break;

                case Function.DateToUnixTime:
                    outputString = localInputString.ToDateTime(dateFormat).ToUnixTimeSeconds().ToString();
                    break;

                case Function.Length:
                    outputString = localInputString.Length.ToString();
                    break;

                case Function.ToLowercase:
                    outputString = localInputString.ToLower();
                    break;

                case Function.ToUppercase:
                    outputString = localInputString.ToUpper();
                    break;

                case Function.Replace:
                    if (useRegex)
                    {
                        outputString = Regex.Replace(localInputString, ReplaceValues(replaceWhat, data), ReplaceValues(replaceWith, data));
                    }
                    else
                    {
                        outputString = localInputString.Replace(ReplaceValues(replaceWhat, data), ReplaceValues(replaceWith, data));
                    }
                    break;

                case Function.RegexMatch:
                    outputString = Regex.Match(localInputString, ReplaceValues(regexMatch, data)).Value;
                    break;

                case Function.Unescape:
                    outputString = Regex.Unescape(localInputString);
                    break;

                case Function.URLEncode:
                    // The maximum allowed Uri size is 2083 characters, we use 2080 as a precaution
                    outputString = string.Join("", SplitInChunks(localInputString, 2080).Select(s => Uri.EscapeDataString(s)));
                    break;

                case Function.URLDecode:
                    outputString = Uri.UnescapeDataString(localInputString);
                    break;

                case Function.UnixTimeToDate:
                    outputString = double.Parse(localInputString).ToDateTime().ToShortDateString();
                    break;

                case Function.CurrentUnixTime:
                    outputString = DateTime.UtcNow.ToUnixTimeSeconds().ToString();
                    break;

                case Function.UnixTimeToISO8601:
                    outputString = double.Parse(localInputString).ToDateTime().ToISO8601();
                    break;

                case Function.RandomNum:
                    outputString = (data.Random.Next(randomMin, randomMax)).ToString();
                    break;

                case Function.RandomString:
                    var reserved  = new string[] { "?l", "?u", "?d", "?s", "?h", "?a", "?m", "?i" };
                    var lowercase = "abcdefghijklmnopqrstuvwxyz";
                    var uppercase = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
                    var digits    = "0123456789";
                    var symbols   = "\\!\"£$%&/()=?^'{}[]@#,;.:-_*+";
                    var hex       = digits + "abcdef";
                    var allchars  = lowercase + uppercase + digits + symbols;
                    var udchars   = uppercase + digits;
                    var ludchars  = lowercase + uppercase + digits;

                    outputString = localInputString;
                    while (reserved.Any(r => outputString.Contains(r)))
                    {
                        if (outputString.Contains("?l"))
                        {
                            outputString = ReplaceFirst(outputString, "?l", lowercase[data.Random.Next(0, lowercase.Length)].ToString());
                        }
                        else if (outputString.Contains("?u"))
                        {
                            outputString = ReplaceFirst(outputString, "?u", uppercase[data.Random.Next(0, uppercase.Length)].ToString());
                        }
                        else if (outputString.Contains("?d"))
                        {
                            outputString = ReplaceFirst(outputString, "?d", digits[data.Random.Next(0, digits.Length)].ToString());
                        }
                        else if (outputString.Contains("?s"))
                        {
                            outputString = ReplaceFirst(outputString, "?s", symbols[data.Random.Next(0, symbols.Length)].ToString());
                        }
                        else if (outputString.Contains("?h"))
                        {
                            outputString = ReplaceFirst(outputString, "?h", hex[data.Random.Next(0, hex.Length)].ToString());
                        }
                        else if (outputString.Contains("?a"))
                        {
                            outputString = ReplaceFirst(outputString, "?a", allchars[data.Random.Next(0, allchars.Length)].ToString());
                        }
                        else if (outputString.Contains("?m"))
                        {
                            outputString = ReplaceFirst(outputString, "?m", udchars[data.Random.Next(0, udchars.Length)].ToString());
                        }
                        else if (outputString.Contains("?i"))
                        {
                            outputString = ReplaceFirst(outputString, "?i", ludchars[data.Random.Next(0, ludchars.Length)].ToString());
                        }
                    }
                    break;

                case Function.Ceil:
                    outputString = Math.Ceiling(Decimal.Parse(localInputString, style, provider)).ToString();
                    break;

                case Function.Floor:
                    outputString = Math.Floor(Decimal.Parse(localInputString, style, provider)).ToString();
                    break;

                case Function.Round:
                    outputString = Math.Round(Decimal.Parse(localInputString, style, provider), 0, MidpointRounding.AwayFromZero).ToString();
                    break;

                case Function.Compute:
                    outputString = new DataTable().Compute(localInputString.Replace(',', '.'), null).ToString();
                    break;

                case Function.CountOccurrences:
                    outputString = CountStringOccurrences(localInputString, stringToFind).ToString();
                    break;

                case Function.ClearCookies:
                    data.Cookies.Clear();
                    break;

                case Function.RSAEncrypt:
                    outputString = Crypto.RSAEncrypt(
                        localInputString,
                        ReplaceValues(RsaKey, data),
                        ReplaceValues(RsaMod, data),
                        ReplaceValues(RsaExp, data),
                        RsaOAEP
                        );
                    break;

                case Function.RSADecrypt:
                    outputString = Crypto.RSADecrypt(
                        localInputString,
                        ReplaceValues(RsaKey, data),
                        ReplaceValues(RsaMod, data),
                        ReplaceValues(RsaExp, data),
                        RsaOAEP
                        );
                    break;

                case Function.Delay:
                    try { Thread.Sleep(int.Parse(localInputString)); } catch { }
                    break;

                case Function.CharAt:
                    outputString = localInputString.ToCharArray()[int.Parse(ReplaceValues(charIndex, data))].ToString();
                    break;

                case Function.Substring:
                    outputString = localInputString.Substring(int.Parse(ReplaceValues(substringIndex, data)), int.Parse(ReplaceValues(substringLength, data)));
                    break;

                case Function.ReverseString:
                    char[] charArray = localInputString.ToCharArray();
                    Array.Reverse(charArray);
                    outputString = new string(charArray);
                    break;

                case Function.Trim:
                    outputString = localInputString.Trim();
                    break;

                case Function.GetRandomUA:
                    outputString = RandomUserAgent(data.Random);
                    break;

                case Function.AESEncrypt:
                    outputString = Crypto.AESEncrypt(localInputString, ReplaceValues(aesKey, data), ReplaceValues(aesIV, data), AesMode, AesPadding);
                    break;

                case Function.AESDecrypt:
                    outputString = Crypto.AESDecrypt(localInputString, ReplaceValues(aesKey, data), ReplaceValues(aesIV, data), AesMode, AesPadding);
                    break;

                case Function.PBKDF2PKCS5:
                    outputString = Crypto.PBKDF2PKCS5(localInputString, ReplaceValues(KdfSalt, data), KdfSaltSize, KdfIterations, KdfKeySize, KdfAlgorithm);
                    break;
                }

                data.Log(new LogEntry(string.Format("Executed function {0} on input {1} with outcome {2}", functionType, localInputString, outputString), Colors.GreenYellow));

                // Add to the outputs
                outputs.Add(outputString);
            }

            var isList = outputs.Count > 1 || InputString.Contains("[*]") || InputString.Contains("(*)") || InputString.Contains("{*}");

            InsertVariables(data, isCapture, isList, outputs, variableName, "", "", false, true);
        }