-
-
Save maxisoft/8364262 to your computer and use it in GitHub Desktop.
import urllib | |
import urllib2 | |
import json | |
import time | |
from Crypto.PublicKey import RSA | |
from Crypto.Cipher import PKCS1_v1_5 | |
import base64 | |
import cookielib | |
uname = "----" | |
passwd = "----" | |
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)' | |
# Request key | |
url = 'https://steamcommunity.com/login/getrsakey/' | |
values = {'username' : uname, 'donotcache' : str(int(time.time()*1000))} | |
headers = { 'User-Agent' : user_agent } | |
post = urllib.urlencode(values) | |
req = urllib2.Request(url, post, headers) | |
response = urllib2.urlopen(req).read() | |
data = json.loads(response) | |
print "Get Key Success:", data["success"] | |
# Encode key | |
mod = long(str(data["publickey_mod"]), 16) | |
exp = long(str(data["publickey_exp"]), 16) | |
rsa = RSA.construct((mod, exp)) | |
cipher = PKCS1_v1_5.new(rsa) | |
print base64.b64encode(cipher.encrypt(passwd)) | |
# Login | |
url2 = 'https://steamcommunity.com/login/dologin/' | |
values2 = { | |
'username' : uname, | |
"password": base64.b64encode(cipher.encrypt(passwd)), | |
"emailauth": "", | |
"loginfriendlyname": "", | |
"captchagid": "-1", | |
"captcha_text": "", | |
"emailsteamid": "", | |
"rsatimestamp": data["timestamp"], | |
"remember_login": False, | |
"donotcache": str(int(time.time()*1000)), | |
} | |
headers2 = { 'User-Agent' : user_agent } | |
post2 = urllib.urlencode(values2) | |
req2 = urllib2.Request(url2, post2, headers) | |
response2 = urllib2.urlopen(req2).read() | |
data2 = json.loads(response2) | |
if data2["success"]: | |
print "Logged in!" | |
else: | |
print "Error, could not login:", data2["message"] | |
print response2 |
Jayme, does your own also give the 'Incorrect login' message?
Jayme, does your own also give the 'Incorrect login' message?
Yes, since end of april I guess. Worked great 'till then and, as said, I could not see any difference in the javascript steam uses.
I may have just solved it, instead of getting an 'incorrect login' I know get emailauth. Ill keep you updated and i'll say when (and how) it works completely!
EDIT: It works, I have successfully logged in. I am now cleaning up the code
FYI: I have written it in python 3 (not 2!), you also need to have pycrypto installed which you most likely already have. I will make a repo on github soon (max 5 days) and upload my project there.
Cool! Let me know what you changed or did different than me!
I uploaded it. https://github.com/wagenaartje/PySteam/blob/master/PySteam.py . It contains a lot of unnecessary headers, but I achieved it by copying the exact login process from internet explorer and including the same headers and such. I think the problem was at the session ID, I am now going to continue to remove unnecessary headers and such.
also note it does not handle captcha codes yet.
I think the problem was at the session ID
Strange. My code requests a sessionid first as well here and provides it along with all other cookies for every other GET/POST. I also tried the X-Prototype-Version
header some time ago...
We'll see what you find out when you reduce the headers and/or what I find out when I have time to dig into this again ;)
Thanks for sharing! I'll follow you for now to not miss any updates on this (why the heck can't I watch this discussion...)
I'ts just that stupid
twofactorcode
parameter that needs to be added to the dologin
POST.
damn xD
you dont need to do that. there is a library for steam link
I've just updated my fork of this gist with what I used for quite some time.
Stripped that out of my project without testing it so there might contain bugs and debug stuff but it handles captcha and email auth, steam js like escaping of non-ascii characters and saves cookies to a file if thats of help for someone.