js加密(七)steam登录
程序员文章站
2022-06-22 15:45:47
1. url: https://store.steampowered.com/login/?redir=&redir_ssl=1 2. target: 登录 3. 分析 3.1 老样子,抓包,找js。 随便输入一个帐号密码,点击登录,看看发送了哪些请求。 一次登录,发送了两次请求,第一次的请求结果是 ......
1. url:
2. target: 登录
3. 分析
3.1 老样子,抓包,找js。
随便输入一个帐号密码,点击登录,看看发送了哪些请求。
一次登录,发送了两次请求,第一次的请求结果是一个json,里面有两个参数,是第二次请求中需要的,这个直接添加用户名和一个时间戳发送post就可以了,不管它。看dologin。
3.2 有一个password参数是加密的,其余两个看起来不是很重要。下面就对这个参数进行解密。
3.3 复制加密参数,去寻找哪里出现了这个参数,这里看起来比较像。
那就打上断点调试,找依赖函数,变量,最终扣出可运行js代码。
4. python代码:
from afterwork.config import proxies, useragent import requests import json import time import re import execjs def getmodexp(data): res = requests.post(url='https://store.steampowered.com/login/getrsakey/', data=data, headers={'user-agent': useragent.random()}) # print(res.text) jsoninfo = json.loads(res.text) mod = jsoninfo['publickey_mod'] exp = jsoninfo['publickey_exp'] return mod, exp def getdata(username, donotcache): data = { 'donotcache': donotcache, 'username': username } return json.loads(json.dumps(data)) def accountinfo(): username = '你的用户名' pw = '你的密码' donotcache = re.sub(r'\.', '', str(time.time()))[:-4] # print(donotcache) # print('1577238990888') return username, pw, donotcache def getjscode(): with open('jscode.js', 'r') as f: jscode = f.read() return jscode def getlogindata(username, pw, donotcache): logindata = { 'donotcache': donotcache, 'password': pw, 'username': username, 'twofactorcode': '', 'emailauth': '', 'loginfriendlyname': '', 'captchagid': '-1', 'captcha_text': '', 'emailsteamid': '', 'rsatimestamp': '111645050000', 'remember_login': 'false' } print(logindata) return json.loads(json.dumps(logindata)) def login(logindata): res = requests.post(url='https://store.steampowered.com/login/dologin/', data=logindata, headers={'user-agent': useragent.random()}) print(res.text) return def mainfun(): username, pw, donotcache = accountinfo() data = getdata(username, donotcache) # print(type(data)) mod, exp = getmodexp(data) jscode = getjscode() ctx = execjs.compile(jscode) result = ctx.call('getpw', pw, mod, exp) # print(result) logindata = getlogindata(username, result, donotcache) # print(type(logindata)) login(logindata) if __name__ == '__main__': mainfun()
结果,登录成功返回这些东西:
学习交流,勿作他用。
推荐阅读
-
前端笔记之Vue(七)Vue-router&axios&Vue插件&Mock.js&cookie|session&加密
-
Python实战案例:这是你见过的最详细的JS加密登录某博
-
js加密(八)新浪微博登录
-
js加密(七)steam登录
-
python爬虫实战steam加密逆向RSA登录解析
-
javascript - 一些网站在用户提交登录时将密码框中的密码用js进行了一次不可逆加密,然后提交。这样做有必要么?有什么好处和坏处?
-
php curl模拟单点登录 PHP实现JS加密函数
-
php curl模拟单点登录 PHP实现JS加密函数
-
javascript - 一些网站在用户提交登录时将密码框中的密码用js进行了一次不可逆加密,然后提交。这样做有必要么?有什么好处和坏处?
-
前端笔记之Vue(七)Vue-router&axios&Vue插件&Mock.js&cookie|session&加密