逆向Hook,定位参数和拼接url AES5

参考【JS 逆向百例】Fiddler 插件 Hook 实战,某创帮登录逆向

定位密码,用fiddler编程猫工具,在主网站hook,

(function() {
    var stringify = JSON.stringify;
    JSON.stringify = function(params) {
        console.log("Hook JSON.stringify ——> ", params);
        debugger;
        return stringify(params);
    }
})();

然后刷新断住,如下图:

导进去将整个js复制下来

 

 参数rnd,如下:

hook代码如下:

(function () {
    var open = window.XMLHttpRequest.prototype.open;
    window.XMLHttpRequest.prototype.open = function (method, url, async) {
        if (url.indexOf("rnd") != -1) {
            debugger;
        }
        return open.apply(this, arguments);
    };
})();

 断住,跟值如下:

 接下来是:timestamp和sign

全局搜索参数断住如下:

 其中timestamp如下:

timestamp= (new Date).getTime();

sign如下:

h.hex_md5((v || "") + (g || "") + c).toUpperCase()
//v和g未定义可以看成空值。
//简化版如下:
h.hex_md5(c).toUpperCase()

md5加密

生成的py文件如下:

import time
import random
import hashlib

import execjs
import requests


login_url = '脱敏处理,完整代码关注 GitHub:https://github.com/kgepachong/crawler'

def get_enpwd_and_sign_by_javascript(password):
    with open('encrypt.js', 'r', encoding='utf-8') as f:
        encrypt_js = execjs.compile(f.read())
    encrypted_password = encrypt_js.call('getdata', password)
    sign = encrypt_js.call('getsign')
    return encrypted_password, sign
def get_rnd():
    rnd = 'rnd' + str(random.uniform(0, 1))
    return rnd
def login(username, encrypted_password, sign, rnd):
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
    }
    json = {
        "auth": {
            "timestamp": str(int(time.time() * 1000)),
            "sign": sign
        },
        "username": username,
        "password": encrypted_password
    }
    response = requests.post(url=login_url, params=rnd, json=json, headers=headers)
    print(response.json())
if __name__ == '__main__':
    main()

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值