当前位置:网站首页>JS逆向入门学习之回收商网,手机号码简易加密解析
JS逆向入门学习之回收商网,手机号码简易加密解析
2022-08-05 09:47:00 【InfoQ】
️ 实战场景
本次要采集的目标站点是
huishoushang.com/
,其数据详情页有公开的联系电话,页面采用前台 JS 加密,测试时原以为是字体反爬,结果不是。
随机打开二手市场的某条数据,我们又看到了熟悉的手机号码,然后快速的切换到了开发者工具的字体选项卡,结果什么都没有抓取到。

心理高兴,以为碰到了新的字体加密形式,结果打脸了。
呈现效果如下所示,可以看到网页源码并没有返回任何数字相关信息,但是有一个
decrypt
映入眼帘,这么明显的加密提示吗?

️ 实战编码
由于加密信息在 HTML 元素的属性中,所以直接检索关键字
decrypt
即可。
首先将加密字符串提取一个,用作测试
(((((((((a01 % a03) % g02) % g08) % a08) % g04) % a09) % c07) % c00) % b09) %
b08;
搜索之后得到如下解密代码:
var str = $(th).attr("decrypt");
if (str != null || str != undefined || str != '') {
$(th).attr("decryptok", "");
// str = str.replace(/-/g, ",").replace(/ /g, ",");
let strArray = str.split('%');
var newArray = [];
for (var i = 0; i < strArray.length; i++) {
let _rTemp = this.model.rArray.filter((a) => a.l == strArray[i]);
if (_rTemp.length > 0) {
newArray.push(_rTemp[0].v);
} else {
newArray.push(strArray[i]);
}
}
$(th).html(newArray.join(''));
其中发现了一个关键点,即通过
str.split('%')
,截取了字符串,而且
this.model.rArray
也成为了问题的突破点。
在源码中再次检索
rArray
,又找到了其定义的位置。
/*数字解密 */
var NumberDecrypt = {
model: {
rArray: [
{ l: 'a01', v: '1' }, { l: 'b02', v: '1' }, { l: 'c03', v: '1' }, { l: 'f04', v: '1' }, { l: 'g01', v: '1' },
{ l: 'a02', v: '2' }, { l: 'b03', v: '2' }, { l: 'c04', v: '2' }, { l: 'f05', v: '2' }, { l: 'g00', v: '2' },……
],
refreshTime: null,
refreshCount: 0
},
此时相信你已经知道了解决方案,即加密字符串通过
%
切割,然后将得到的值,例如
a01
在转换为数字
1
。
这次的案例没有想到这么简单,希望大家可以轻松掌握。
你正在阅读
【梦想橡皮擦】
的博客 阅读完毕,可以点点小手赞一下 发现错误,直接评论区中指正吧 橡皮擦的第 <font color=red>675</font> 篇原创博客
边栏推荐
- 自定义过滤器和拦截器实现ThreadLocal线程封闭
- 欧盟 | 地平线 2020 ENSEMBLE:D2.13 SOTIF Safety Concept(下)
- 无题十
- Jenkins使用手册(2) —— 软件配置
- shell脚本实例
- Happens-before rules for threads
- After Keil upgrades to AC6, what changes?
- 无题八
- ECCV 2022 Oral Video Instance Segmentation New SOTA: SeqFormer & IDOL and CVPR 2022 Video Instance Segmentation Competition Champion Scheme...
- js graphics operation one (compatible with pc, mobile terminal to achieve draggable attribute drag and drop effect)
猜你喜欢
随机推荐
正则表达式replaceFirst()方法具有什么功能呢?
mysql索引
【AGC】增长服务1-远程配置示例
【Unity】【UGUI】【在屏幕上显示文本】
Neuron Newsletter 2022-07|新增非 A11 驱动、即将支持 OPC DA
正则表达式replaceAll()方法具有什么功能呢?
ECCV 2022 Oral 视频实例分割新SOTA:SeqFormer&IDOL及CVPR 2022 视频实例分割竞赛冠军方案...
Open Source Summer | How OpenHarmony Query Device Type (eTS)
无题十四
leetcode: 529. 扫雷游戏
无题七
新白娘子传奇系列
QSS 选择器
MySQL内部函数介绍
程序员的七种武器
【zeno】为zeno增加子模块/新节点的最小化的例子
百行代码发射红心,程序员何愁命不中女朋友!
无题四
express hot-reload
Oracle temporary table space role