【JS逆向】慕课网m3u8源文件解析

function imoocJieMi(t, e) {
  function r(t, e) {
    var r = "";
    if ("object" == typeof t)
      for (var n = 0; n < t.length; n++)
        r += String.fromCharCode(t[n]);
    t = r || t;
    for (var i, o, s = new Uint8Array(t.length), a = e.length, n = 0; n < t.length; n++)
      o = n % a,
        i = t[n],
        i = i.toString().charCodeAt(0),
        s[n] = i ^ e.charCodeAt(o);
    return s
  }
  function n(t) {
    var e = "";
    if ("object" == typeof t)
      for (var r = 0; r < t.length; r++)
        e += String.fromCharCode(t[r]);
    t = e || t;
    var n = new Uint8Array(t.length);
    for (r = 0; r < t.length; r++)
      n[r] = t[r].toString().charCodeAt(0);
    var i, o, r = 0;
    for (r = 0; r < n.length; r++)
      0 != (i = n[r] % 3) && r + i < n.length && (o = n[r + 1],
        n[r + 1] = n[r + i],
        n[r + i] = o,
        r = r + i + 1);
    return n
  }
  function i(t) {
    var e = "";
    if ("object" == typeof t)
      for (var r = 0; r < t.length; r++)
        e += String.fromCharCode(t[r]);
    t = e || t;
    var n = new Uint8Array(t.length);
    for (r = 0; r < t.length; r++)
      n[r] = t[r].toString().charCodeAt(0);
    var r = 0
      , i = 0
      , o = 0
      , s = 0;
    for (r = 0; r < n.length; r++)
      o = n[r] % 2,
        o && r++,
        s++;
    var a = new Uint8Array(s);
    for (r = 0; r < n.length; r++)
      o = n[r] % 2,
        a[i++] = o ? n[r++] : n[r];
    return a
  }
  function o(t, e) {
    var r = 0
      , n = 0
      , i = 0
      , o = 0
      , s = "";
    if ("object" == typeof t)
      for (var r = 0; r < t.length; r++)
        s += String.fromCharCode(t[r]);
    t = s || t;
    var a = new Uint8Array(t.length);
    for (r = 0; r < t.length; r++)
      a[r] = t[r].toString().charCodeAt(0);
    for (r = 0; r < t.length; r++)
      if (0 != (o = a[r] % 5) && 1 != o && r + o < a.length && (i = a[r + 1],
        n = r + 2,
        a[r + 1] = a[r + o],
        a[o + r] = i,
        (r = r + o + 1) - 2 > n))
        for (; n < r - 2; n++)
          a[n] = a[n] ^ e.charCodeAt(n % e.length);
    for (r = 0; r < t.length; r++)
      a[r] = a[r] ^ e.charCodeAt(r % e.length);
    return a
  }
  for (var s = {
    data: {
      info: t
    }
  }, a = {
    q: r,
    h: n,
    m: i,
    k: o
  }, l = s.data.info, u = l.substring(l.length - 4).split(""), c = 0; c < u.length; c++)
    u[c] = u[c].toString().charCodeAt(0) % 4;
  u.reverse();
  for (var d = [], c = 0; c < u.length; c++)
    d.push(l.substring(u[c] + 1, u[c] + 2)),
      l = l.substring(0, u[c] + 1) + l.substring(u[c] + 2);
  s.data.encrypt_table = d,
    s.data.key_table = [];
  for (var c in s.data.encrypt_table)
    "q" != s.data.encrypt_table[c] && "k" != s.data.encrypt_table[c] || (s.data.key_table.push(l.substring(l.length - 12)),
      l = l.substring(0, l.length - 12));
  s.data.key_table.reverse(),
    s.data.info = l;
  var f = new Array(-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1, -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1);
  s.data.info = function (t) {
    var e, r, n, i, o, s, a;
    for (s = t.length,
      o = 0,
      a = ""; o < s;) {
      do {
        e = f[255 & t.charCodeAt(o++)]
      } while (o < s && -1 == e);
      if (-1 == e)
        break;
      do {
        r = f[255 & t.charCodeAt(o++)]
      } while (o < s && -1 == r);
      if (-1 == r)
        break;
      a += String.fromCharCode(e << 2 | (48 & r) >> 4);
      do {
        if (61 == (n = 255 & t.charCodeAt(o++)))
          return a;
        n = f[n]
      } while (o < s && -1 == n);
      if (-1 == n)
        break;
      a += String.fromCharCode((15 & r) << 4 | (60 & n) >> 2);
      do {
        if (61 == (i = 255 & t.charCodeAt(o++)))
          return a;
        i = f[i]
      } while (o < s && -1 == i);
      if (-1 == i)
        break;
      a += String.fromCharCode((3 & n) << 6 | i)
    }
    return a
  }(s.data.info);
  for (var c in s.data.encrypt_table) {
    var h = s.data.encrypt_table[c];
    if ("q" == h || "k" == h) {
      var p = s.data.key_table.pop();
      s.data.info = a[s.data.encrypt_table[c]](s.data.info, p)
    } else
      s.data.info = a[s.data.encrypt_table[c]](s.data.info)
  }
  if (e)
    return s.data.info;
  var g = "";
  for (c = 0; c < s.data.info.length; c++)
    g += String.fromCharCode(s.data.info[c]);
  return g
}

imoocJieMi("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ZBKcGN3ujT374C7H0MpkJatS")

在这里插入图片描述

在这里插入图片描述