├── README.md └── Tencent-TDC-Verify └── README.md /README.md: -------------------------------------------------------------------------------- 1 | # Vcode 2 | 3 | 滑块验证码破解 4 | 5 | 请遵守当地法律法规 6 | 如果本Project帮助到你了 请您 Star 一下 7 | 8 | 9 | 更新 2019.04.18 10 | ===================================================================================================================================== 11 | FP指纹改为全随机,修复已知BUG 12 | 13 | 更新 2019.05.05 14 | ===================================================================================================================================== 15 | 1、请使用V8引擎运行 16 | 17 | 2、不再更新,不再保证有效性,验证码作为网络安全防护的一堵墙,善恶存乎一念之间。 18 | 19 | 3、尺度难以把握,若其作为安全防护最后一堵墙被攻破,那么违法根源就是识别验证码。 20 | 21 | 4、已加入所需注释 22 | 23 | -------------------------------------------------------------------------------- /Tencent-TDC-Verify/README.md: -------------------------------------------------------------------------------- 1 | Tencent TDC 破解 2 | ===================================================================================================================================== 3 | 4 | 本项目针对 https://dj.captcha.qq.com/tdc.js 的破解。 5 | 6 | 仅用于学习交流,未改动原JS文件内部任何内容,**仅添加增量JS内容完成破解**,实现真正意义上的完整破解。 7 | 8 | 本破解不包括图像识别,即滑块坐标的识别(自行用色差法或对比法即可)。 9 | 10 | tdc.js采用动态混淆的方式,每次加载的JS文件均不相同,且几乎没有重复。当然这可以用charles来进行一些基础调试,这在破解在初级阶段时很有必要。 11 | 12 | 大致思路 13 | ------------------------------------------------------------------------------------------------------------------------------------- 14 | i. 通过接管window对象及劫持一部分函数达到完全自定义输出collectdata。 15 | ii. 包括不限于模拟浏览器环境,构建window、document、navigator等对象,自定义并劫持addEventListener、Promise和Date 16 | 等对实时结果造成影响的函数等操作进行破解。 17 | 18 | 具体实现 19 | ------------------------------------------------------------------------------------------------------------------------------------- 20 | 1、init。模拟浏览器对象环境,使JS可直接运行并导出window["TDC"]对象,其包含四个方法,setData、getData、clearTc和getInfo。 21 | 22 | 2、listener。该JS为闭包实现,通过addEventListener函数push轨迹相关处理函数,addEventListener(type,listener,option) 23 | 函数type为事件名称,listener为处理函数。将多个不同的type和listener压入数组,并在合适的时机进行模拟操作,如mousemove。 24 | 通过模拟Event对象,进行listener(Event),同时劫持Date函数,使得事件触发函数获取到的时间戳与预设的时间戳一致, 25 | 达到破解轨迹、坐标(即mousedown、mouseup、mousemove等事件)。 26 | 27 | 3、setData 28 | 29 | 4、getData 30 | 调试过程 31 | ------------------------------------------------------------------------------------------------------------------------------------- 32 | 1、最后版本使用较新V8引擎运行,具体可上Google自行编译DLL。弃用windows JScript组件 33 | 2、[TDCJS]用https://dj.captcha.qq.com/tdc.js源码替换 34 | 3、闭包调试,防止污染。将整份JS改作闭包,这样自定义函数、对象才能在浏览器下有效!调试用谷歌Chrome,不用赘述。 35 | --------------------------------------------------------------------------------