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

Posted 梦想橡皮擦

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS逆向入门学习之回收商网,手机号码简易加密解析相关的知识,希望对你有一定的参考价值。

@[toc]

⛳️ 实战场景

本次要采集的目标站点是 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

以上是关于JS逆向入门学习之回收商网,手机号码简易加密解析的主要内容,如果未能解决你的问题,请参考以下文章

JS学习之生命周期与垃圾回收机制

记换换回收一个js逆向分析

JS逆向你必须懂的常用加密算法

webGL入门学习之创建场景

vue.js学习之入门实例

MyBatis学习之逆向工程