JS逆向 -- 某平台登录算法分析(RSA加密)

简介: JS逆向 -- 某平台登录算法分析(RSA加密)

一、输入账号密码,进行抓包

二、F12打开开发者工具,抓包分析,password被加密了

三、全局搜索password关键字,挨个分析,在箭头标记处找到了关键代码

四、局部搜索,定位加密的关键点,通过JSEncrypt,setPublicKey等关键字分析是RSA加密

五、代码编写

1、调用RSA加密的基本代码编写

function aiyou(pwd,pubkey)
{
  var t = new JSEncrypt();
  t.setPublicKey(pubkey);
  var i=t.encrypt(pwd)
  return i;
}

2、定位encrypt函数,定位到该JS文件,直接把原代码拷贝过来。

3、获取公钥,将鼠标放到setPublicKey,就可以看到一长串字符串。

4、测试脚本

六、python调用该JS代码

1、JS代码

/*! JSEncrypt v2.3.1 | https://npmcdn.com/jsencrypt@2.3.1/LICENSE.txt */
navigator=this
window=this
!function(t, e) {
    "function" == typeof define && define.amd ? define(["exports"], e) : e("object" == typeof exports && "string" != typeof exports.nodeName ? module.exports : t)
}(this, function(t) {
    function e(t, e, i) {
        null != t && ("number" == typeof t ? this.fromNumber(t, e, i) : null == e && "string" != typeof t ? this.fromString(t, 256) : this.fromString(t, e))
        return this.key
    }
    ,
    ze.prototype.getPrivateKey = function() {
        return this.getKey().getPrivateKey()
    }
    ,
    ze.prototype.getPrivateKeyB64 = function() {
        return this.getKey().getPrivateBaseKeyB64()
    }
    ,
    ze.prototype.getPublicKey = function() {
        return this.getKey().getPublicKey()
    }
    ,
    ze.prototype.getPublicKeyB64 = function() {
        return this.getKey().getPublicBaseKeyB64()
    }
    ,
    ze.version = "2.3.1",
    JSEncrypt = ze
});
function aiyou(pwd,pubkey)
{
  var t = new JSEncrypt();
  t.setPublicKey(pubkey);
  var i=t.encrypt(pwd)
  return i;
}

2、Python代码

import execjs
node=execjs.get()
fp=open('jiami.js','r',encoding='utf8')
ctx=node.compile(fp.read())
pwd='123456'
pubkey="MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCjfeE0MIYsZes/HwV06/kvRw34Hmhn9WPt0feLPp1PVqdqZz1/xFvPPEAJ/lAvfqt5kyn+A06bvYXIhizTjlOzPgLE4897ihuSYXgfwcUshPZvydRLbftU6Exj5SLbv5tw4GInbgQv7RWLWOKyQA81q6lWae2Kcgd1XpDRsQNXVwIDAQAB"
jsres='aiyou("%s","%s")'%(pwd,pubkey)
res=ctx.eval(jsres)
print(res)

七、运行结果:

目录
相关文章
|
3月前
|
算法 JavaScript 前端开发
彩票中奖率的真相:用 JavaScript 看透彩票背后的随机算法(下)
至于分发?我们可以参考一下市面上已有的一些概念做一下对比,下面是笼统的一个网络服务器的TPS预估值,也就是说彩票服务器在1秒内可以处理的最大请求数:
|
3月前
|
数据采集 算法 JavaScript
彩票中奖率的真相:用 JavaScript 看透彩票背后的随机算法(上)
原本这篇文章是打算叫「假如我是彩票系统开发者」,但细想一下,如果在文章中引用太多的 JavaScript 的话,反而不是那么纯粹,毕竟也只是我的一厢情愿,彩票开发也不全如本文所讲,有所误导的话便也是得不偿失了。
|
4月前
|
移动开发 JavaScript 安全
js的常见的三种密码加密方式-MD5加密、Base64加密和解密和sha1加密详解总结
js的常见的三种密码加密方式-MD5加密、Base64加密和解密和sha1加密详解总结
115 0
|
2天前
|
前端开发 NoSQL 数据库
切图仔做全栈:React&Nest.js社区平台(一)——基础架构与邮箱注册、JWT登录实现
切图仔做全栈:React&Nest.js社区平台(一)——基础架构与邮箱注册、JWT登录实现
|
18天前
|
JavaScript 前端开发 API
框架分析(3)-Vue.js
框架分析(3)-Vue.js
|
23天前
|
小程序 开发者
微信小程序“Error: xxx.js 已被代码依赖分析忽略,无法被其他模块引用”报错?
微信小程序“Error: xxx.js 已被代码依赖分析忽略,无法被其他模块引用”报错?
|
2月前
|
监控 JavaScript 安全
监控内网电脑软件设计与实现:基于Node.js的服务器端架构分析
在当今信息技术高度发达的时代,监控内网电脑的需求日益增长。企业需要确保网络安全,个人用户也需要监控家庭网络以保护隐私和安全。本文将介绍一种基于Node.js的服务器端架构,用于设计和实现监控内网电脑软件。
118 0
|
2月前
|
JavaScript
js回车登录
js回车登录
15 1
|
2月前
|
缓存 JavaScript 算法
Vue.js中的diff算法:让虚拟DOM更高效
Vue.js中的diff算法:让虚拟DOM更高效
|
3月前
|
机器学习/深度学习 自然语言处理 JavaScript
GEE机器学习——最大熵分类器案例分析(JavaScript和python代码)
GEE机器学习——最大熵分类器案例分析(JavaScript和python代码)
45 0