天天看点

某宁detect、feature参数分析

只说下思路吧,毕竟把加密代码公开对人家网站不好。如有权益问题请私信我,我立即删除。

某宁的detect相比feature要简单的多,detect的js虽然字符串混淆严重,但是逻辑很清晰,如下图

某宁detect、feature参数分析

检测了啥东西一看关键字符就知道了,花个1天时间完全可以搞定detect。难搞的是feature,feature的加密逻辑是这样:收集浏览器特征添加到一个数组 ---->每天更新一个key用来对特征数组进行排序---->对排好序的数组进行加密得到featur。最终加密位置如下图:

某宁detect、feature参数分析

此处js是Function出来的,搜不到的,需要hook:

某宁detect、feature参数分析

整套feature js最核心的地方就在下图这,所有东西都是经过r.apply出来的:

某宁detect、feature参数分析

某宁这套feature js和某条最新版的_signature加密,是我见过最精巧的设计了(某条的比su宁还要巧妙),代码短小精悍,格式化出来也就1000行,但是代码的加密逻辑贼吊,我看大概逻辑是这样:设置一个大长度空数组、诸多类似游标的变量,在一个for循环中对一段密文进行解密,解密出来的字符串可能有userAgent、href、cookie等关键字符,但解密出来这些字符串并不马上去匹配关键特征,而是把关键字符串添加到大数组中,解密密文字符串过程又会改变诸多游标值,从而实现一个完全动态数组(不知道说的对不对...),具体在哪个位置,哪个游标值处执行"navigator['user-agent']" 验证其特征根本不知道,而且关键特征字符串我记得也是具难找,因为假如你扣的js代码里没写navigator['user-agent'] = “Mozilla.....”,此时navigator['user-agent']=undefined也不会立即报错,但是游标就会变成错误值,在循环个10多次直接代码报错,此时都循环10多次了,user-agent特征字符串早找不到了(从数组中删除、或替换成其他字符串),看报错代码也是一头雾水...