Guest User

Steam login routine

a guest
Jun 16th, 2013
2,326
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.09 KB | None | 0 0
  1. void http::steam_login(const QString &uname, const QString &pwd)
  2. {
  3.     QNetworkProxy fiddler(QNetworkProxy::HttpProxy, "localhost", 8887);
  4.     QNetworkProxy::setApplicationProxy(fiddler);
  5.     this->login_state = 0; //log out
  6.     delete this->cookieJar();
  7.     this->setCookieJar(new QNetworkCookieJar());
  8.     QString SG, emailsteamid, encrypted_password, pkey_mod, pkey_exp, timestamp;
  9.     QByteArray buffer;
  10.     QJsonDocument json_buffer;
  11.     QNetworkCookie steam_timezone;
  12.     steam_timezone.setDomain(".steampowered.com");
  13.     steam_timezone.setPath("/");
  14.     steam_timezone.setName("timezoneOffset");
  15.     steam_timezone.setValue((QString::number(app::getTimeZoneOffset().toInt() * 3600) + ",0").toUtf8());
  16.     this->cookieJar()->insertCookie(steam_timezone);
  17.     QNetworkRequest request;
  18.     request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded; charset=utf-8");
  19.     request.setUrl(steam_getrsa);
  20.     this->sync_post(request, QString("l=english").toUtf8());
  21.     this->sync_post(request, QString("l=english").toUtf8());
  22.     app::Application->log("Started Steam login process for \""+uname+"\"",1);
  23.     QNetworkReply *reply = this->sync_post(request, QString("username=" + uname + "&l=english").toUtf8());
  24.     buffer = reply->readAll();
  25.     json_buffer = QJsonDocument::fromJson(buffer);
  26.     delete reply;
  27.     QStringList temp = json_buffer.object().keys();
  28.     QString tee = json_buffer.object().empty();
  29.     if (!json_buffer.object().value("success").toBool())
  30.     {
  31.         app::Application->log("Login failure at stage  for user"+uname, 2);
  32.         return;
  33.     }
  34.     pkey_mod = json_buffer.object().value("publickey_mod").toString();
  35.     pkey_exp = json_buffer.object().value("publickey_exp").toString();
  36.     timestamp = json_buffer.object().value("timestamp").toString();
  37.     encrypted_password = get_encrypted_password(pwd, pkey_mod, pkey_exp);
  38.     request.setUrl(steam_dologin);
  39.     reply = this->sync_post(request, QString("username=" + uname + "&password=" + percent_encode(encrypted_password) + "&rsatimestamp=" + timestamp).toUtf8());
  40.     buffer = reply->readAll();
  41.     json_buffer = QJsonDocument::fromJson(buffer);
  42.     delete reply;
  43.     if (json_buffer.object().value("message").toString() != "SteamGuard")
  44.     {
  45.         app::Application->log("Login failure at stage 2 for user"+uname, 2);
  46.         return;
  47.     }
  48.     emailsteamid = json_buffer.object().value("emailsteamid").toString();
  49.     SG = app::Application->query("Enter Steam Guard code for \"" + uname+"\": ");
  50.     SG = SG.toUpper();
  51.     encrypted_password = get_encrypted_password(pwd, pkey_mod, pkey_exp);
  52.     reply = this->sync_post(request, QString("username=" + uname + "&password=" + percent_encode(encrypted_password) + "&emailauth=" + SG + "&emailsteamid=" + emailsteamid + "&rsatimestamp=" + timestamp + "&remember_login=true").toUtf8());
  53.     buffer = reply->readAll();
  54.     json_buffer = QJsonDocument::fromJson(buffer);
  55.     if (!json_buffer.object().value("login_complete").toBool())
  56.     {
  57.         app::Application->log("Login failure at stage 3 for user"+uname, 2);
  58.         return;
  59.     }
  60.     pkey_mod = json_buffer.object().value("transfer_parameters").toObject().value("steamid").toString();
  61.     pkey_exp = json_buffer.object().value("transfer_parameters").toObject().value("token").toString();
  62.     timestamp = json_buffer.object().value("transfer_parameters").toObject().value("webcookie").toString();
  63.     request.setUrl(steam_transfer);
  64.     this->sync_post(request,QString("steamid="+pkey_mod+"&token="+pkey_exp+"&remember_login=true&webcookie="+timestamp).toUtf8());
  65.     this->cookieJar()->setCookiesFromUrl(this->cookieJar()->cookiesForUrl(QUrl("https://store.steampowered.com/")),QUrl("http://steamcommunity.com/"));
  66.     QNetworkCookie temp_cookie;
  67.     QList<QNetworkCookie> cookies = this->cookieJar()->cookiesForUrl(steam_getrsa);
  68.     for (int i=0;i<cookies.size();i++){
  69.         temp_cookie=cookies[i];
  70.         temp_cookie.setDomain(".steamcommunity.com");
  71.         this->cookieJar()->insertCookie(temp_cookie);
  72.     }
  73.     app::Application->log("Successfully logged in as \""+uname+"\"",1);
  74. }
Advertisement
Add Comment
Please, Sign In to add comment