网址:aHR0cHM6Ly93d3cuZmVuYmkuY29tL3BhZ2UvaG9tZQ==
点击账号密码登录,找到登陆的包,发现password进行了加密。
顿时,老生常谈,开始搜索,找到最有嫌疑的加密代码。进行搜索,进入js文件后,ctrl+f进行搜索。
打上断点,再点击的登陆,在控制台打印。 直接确认这就是加密的位置,进入this.encrypt。
在函数打上断点,发现需要传入公钥,很像RSA算法,先不管这么多,仔细观察这个js文件,发现他是一个自运行函数,调用encrypt,相当于调用window.encrypt()
发现this.publickey是公钥,而n是需要加密的内容’123456‘ ,在控制台打印
直接全部复制代码,浏览器环境与pycharm环境有区别,我们首先将复制的代码在浏览器环境下运行。打开一个新的页面,在源代码选项上,新增代码段,将代码复制,并填上一些参数。
点击运行,发现运行成功!运行按钮是那个ctrl+enter键。
现在复制代码在pycharm中,在pycharm中,复制一整个文件,需要导入dom库,一般需要补上window,与navigator。然后其他会报错的,就见招拆招,比如某个变量未定义,就现在浏览器复制的代码中,打断点,直接抠出来。 或者某个没有什么意义,就直接删除。
一般要补上的代码
const{JSDOM} = require('jsdom');
const dom = new JSDOM('<!DOCTYPE html><p> Hello world</p>');
window = dom.window;
navigator = window.navigator;
完整代码:
不加的话,会出现这样的
补上window=global;又会出现这样
但是代码还是有问题,需要我们省略一部分 位于62行的代码
在浏览器中找到地方,打上断点,发现if中的判断直接是false,这段代码不会执行,因此省区,不省会说av.crypto.random(32)不是函数。
最后结果:
自运行函数解读 :
(function(av){})(window);
这是一个典型的 JavaScript 自运行函数,它接受一个参数 av
,然后立即被调用并传入了 window
对象作为参数。这种模式通常用于创建一个私有的作用域,以避免变量污染全局作用域。
在这个例子中,av
参数可能代表了 window
对象的引用,因此在自运行函数内部可以使用 av
来代表 window
对象。这种写法常见于一些 JavaScript 库或框架中,用于确保在执行函数内部可以引用到 window
对象,而不受外部环境的影响。