Авторизация Steam

Необходима авторизация Steam без OpenId и библиотеки SteamKit2 Вроде все бы ничего,но что-то не так либо с шифрованием ,либо с куками

Скрипты Steam: Скрипт шифрования(https://steamcommunity-a.akamaihd.net/public/shared/javascript/crypto/rsa.js)
Вспомогательный скрипт(https://steamcommunity-a.akamaihd.net/public/shared/javascript/crypto/jsbn.js)
Основной скрипт (https://steamcommunity-a.akamaihd.net/public/shared/javascript/login.js?v=dlXLXZHEdG_R&l=russian)
Вызывается все в основном скрипте:

var form = this.m_$LogonForm[0];
    var pubKey = RSA.getPublicKey(results.publickey_mod, results.publickey_exp);
    var username = this.m_strUsernameCanonical;
    var password = form.elements['password'].value;
    password = password.replace(/[^\x00-\x7F]/g, ''); // remove non-standard-ASCII characters
    var encryptedPassword = RSA.encrypt(password, pubKey);

    var rgParameters = {
        password: encryptedPassword,
        username: username,
        twofactorcode: authCode,
        emailauth: form.elements['emailauth'] ? form.elements['emailauth'].value : '',
        loginfriendlyname: form.elements['loginfriendlyname'] ? form.elements['loginfriendlyname'].value : '',
        captchagid: this.m_gidCaptcha,
        captcha_text: form.elements['captcha_text'] ? form.elements['captcha_text'].value : '',
        emailsteamid: this.m_steamidEmailAuth,
        rsatimestamp: results.timestamp,
        remember_login: ( form.elements['remember_login'] && form.elements['remember_login'].checked ) ? 'true' : 'false'
    };

Делаю 2 запроса: 1)На https://store.steampowered.com/login/getrsakey/
В ответ получаю:

publickey_exp: "010001"
publickey_mod: "d09d5d926b94ea86c6971459486ce59d76b2b4682ddfb7d8fae9d9c68733835ecebb8c6a2c7463dd237c17c06fcc689c081d358c12dec82a68b4cef3fffd4ba9cbe0ee7397ac73caa4b0814d4932c7c33e098d91213972dd8fdad4e5de57628cbbc707066cb18f42d04463e9fa15632a26e9c12db4b5d74c4f7d06ec6c48fcfbcd39b5d40380a956b134cbf8afd74a2f5c761d1e0b0194fa0d4b9d1d489f55fd94471762c59765a566d193234e300eb5072e2254172dfbda9b1989d1edf8edcd1ba918b6bd7e3d29e8c6ba3488c38faa18935db2337fd384cf6d13e038a924d7280ab02b3279dfefdae1bf14587e0f0b8233eb36aa7bbb2a7e76a4b7e6abd0a3"
success: true
timestamp: "..."
token_gid: "..."

2)На https://store.steampowered.com/login/dologin/

Код:

   public class Get
        {
            static CookieContainer CookCont = new CookieContainer();
            public static string GetResponse(string URL)
            {
                HttpWebRequest Request = (HttpWebRequest)WebRequest.Create(URL);
                Request.CookieContainer = CookCont;
                HttpWebResponse Response = (HttpWebResponse)Request.GetResponse();
                CookieCollection RespCook = new CookieCollection();
                RespCook = Response.Cookies;
                CookCont.Add(RespCook);
                Stream Stream = Response.GetResponseStream();
                StreamReader SR = new StreamReader(Stream);
                string ResponStr = SR.ReadToEnd();
                return ResponStr;
            }
            public static string PostResponce(string URL,string Content)
            {
                HttpWebRequest Request = (HttpWebRequest)WebRequest.Create(URL);
                Request.CookieContainer = CookCont;
                Request.Method = "POST";
                byte[] ContentBA = System.Text.Encoding.UTF8.GetBytes(Content);
                Request.ContentType = "application/x-www-form-urlencoded; charset=UTF-8";
                Request.ContentLength = ContentBA.Length;
                Stream RequestStream = Request.GetRequestStream();
                RequestStream.Write(ContentBA, 0, ContentBA.Length);
                RequestStream.Close();
                HttpWebResponse Response = (HttpWebResponse)Request.GetResponse();
                CookieCollection RespCook = new CookieCollection();
                RespCook = Response.Cookies;
                CookCont.Add(RespCook);
                string ResponseStr = "";
                using (Stream ResponseStream = Response.GetResponseStream())
                {
                    StreamReader reader = new StreamReader(ResponseStream);
                    ResponseStr = reader.ReadToEnd();
                }
                Response.Close();
                return ResponseStr;
            }
            public static int CookiesCount()
            {
                return CookCont.Count;
            }
        }
        public class Hex
        {
            public static string EncodeHexString(byte[] input)
            {
                return input.Aggregate(new StringBuilder(),(sb, v) => sb.Append(v.ToString("x2"))).ToString();
            }
            public static byte[] DecodeHexString(string hex)
            {
                int chars = hex.Length;
                byte[] bytes = new byte[chars / 2];
                for (int i = 0; i < chars; i += 2)
                {
                    bytes[i / 2] = Convert.ToByte(hex.Substring(i, 2), 16);
                }
                return bytes;
            }
        }
        public static class Encryptor
        {
            public static string Encrypt(string publickey_mod, string publickey_exp, string message)
            {
                byte[] pass = Encoding.ASCII.GetBytes(message);
                byte[] mod = Hex.DecodeHexString(publickey_mod);
                byte[] exp = Hex.DecodeHexString(publickey_exp);
                RSACryptoServiceProvider lRSA = new RSACryptoServiceProvider();
                RSAParameters lRSAKeyInfo = new RSAParameters();
                lRSAKeyInfo.Modulus = mod;
                lRSAKeyInfo.Exponent = exp;
                lRSA.ImportParameters(lRSAKeyInfo);
                return Convert.ToBase64String(lRSA.Encrypt(pass, true));
            }
        }
        class StartKeyClass
        {
            public string success { get; set; }
            public string publickey_mod { get; set; }
            public string publickey_exp { get; set; }
            public string timestamp { get; set; }
            public string token_gid { get; set; }
        }









        static void Main(string[] args)
        {

            Get.GetResponse("https://store.steampowered.com/");
            Console.WriteLine(Get.CookiesCount());
            Get.GetResponse("https://store.steampowered.com/login/?redir=&redir_ssl=1");
            Console.WriteLine(Get.CookiesCount());
            string epoch = Convert.ToString((DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalMilliseconds).Replace(",", "");
            string Login = "login";
            string Password = "password";
            string GetStartKey = Get.PostResponce("https://store.steampowered.com/login/getrsakey/", "donotcache=" + epoch + "&username=" + Login);
            Console.WriteLine(Get.CookiesCount());
            var GetStartKeyJson = JsonConvert.DeserializeObject<StartKeyClass>(GetStartKey);
            string EncryptedPassword = Encryptor.Encrypt(GetStartKeyJson.publickey_mod, GetStartKeyJson.publickey_exp, Password);
            Console.WriteLine(EncryptedPassword);
            epoch = Convert.ToString((DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalMilliseconds).Replace(",", "");
            string s = "donotcache=" + epoch + "&password=" + EncryptedPassword + "&username=" + Login + "&twofactorcode=&emailauth=&loginfriendlyname=&captchagid=-1&captcha_text=&emailsteamid=&rsatimestamp=" + GetStartKeyJson.timestamp + "&remember_login=false";
            Console.WriteLine(s);
            string Dologin = Get.PostResponce("https://store.steampowered.com/login/dologin", s);
            Console.WriteLine(Get.CookiesCount());
            Console.WriteLine(Dologin);
        }

Помогите разобраться с этим,не могу уснуть уже неделю.Заранее спасибо))


Ответы (0 шт):