某验4无感探针-js逆向
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 一、总体概述
- 二、请求分析
- 1.分析请求流程
- 三、逆向分析
- 四、执行验证
- 总结
一、总体概述
本文主要实现用协议过某验4无感探针,相关的链接:aHR0cHM6Ly9ndDQuZ2VldGVzdC5jb20vZGVtb3Y0L2ludmlzaWJsZS1iaW5kLXpoLmh0bWw=
二、请求分析
1.分析请求流程
整体流程主要请求3个接口:
第一步:aHR0cHM6Ly9nY2FwdGNoYTQuZ2VldGVzdC5jb20vbG9hZD9jYXB0Y2hhX2lkPTk5YjE0MmFhZWNlOTYzMzBkMGYzZmZiNTY1ZmZiM2VmJmNoYWxsZW5nZT1hMDYxOTUzMC0xZmIyLTQzMWMtYTkzMi1iMjU4YjRhZDA0MDcmY2xpZW50X3R5cGU9d2ViJmxhbmc9emhvJmNhbGxiYWNrPWdlZXRlc3RfMTc0ODM0ODU4MzY4MQ==
第二步:
aHR0cHM6Ly9nY2FwdGNoYTQuZ2VldGVzdC5jb20vdmVyaWZ5Pw==
第三步,验证点击:
aHR0cHM6Ly9ndDQuZ2VldGVzdC5jb20vZGVtb3Y0L2RlbW8vbG9naW4/
三、逆向分析
第一步分析:
通过反复的参数对比,得到challenge、callback参数需要变化
搜索challenge
搜索geetest_
提取相关的逻辑,获取参数的值,并进行接口1的请求
第二步分析:
经分析lot_number、payload、process_token是上个接口的返回数据
w为加密数据,需分析w加密逻辑
w解密分析:
跟堆栈,找到w生成的位置,并打上断点
跟进加密函数,用window._encode实现该加密函数的吐出
分析变量_ᕷᕹᖀᖈ, _ᖙᖆᕺᕵ,并实现反复请求,对比变量值的不同
最终得出lot_number, datetime, staticPath, payload, processToken、pow_msg, pow_sign、hash需要一直变化
其中lot_number, staticPath, payload, processToken由上一个接口返回
datetime是时间戳的格式化
pow_msg, pow_sign加密生成
hash参考上面的随机hash生成逻辑,并切分-取第一个
pow_msg, pow_sign生成分析
跟值分析值的生成位置,定位生成函数,用window.get_pow 将函数吐出
四、执行验证
import requests
import execjs
import re
import json
import subprocess
execjs.get().name
print(execjs.get().name)
import datetimeif __name__ == '__main__':results = subprocess.check_out