七麦请求加密破解

  • 2018-10-15
  • 3,117
  • 21
  • 6

每周两爆系列-七麦分析

请勿用于非法用途

代码在文末


我们的目标是

https://www.qimai.cn/rank

第一步 反debugger

直接打开f12 会进入debugger炼狱

我们找到来源文件

源代码如下图所示

这时候我们可以把js下下来 修改上图中的代码为

function t() {
  try {
    var a = "";
    !function e(n) {
      (1 !== ("" + n / n).length || 0 === n) && function() {}
      .constructor(a)(),
      e(++n)
    }(0)
  } catch (a) {
    setTimeout(t, 500)
  }
}

即可屏蔽掉debugger

也可以用简单的方法

t=function(){}

来终止这个循环

第二步 分析开始

信息获取接口如图所示

https://api.qimai.cn/rank/indexPlus/brand_id/1?analysis=IRIdEVEIChkIDF1USWkOFkofB0YADVNoWVQYCHZCBwdVAgFSBFFWB1ciGgA%3D

可以看到其中 analysis 为 加密参数

我们下一个xhr断点 可以清楚的看到

根据Callstack回追

可以看到请求来自这里

此时的url是不带参数的

我们开始查找参数是在哪儿加上去的

此时的 t.url还没有参数

但是在下一层就带上了参数

从上图中 可以清晰地看到 此时intercepters的存在

跳入 intercepters流

即可找到加密主区块

至此 主题流程分析完毕

第三步 加密算法分析

加密函数分为 l.h 和 l.d两种

我们先分析 l.d

/**********此处已更新 开始*************/

我们的推测是 string当作hex解析(charcodeat)->bytesarray->base64

/**********此处已更新 结束*************/

现在为简单的btoa

function encryptA(str) {

return btoa(str);

}

下一个分析的是 l.h

这里就是一套很简单的加密算法= =

function encrypyB(a) {
    var e = "00000008d78d46a"; // 已更新 原本是a12c0fa6ab9119bc90e4ac7700796a53
    a = a.split("");
    for (var n = a.length, t = e.length, o = ["c", "h", "a", "r", "C", "o", "d", "e", "A", "t"].join(""), s = 0; s < n; s++)
        a[s] = String.fromCharCode(a[s][o](0) ^ e[s % t][o](0));
    return a.join("")
}

至此 分析全部完成

已验证可用

Github地址


请勿用于非法用途

评论

  • TIME回复

    请问冷月,Callstack回追是怎么用的呢?

  • bill回复

    2019-06-24日七麦又做了以下更新:
    1)如楼上@重口味发现的,前端js函数增加了个+10;
    https://blog.csdn.net/acingdreamer/article/details/92772335
    2)https://api.qimai.cn/account/signinForm登陆请求,请求头需要加上cookie,发现cookie只需要带synct=,其值任意,即请求头增加{“Cookie”: “synct=任意值”}。

    p.s.抱歉,班门弄斧了

  • 迪达拉回复

    git上加密的连接没法用了

  • 重口味回复

    已解决,请参考https://blog.csdn.net/acingdreamer/article/details/92772335

  • aaa回复

    加密方法变化了,求更新

  • Sylvester Almonte回复

    Great ?V I should definitely pronounce, impressed with your website. I had no trouble navigating through all the tabs and related information ended up being truly simple to do to access. I recently found what I hoped for before you know it in the least. Quite unusual. Is likely to appreciate it for those who add forums or anything, website theme . a tones way for your customer to communicate. Nice task..

  • mal回复

    @lengyue 破解代码已更新, 更新到哪了,没找到呢,谢谢大佬。

  • lengyue回复

    破解代码已更新

  • bill回复

    😥 好像七麦今天改了js加密文件

  • bill回复

    请问下’跳入 intercepters流’是怎么step into的

  • jsxiao回复

    最后一步中 e = “a12c0fa6ab9119bc90e4ac7700796a53”; 这个值怎么获取的 怎么也看不出来,求大佬 指教

  • 小菜鸡回复

    冷月大佬,我问个很基本的问题,我们把js代码下下来,改了之后就在本地了啊

  • lost回复

    我知道了,正在学习的过程中

  • lost回复

    请问这个回追是怎么回追的啊?我回追不过去啊?

  • zx回复

    大佬牛逼