java实现浏览器指纹 js获取浏览器指纹_全局搜索

声明:本文只作学习研究,禁止用于非法用途,否则后果自负,如有侵权,请告知删除,谢谢!

目标网站:

    aHR0cDovL3Bhc3Nwb3J0LjU4LmNvbS9sb2dpbg==

   输入错误账号密码、抓包得知password、token、fingerprint被加密。

java实现浏览器指纹 js获取浏览器指纹_全局搜索_02

图1

    直接搜索token的值,发现其就在之前的请求响应中,参数简单,直接构造即可。

java实现浏览器指纹 js获取浏览器指纹_全局搜索_03

图2

    fingerprint同理,也在之前的请求响应cookie中。这里的finger2其实都是浏览器的环境信息,复制使用即可,或者看最后我的分析。

java实现浏览器指纹 js获取浏览器指纹_搜索_04

图3

    全局搜索username,这里第三个JS文件比较可疑,进入再搜索username

java实现浏览器指纹 js获取浏览器指纹_全局搜索_05

图4

    可以看到这里为参数的构成方法,我们在password前面打上断点,重新点击登录,成功断下。可以看到password为n.encrypt()这个函数加密所得,因此跟进这个函数看下


java实现浏览器指纹 js获取浏览器指纹_搜索_06


图5   在该函数的返回处(return)打上断点,按F8让它继续跑。可以看出传入的e为明文密码,o实际上就是那串固定的数字,而t和n都为undefined。i.rsaExponent和i.rsaModulus经过搜索与测试,均为固定值:

java实现浏览器指纹 js获取浏览器指纹_全局搜索_07


图6  实际上到这里,已经可以知道它使用了RSA的指数与模量进行加密(详细请自行百度了解),因此只要解密出encryptString这个函数即可,继续跟进看看

java实现浏览器指纹 js获取浏览器指纹_搜索_08


图7    总共就400多行代码,全部复制到本地,在开头加一句window=global;即可使用

java实现浏览器指纹 js获取浏览器指纹_全局搜索_09


图8    得出的密文与浏览器相同。这里插一句,这个RSA其实为一个变种,正常的RSA加密,每次返回的密文都不相同的。    最后再看下finger2吧。直接搜索,在这里打上断点,刷新页面,可以看到生成了结果

java实现浏览器指纹 js获取浏览器指纹_搜索_10


图9    跟进这个对象看一下,这里的Fingerprint2就是下方的t对象,它的get方法就是获取浏览器的环境信息

java实现浏览器指纹 js获取浏览器指纹_搜索_11


图10     随便跟进一个看一下

java实现浏览器指纹 js获取浏览器指纹_全局搜索_12

图11

    具体就不扣了,环境信息全部写死也没关系,感兴趣的自己扣下哈。


    

—  END —