螺丝帽人机验证-验证码突破思路

声明:仅供技术交流,请勿用于非法用途,如有其它非法用途造成损失,后果自负,如有侵权,请告知删除,谢谢

初次请求

点击验证之后会出现一个请求,里面得到一些值
在这里插入图片描述
请求中有个参数k=95059ebc73a95c13d50ceb8e06939c94,这个值是从页面源码得到的,写死
在这里插入图片描述
螺丝帽人机验证-验证码突破思路_第1张图片
这个请求需要参数,一个bg一个b
螺丝帽人机验证-验证码突破思路_第2张图片
从这里进去打断点
在这里插入图片描述在这里插入图片描述
看到bg和b的值都是从_0x3ba3x5这里来的一个字符串,从堆栈上去看看,看这个return最后返回的值,_0x8f24[540] + _0x3ba3xc[_0x8f24[454]](_0x3ba3x1) + _0x8f24[541] + _0x3ba3xc[_0x8f24[454]](_0x3ba3x3)),是由四个值拼接得到的
在这里插入图片描述
在这里插入图片描述
观察发现bgb的值都是_0x3ba3xc[_0x8f24[454]]这个函数传参得到的
这个_0x3ba3x1就是一段浏览器信息拼接来的,RzDQJDr5piHWzjPtOtDGFQ这个值是从页面源码得到的,其他值都是写死的
螺丝帽人机验证-验证码突破思路_第3张图片
在这里插入图片描述
_0x3ba3x3这个值写两个随机数+时间戳
在这里插入图片描述
在这里插入图片描述
最后来看下_0x3ba3xc[_0x8f24[454]]这个方法,看起来很复杂,一个个翻译过来后其实就是个cryptojs的aes加密
螺丝帽人机验证-验证码突破思路_第4张图片

function AES(key){
	var _0x3ba3x5 = CryptoJS.enc.Utf8.Parse('c28725d494c78ad782a6199c341630ee'), // 此阶段写死即可
	 _0x3ba3xc = CryptoJS.enc.Utf8.Parse('2801003954373300'); // 写死即可
	return CryptoJS.AES.encrypt(key,_0x3ba3x5,{
		iv: _0x3ba3xc,
	    mode: CryptoJS.mode.CBC,
	    padding: CryptoJS.pad.ZeroPadding
	}).toString()
}

验证码

验证码需要添加Referer,s后面的值则是上面请求得到的s值
在这里插入图片描述
请求这个链接之后得到会发现验证码的图片地址在一个数组p里面,下面的数组l则是图片的一个还原坐标,因为从这个链接获得的图片是经过了一个切割打乱处理,我们需要这些坐标进行一个还原处理
在这里插入图片描述
螺丝帽人机验证-验证码突破思路_第5张图片

最后一次请求

点选完以后会有一个请求,里面三个参数

螺丝帽人机验证-验证码突破思路_第6张图片

h是第一次得到的h值,不做分析,打断点重新进入,发现和前面一样的套路
在这里插入图片描述
从堆栈向上查找,这里有三个值,刚好是对应了h,v,s
螺丝帽人机验证-验证码突破思路_第7张图片
s(传递参数中是v)是由_0xaaefx11得来的 这个和上面加密过程是一样的 不过这里需要传递的值则是坐标,得到值进行了一个replace替换
这里坐标是动了个手脚的,首先是把x,y的值做了个换位,然后再把点击顺序做了个反向调整,也就是说这里的值就是第三个点yx的值,第二个点yx的值,第一个点的yx的值
在这里插入图片描述在这里插入图片描述
_0xaaefx15也就是吧坐标MD5化
在这里插入图片描述

模拟请求

请求发现是成功的
螺丝帽人机验证-验证码突破思路_第8张图片

完整代码: 螺丝帽突破
螺丝帽人机验证-验证码突破思路_第9张图片

你可能感兴趣的:(js破解)