废话不多说,直接上干货
在某聘首页有短信登录接口,我们随便输入一个手机号,点击获取
可见短信登录必须要注册过的号码才行,我们换一个
发送成功,我们看一下请求
很显眼的短信验证码,打开看看
在这里插入图片描述
可以看见我们的短信已经发了出去,是一个POST请求,url是https://www.zhipin.com/wapi/zppassport/send/smsCodeByWy
表单中有NECaptchaValidate,cappKey和validate三个类似加密的参数,而第一个和第三个是一样的
我们先找简单的第二个,先全局搜索下
很明显,capKey是个固定值,我们再找另外两个,直接跟栈
此时的栈点
我们要的加密值就在b.data里,继续往上跟
b对象现在是l,继续一步一步跟,中间会有几步找不到密值的,没关系,继续向上
此时我们看见一个比较可疑的,下断点看下
找到了,值就是y.validate,我们继续找加密方法,继续往上跟栈
最后,我们跟到了这里
三个值中,第一个是服务器返回的validate,第三个是zoneId,第二个是JS根据其他值计算出的密值
至此,NECaptchaValidate的加密函数已经找到,我们接着找函数中第二个密值
_0x1f1a96,继续跟
往上找到_0xc4c1b1定义处,下断点继续
然后……
……
……
我发现网站的验证有两种,一种是现在的易盾,另一种是走的极验
MMP
每次跳到一半换验证方法
接着干吧
=this?
这里的state是传进来的
继续跟栈
这里_0x58192d就是要找的密值,往上看定义var _0x58192d = window[_0x52b775(0x5d8)];
HOOK window.gdxidpyhxde
追到这里
注意看
到这里已经找到这个密值的加密地址了,原函数太长,感兴趣的朋友可以自己看看
这个网站目前发现的是有两个短信验证途径,一个采用易盾,一个则是极验,易盾是现在这个,极验的抽时间再发
此贴只为研究加密技术,如有侵权,烦请告知,立即删除