-
-
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 |
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
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.