Discuz! Board

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1846|回复: 0

使用蜜蜂采集器对Crypto-JS加密的网页数据进行解密

[复制链接]

81

主题

81

帖子

949

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
949
发表于 2023-5-2 19:19:17 | 显示全部楼层 |阅读模式

蜜蜂采集器使用教程 - 对Crypto-JS加密的网页数据进行解密

有些网页会使用JavaScript的加密库Crypto-JS来加密网页数据,如果使用常规的思路进行处理,则非常麻烦,耗时耗力。本文介绍一种可以在蜜蜂采集器中使用的解密方法,供大家参考。

Crypto-JS的使用

Crypto-JS是一个基于MIT协议的JavaScript加密库,集成了MD5、SHA1、AES、DES、RC4等算法,可以非常方便地在网页或Node.js等场景中使用。网页中使用时,可以使用crypto-js.min.js。

加密时,可以使用如下代码:

var ciphertext = CryptoJS.AES.encrypt(JSON.stringify(data), 'secret key 123').toString();

解密时,可以使用如下代码:

var bytes  = CryptoJS.AES.decrypt(ciphertext, 'secret key 123');
var decryptedData = JSON.parse(bytes.toString(CryptoJS.enc.Utf8));

实际使用时,可能调用会复杂一点,但思路差不多。

采集时解密

如上。如果网页中使用这种加密的数据,然后在网页加载完成后动态解密,则使用采集器时,常规采集方式处理起来非常费力。这里,我们将网页中的JavaScript解密代码抠出来,放到Node.js标签数据处理插件中,即可使用Node.js来执行JavaScript代码,进而实现解密功能。

打开蜜蜂采集器,菜单“采集”----“标签数据处理插件”页面,添加一个“Crypto-JS解密测试”的Node.js标签数据处理插件,并添加代码如下:

var CryptoJS=require("./crypto-js.min")

function inited(){
    var ciphertext = bee.BEE_INPUT['value'];

    var bytes  = CryptoJS.AES.decrypt(ciphertext, 'test.com');
    var decryptedData = bytes.toString(CryptoJS.enc.Utf8);

    bee.BEE_OUTPUT['result'] = decryptedData;
    bee.BEE_OUTPUT['code'] = 0;
    bee.BEE_OUTPUT['msg'] = '成功';

    //结果返回
    bee.BeeCollector_Output();
    process.exit(0);
}
添加插件
插件代码

这里,直接使用的js代码crypto-js.min.js。当然,也可以使用Node.js的Crypto-JS模块。

添加一个测试用的采集规则,并添加一个测试的标签“解密测试”,设置标签内容为测试内容“U2FsdGVkX1+I7qhf+Hzt2Nual49ytTZBCpf2pq/H1gBA47/68WBzGvZU3R2B1vTkivLxkHUNniuxEtBKihOuglnTy16XBviWZ08A4sWf34Q=”,启用“标签数据二次处理”,并添加“调用插件”处理项,选择刚刚添加好的标签数据处理配置,即可。点击“测试”,“调试”窗口输出了解密结果“Crypto-JS解密测试Crypto-JS解密测试Crypto-JS解密测试”。

采集规则

实际使用时,可以会遇到JavaScript反调试等保护措施,应根据情况作相应处理。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|DiscuzX

GMT+8, 2024-11-21 17:59 , Processed in 0.031231 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表