写点什么

JS 逆向入门学习之回收商网,手机号码简易加密解析

作者:梦想橡皮擦
  • 2022 年 8 月 05 日
  • 本文字数:1020 字

    阅读完需:约 3 分钟

⛳️ 实战场景

本次要采集的目标站点是 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> 篇原创博客


发布于: 刚刚阅读数: 3
用户头像

爬虫 100 例作者,蓝桥签约作者,博客专家 2021.02.06 加入

6 年产品经理+教学经验,3 年互联网项目管理经验; 互联网资深爱好者; 沉迷各种技术无法自拔,导致年龄被困在 25 岁; CSDN 爬虫 100 例作者。 个人公众号“梦想橡皮擦”。

评论

发布
暂无评论
JS逆向入门学习之回收商网,手机号码简易加密解析_Python_梦想橡皮擦_InfoQ写作社区