极验2代破解(三)

  • 2018-10-10
  • 2,468
  • 2
  • 6

极验2代破解(三)

请勿用于非法用途

代码已提交 Github:  Geetest-V2


上篇文章讲的是 AES加密的主体部分

极验2代破解(二)

这一次 讲的就是 JSON串内部的 加密部分了

第一部分 UserResponse

也就是

i7B["C"](X, Challenge)

x就是这货啦

加密部分就是这块 自己扣一下吧

function a4(E5, t5) {
    var W4b = 5;
    var L4b = 8;
    var a4b = 0;
  var P5 = t5.slice(32),
    C5 = [],
    I5 = 0;
  while (a4b * (a4b + 1) * a4b % 2 == 0 && I5 < P5.length) {
      var U5 = P5.charCodeAt(I5);
        C5[I5] = U5 > 57 ? U5 - 87 : U5 - 48;
        a4b = a4b > 26247 ? a4b / 2 : a4b * 2;
    I5++;
  }
  P5 = 36 * C5[0] + C5[1];
    var K5 = Math.round(E5) + P5;
    t5 = t5.slice(0, 32);
    var n5, D5 = [[], [], [], [], []], f5 = {}, O5 = 0;
  I5 = 0;
    var g5 = t5.length;
    while (I5 < g5 && L4b * (L4b + 1) % 2 + 5) {
      n5 = t5.charAt(I5),
        f5[n5] || (f5[n5] = 1, D5[O5].push(n5), O5++, O5 = 5 == O5 ? 0 : O5);
        L4b = L4b >= 88842 ? L4b - 9 : L4b + 9;
    I5++;
  }
    var u5, x5 = K5, e5 = 4, s5 = "", i5 = [1, 2, 5, 10, 50];
  while (C5b = x5 > 0 && W4b * (W4b + 1) * W4b % 2 == 0) {
    x5 - i5[e5] >= 0 ? (u5 = parseInt(Math.random() * D5[e5].length, 10),
        s5 += D5[e5][u5],
        x5 -= i5[e5]) : (D5.splice(e5, 1),
        i5.splice(e5, 1), e5 -= 1);
    W4b = W4b > 46609 ? W4b / 4 : W4b * 4;
  }
  return s5;
}

 

第二部分 aa参数

j1r = (F7z = e7B[M9r.R8z(544)](F7z, V7z[M9r.R8z(190)][M9r.C8z(540)], V7z[M9r.R8z(190)][M9r.R8z(6)]),

这一行中

第一个是加密过的轨迹+时间戳 也就是

 

第二个 第三个 都是在get.php请求中获得的 ( 话说我还没写get.php的分析啊 Emmm

p7B[M9r.C8z(779)]("https://passport.bilibili.com/login" + "!!gt!!" + F7z)

最后调用这个来合成最终结果 (如果get到的信息中要求提交referer)

需要图片还原的话 留个言吧

本文经过了测试 请勿瞎喷

代码已提交 Github:  Geetest-V2


请勿用于非法用途

如果有用 求 Github Star

评论

  • wht回复

    大佬 有木有 学习进阶的文章 这样子看不懂的

    • lengyue回复

      没有啊……