js加密function自执行函数方法本地调试

自执行函数,也是没有名字的函数。js中一般函数定义可为  function    pwd( ){renturn 1+1};

或者是pwd = function(){return 1+1};现在大部分网址都是webpak打包方式,用一个大的自执行函数来运行整个js内容。  自执行函数 一般是这几种,内容为空是返回false或者true,与js的原型链相关。  

 

这一次要被毒害的网站base64:aHR0cHM6Ly9iZWlqaW5nLnR1aXR1aTk5LmNvbS9kZW5nbHUuaHRtbA==

 

打开抓包工具进入网站,然后随便输入账号密码(推荐错的,防止跳转),然后在ALL里面成功抓到用到的账号跟加密后的密码。

 

 然后进入到search里面搜索password,经过逐一排查比对,发现加密过程是在login.js?v4这个模块里面产生的。

 把鼠标放在encrypt.encrypt或者右上角小箭头进入到这个方法内部,

 然后点击JSEncrypt.prototype.encrypt这个方法,没有跳转到别动包,说明整个加密过程是在这个模块中产生的。然后拉到最上面发现他第一行定义了一个空的对象JSEncryptExports,第二行定义了一个自执行方法。然后拉到最下面第二行发现他把这个自执行函数命名为JSEncryptExports,这是直接调用这个自执行函数的方法。

 然后将全文复制到js调试工具里面,然后格式化,再加载代码发现navigator未定义,缺什么就补什么。

 补完后再次运行发现window未定义,再次定义window后发现没有什么语法错误,这就包就ok了,接下来就该引用这个包了。

function passdord(pwd){
var encrypted = encrypt.encrypt(password)} 定义一个函数passdord,然后回到断点哪里,将调用的方法填入到函数里面,发现 他他是用encrypt.encrypt调用的,encrypt还没定义。

 在这个包里面搜索这个方法,然后发现它定义并且调用了var encrypt = new JSEncrypt(),复制下来加入到函数里面。

 28行处encrypt.setPublicKey调用了(login.pubkey),在左下角输入后发现这个一个字符串,定义进去。然后return返回encrypted

 function passdord(pwd) {
var encrypt = new JSEncrypt();
encrypt.setPublicKey("-----BEGIN PUBLIC KEY-----MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDAbfx4VggVVpcfCjzQ+nEiJ2DLnRg3e2QdDf/m/qMvtqXi4xhwvbpHfaX46CzQznU8l9NJtF28pTSZSKnE/791MJfVnucVcJcxRAEcpPprb8X3hfdxKEEYjOPAuVseewmO5cM+x7zi9FWbZ89uOp5sxjMnlVjDaIczKTRx+7vn2wIDAQAB-----END PUBLIC KEY-----");
var encrypted = encrypt.encrypt(pwd);
return encrypted;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值