1. url: https://store.steampowered.com/login/?redir=&redir_ssl=1

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': '',
'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()

结果,登录成功返回这些东西:

学习交流,勿作他用。

js加密(七)steam登录的更多相关文章

  1. Python 爬虫js加密破解(四) 360云盘登录password加密

    登录链接:https://yunpan.360.cn/mindex/login 这是一个md5 加密算法,直接使用 md5加密即可实现 本文讲解的是如何抠出js,运行代码 第一部:抓包 如图 第二步: ...

  2. AES加密解密——AES在JavaWeb项目中前台JS加密,后台Java解密的使用

    一:前言 在软件开发中,经常要对数据进行传输,数据在传输的过程中可能被拦截,被监听,所以在传输数据的时候使用数据的原始内容进行传输的话,安全隐患是非常大的.因此就要对需要传输的数据进行在客户端进行加密 ...

  3. 使用selenium进行密码破解(绕过账号密码JS加密)

    经常碰到网站,账号密码通过js加密后进行提交.通过burp拦截抓到的账号密码是加密后的,所以无法通过burp instruder进行破解.只能模拟浏览器填写表单并点击登录按钮进行破解.于是想到了自动化 ...

  4. js加密后台加密解密以及验证码

    该文档为转载内容: 加密解密 1 前端js加密概述 2 前后端加密解密 21 引用的js加密库 22 js加密解密 23 Java端加密解密PKCS5Padding与js的Pkcs7一致 验证码 1 ...

  5. 昆仑游戏[JS加密修改]

    昆仑游戏:http://www.kunlun.com/index.html JS加密修改 BigTools=window.BigTools;//重点 RSAKeyPair=window.RSAKeyP ...

  6. web主题公园版权信息破解:script.js加密文件

    很多人会使用web主题公园网站的免费worldpress主题,但它的主题又都被加了版权信息,故意让人找不到版权信息的修改位置. 你如果去footer.php里面删除版权信息(技术支持:web主题公园) ...

  7. JS按回车键实现登录的方法

    本文实例讲述了JS按回车键实现登录的方法,该功能有着非常广泛的实用价值.分享给大家供大家参考之用.具体方法如下: 方法一: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 < ...

  8. js加密的密文让PHP解密(AES算法)

      JS加密代码如下     <script src="http://crypto-js.googlecode.com/svn/tags/3.0.2/build/rollups/aes ...

  9. RSA加密前端JS加密,后端asp.net解密,报异常

    RSA加密前端JS加密,后端asp.net解密,报异常 参考引用:http://www.ohdave.com/rsa/的JS加密库 前端JS加密代码: function GetChangeStr() ...

  10. wordpress使用video.js与七牛云存储实现无广告视频分享应用

    video.js是一款极受欢迎的基于HTML5的开源WEB视频播放器,其充分利用了HTML5的视频支持特性,可以实现全平台的无视频插件播放功能,对于现在流行的手机.PAD等移动智能终端有极佳的应用体验 ...

随机推荐

  1. laravel如何向视图传递值

    1.定义路由 Route::get('demo','DemoController@demo'); 2.定义控制器(内with();方法就是定义传递的值 key=>value)=>" ...

  2. sencha Architect 3.2及以下版本都适用的 破解方法

    找到 没有的话 打开隐藏文件夹 C:\Users\ll\AppData\Local\Sencha\Sencha Architect 3.2 用编辑器 打开user.license 把 Print 修改 ...

  3. blob - 二进制文件流下载

    /** * 返回值文件类型为 blob 二进制流文件 * responseType: 'blob' * params 接口所需参数 * 命名文件名:依据时间戳命名文件名 * (导出时需要延迟,否则导出 ...

  4. mybatis(六):设计模式 - 策略模式

  5. js中迭代方法

    基础遍历数组:            for()            for( in )             for(var i = 0;i<arr.length;i++){       ...

  6. 【Python】程序计时

  7. Ubuntu 的apt install 和卸载正确姿势

    先说下使用apt  installl 安装的包的卸载: apt-get remove: 卸载软件apt-get purge: 卸载软件和配置文件apt-get autoremove: 移除没有使用的依 ...

  8. java Map 迭代key,value 最简洁的方法

    import java.util.HashMap; import java.util.Map; public class EntrySets { public static void main(Str ...

  9. leetcode全部滑动窗口题目总结C++写法(完结)

    3. 无重复字符的最长子串 A: 要找最长的无重复子串,所以用一个map保存出现过的字符,并且维持一个窗口,用le和ri指针标识.ri为当前要遍历的字符,如果ri字符在map中出现过,那么将le字符从 ...

  10. 题解【SP2713】GSS4 - Can you answer these queries IV

    题目描述 You are given a sequence \(A\) of \(N(N \leq 100,000)\) positive integers. There sum will be le ...