ToB企服应用市场:ToB评测及商务社交产业平台

标题: 某志愿网js逆向 [打印本页]

作者: 篮之新喜    时间: 2023-8-10 01:56
标题: 某志愿网js逆向
逆向过程分析与js代码扣取

请求头U-Sign数据


通过浏览器开发者工具可以看到返回数据的接口/youzy.dms.basiclib.api.college.query


添加XHR断点刷新浏览器会自动进入断点


查看具体请求数据,将断点定位到r = r.then(t.shift(), t.shift());


F8跳转到改断点位置,可以看到有5个方法


点击[[FunctionLocation]]:后的js查看方法,发现第一个方法里面有u-sign


将断点定位到u-sign,并将上一步的断点放开,F8定位到u-sign



  1. data = {<br>    "keyword": "",<br>    "provinceNames": [],<br>    "natureTypes": [],<br>    "eduLevel": "",<br>    "categories": [],<br>    "features": [],<br>    "pageIndex": 1,<br>    "pageSize": 20,<br>    "sort": 11<br>}
复制代码
进入o方法,断点并执行

观察发现该方法,发现参数o只是做了一个拼接,数据加密由n(o)完成,i值为固定值,a值为请求参数
  1. var i = "9SASji5OWnG41iRKiSvTJHlXHmRySRp1"<br>o = Object.keys(a).length > 0 ? "".concat(JSON.stringify(a), "&").concat(i) : "&".concat(i);<br>o = o.toLowerCase()<br>n(o)
复制代码

进入n方法并断点

复制出方法并改成正常方法
  1. // 防止重名改为exports123<br>exports123 = function(e, r) {<br>  if (null == e)<br>    throw new Error("Illegal argument " + e);<br>  var n = t.wordsToBytes(a(e, r));<br>  return r && r.asBytes ? n : r && r.asString ? o.bytesToString(n) : t.bytesToHex(n)<br>}
复制代码
我们现在可以得到js
  1. var i = "9SASji5OWnG41iRKiSvTJHlXHmRySRp1",<br>    data = {<br>        "keyword": "",<br>        "provinceNames": [],<br>        "natureTypes": [],<br>        "eduLevel": "",<br>        "categories": [],<br>        "features": [],<br>        "pageIndex": 1,<br>        "pageSize": 20,<br>        "sort": 11<br>    }, <br>    uri = '/youzy.dms.basiclib.api.college.query'<br>​<br>​<br>exports123 = function(e, r) {<br>    if (null == e)<br>        throw new Error("Illegal argument " + e);<br>    var n = t.wordsToBytes(a(e, r));<br>    return r && r.asBytes ? n : r && r.asString ? o.bytesToString(n) : t.bytesToHex(n)<br>}<br>​<br>// 将a改为data<br>o = Object.keys(data).length > 0 ? "".concat(JSON.stringify(data), "&").concat(i) : "&".concat(i);<br>o = o.toLowerCase()<br>​<br>console.log(exports123(o))
复制代码
执行发现t未定义,进入t 跳转到到wordsToBytes在r中,即t为r,将r复制出来并改名r123,并将t.wordsToBytes改为r123.wordsToBytes
  1. r123 = {<br>  rotl: function(e, t) {<br>    return e << t | e >>> 32 - t<br>  },<br>  rotr: function(e, t) {<br>    return e << 32 - t | e >>> t<br>  },<br>  endian: function(e) {<br>    if (e.constructor == Number)<br>      return 16711935 & r123.rotl(e, 8) | 4278255360 & r123.rotl(e, 24);<br>    for (var t = 0; t < e.length; t++)<br>      e[t] = r123.endian(e[t]);<br>    return e<br>  },<br>  randomBytes: function(e) {<br>    for (var t = []; e > 0; e--)<br>      t.push(Math.floor(256 * Math.random()));<br>    return t<br>  },<br>  bytesToWords: function(e) {<br>    for (var t = [], r = 0, n = 0; r < e.length; r++,<br>         n += 8)<br>      t[n >>> 5] |= e[r] << 24 - n % 32;<br>    return t<br>  },<br>  wordsToBytes: function(e) {<br>    for (var t = [], r = 0; r < 32 * e.length; r += 8)<br>      t.push(e[r >>> 5] >>> 24 - r % 32 & 255);<br>    return t<br>  },<br>  bytesToHex: function(e) {<br>    for (var t = [], r = 0; r < e.length; r++)<br>      t.push((e[r] >>> 4).toString(16)),<br>        t.push((15 & e[r]).toString(16));<br>    return t.join("")<br>  },<br>  hexToBytes: function(e) {<br>    for (var t = [], r = 0; r < e.length; r += 2)<br>      t.push(parseInt(e.substr(r, 2), 16));<br>    return t<br>  },<br>  bytesToBase64: function(e) {<br>    for (var r = [], n = 0; n < e.length; n += 3)<br>      for (var i = e[n] << 16 | e[n + 1] << 8 | e[n + 2], o = 0; o < 4; o++)<br>        8 * n + 6 * o <= 8 * e.length ? r.push(t.charAt(i >>> 6 * (3 - o) & 63)) : r.push("=");<br>    return r.join("")<br>  },<br>  base64ToBytes: function(e) {<br>    e = e.replace(/[^A-Z0-9+\/]/gi, "");<br>    for (var r = [], n = 0, i = 0; n < e.length; i = ++n % 4)<br>      0 != i && r.push((t.indexOf(e.charAt(n - 1)) & Math.pow(2, -2 * i + 8) - 1) << 2 * i | t.indexOf(e.charAt(n)) >>> 6 - 2 * i);<br>    return r<br>  }<br>}
复制代码
此时我们的js文件为
  1. var i = "9SASji5OWnG41iRKiSvTJHlXHmRySRp1",
  2. data = {<br>    "keyword": "",<br>    "provinceNames": [],<br>    "natureTypes": [],<br>    "eduLevel": "",<br>    "categories": [],<br>    "features": [],<br>    "pageIndex": 1,<br>    "pageSize": 20,<br>    "sort": 11<br>}, uri = '/youzy.dms.basiclib.api.college.query'
  3. exports123 = function(e, r) {
  4.    if (null == e)
  5.        throw new Error("Illegal argument " + e);
  6.    var n = r123.wordsToBytes(a(e, r));
  7.    return r && r.asBytes ? n : r && r.asString ? o.bytesToString(n) : t.bytesToHex(n)
  8. }
  9. //t
  10. r123 = {
  11.    rotl: function(e, t) {
  12.        return e >> 32 - t
  13.    },
  14.    rotr: function(e, t) {
  15.        return e >> t
  16.    },
  17.    endian: function(e) {
  18.        if (e.constructor == Number)
  19.            return 16711935 & r123.rotl(e, 8) | 4278255360 & r123.rotl(e, 24);
  20.        for (var t = 0; t < e.length; t++)
  21.            e[t] = r123.endian(e[t]);
  22.        return e
  23.    },
  24.    randomBytes: function(e) {
  25.        for (var t = []; e > 0; e--)
  26.            t.push(Math.floor(256 * Math.random()));
  27.        return t
  28.    },
  29.    bytesToWords: function(e) {
  30.        for (var t = [], r = 0, n = 0; r < e.length; r++,
  31.            n += 8)
  32.            t[n >>> 5] |= e[r] >> 5] >>> 24 - r % 32 & 255);
  33.        return t
  34.    },
  35.    bytesToHex: function(e) {
  36.        for (var t = [], r = 0; r < e.length; r++)
  37.            t.push((e[r] >>> 4).toString(16)),
  38.                t.push((15 & e[r]).toString(16));
  39.        return t.join("")
  40.    },
  41.    hexToBytes: function(e) {
  42.        for (var t = [], r = 0; r < e.length; r += 2)
  43.            t.push(parseInt(e.substr(r, 2), 16));
  44.        return t
  45.    },
  46.    bytesToBase64: function(e) {
  47.        for (var r = [], n = 0; n < e.length; n += 3)
  48.            for (var i = e[n]  6 * (3 - o) & 63)) : r.push("=");
  49.        return r.join("")
  50.    },
  51.    base64ToBytes: function(e) {
  52.        e = e.replace(/[^A-Z0-9+\/]/gi, "");
  53.        for (var r = [], n = 0, i = 0; n < e.length; i = ++n % 4)
  54.            0 != i && r.push((t.indexOf(e.charAt(n - 1)) & Math.pow(2, -2 * i + 8) - 1) >> 6 - 2 * i);
  55.        return r
  56.    }
  57. }
  58. o = Object.keys(data).length > 0 ? "".concat(JSON.stringify(data), "&").concat(i) : "&".concat(i);
  59. o = o.toLowerCase()
  60. console.log(exports123(o))
复制代码
执行提示a未定义


进入a并将a复制出来,改名123,替换其中的t.bytesToWords为r123.bytesToWords,t.endianr为123.endian
  1. a123 = function(e, r) {<br>    e.constructor == String ? e = r && "binary" === r.encoding ? o.stringToBytes(e) : n.stringToBytes(e) : i(e) ? e = Array.prototype.slice.call(e, 0) : Array.isArray(e) || e.constructor === Uint8Array || (e = e.toString());<br>    for (var s = r123.bytesToWords(e), u = 8 * e.length, c = 1732584193, f = -271733879, d = -1732584194, l = 271733878, h = 0; h < s.length; h++)<br>        s[h] = 16711935 & (s[h] << 8 | s[h] >>> 24) | 4278255360 & (s[h] << 24 | s[h] >>> 8);<br>    s[u >>> 5] |= 128 << u % 32,<br>        s[14 + (u + 64 >>> 9 << 4)] = u;<br>    var p = a._ff<br>        , b = a._gg<br>        , y = a._hh<br>        , m = a._ii;<br>    for (h = 0; h < s.length; h += 16) {<br>        var g = c<br>            , v = f<br>            , _ = d<br>            , w = l;<br>        c = p(c, f, d, l, s[h + 0], 7, -680876936),<br>            l = p(l, c, f, d, s[h + 1], 12, -389564586),<br>            d = p(d, l, c, f, s[h + 2], 17, 606105819),<br>            f = p(f, d, l, c, s[h + 3], 22, -1044525330),<br>            c = p(c, f, d, l, s[h + 4], 7, -176418897),<br>            l = p(l, c, f, d, s[h + 5], 12, 1200080426),<br>            d = p(d, l, c, f, s[h + 6], 17, -1473231341),<br>            f = p(f, d, l, c, s[h + 7], 22, -45705983),<br>            c = p(c, f, d, l, s[h + 8], 7, 1770035416),<br>            l = p(l, c, f, d, s[h + 9], 12, -1958414417),<br>            d = p(d, l, c, f, s[h + 10], 17, -42063),<br>            f = p(f, d, l, c, s[h + 11], 22, -1990404162),<br>            c = p(c, f, d, l, s[h + 12], 7, 1804603682),<br>            l = p(l, c, f, d, s[h + 13], 12, -40341101),<br>            d = p(d, l, c, f, s[h + 14], 17, -1502002290),<br>            c = b(c, f = p(f, d, l, c, s[h + 15], 22, 1236535329), d, l, s[h + 1], 5, -165796510),<br>            l = b(l, c, f, d, s[h + 6], 9, -1069501632),<br>            d = b(d, l, c, f, s[h + 11], 14, 643717713),<br>            f = b(f, d, l, c, s[h + 0], 20, -373897302),<br>            c = b(c, f, d, l, s[h + 5], 5, -701558691),<br>            l = b(l, c, f, d, s[h + 10], 9, 38016083),<br>            d = b(d, l, c, f, s[h + 15], 14, -660478335),<br>            f = b(f, d, l, c, s[h + 4], 20, -405537848),<br>            c = b(c, f, d, l, s[h + 9], 5, 568446438),<br>            l = b(l, c, f, d, s[h + 14], 9, -1019803690),<br>            d = b(d, l, c, f, s[h + 3], 14, -187363961),<br>            f = b(f, d, l, c, s[h + 8], 20, 1163531501),<br>            c = b(c, f, d, l, s[h + 13], 5, -1444681467),<br>            l = b(l, c, f, d, s[h + 2], 9, -51403784),<br>            d = b(d, l, c, f, s[h + 7], 14, 1735328473),<br>            c = y(c, f = b(f, d, l, c, s[h + 12], 20, -1926607734), d, l, s[h + 5], 4, -378558),<br>            l = y(l, c, f, d, s[h + 8], 11, -2022574463),<br>            d = y(d, l, c, f, s[h + 11], 16, 1839030562),<br>            f = y(f, d, l, c, s[h + 14], 23, -35309556),<br>            c = y(c, f, d, l, s[h + 1], 4, -1530992060),<br>            l = y(l, c, f, d, s[h + 4], 11, 1272893353),<br>            d = y(d, l, c, f, s[h + 7], 16, -155497632),<br>            f = y(f, d, l, c, s[h + 10], 23, -1094730640),<br>            c = y(c, f, d, l, s[h + 13], 4, 681279174),<br>            l = y(l, c, f, d, s[h + 0], 11, -358537222),<br>            d = y(d, l, c, f, s[h + 3], 16, -722521979),<br>            f = y(f, d, l, c, s[h + 6], 23, 76029189),<br>            c = y(c, f, d, l, s[h + 9], 4, -640364487),<br>            l = y(l, c, f, d, s[h + 12], 11, -421815835),<br>            d = y(d, l, c, f, s[h + 15], 16, 530742520),<br>            c = m(c, f = y(f, d, l, c, s[h + 2], 23, -995338651), d, l, s[h + 0], 6, -198630844),<br>            l = m(l, c, f, d, s[h + 7], 10, 1126891415),<br>            d = m(d, l, c, f, s[h + 14], 15, -1416354905),<br>            f = m(f, d, l, c, s[h + 5], 21, -57434055),<br>            c = m(c, f, d, l, s[h + 12], 6, 1700485571),<br>            l = m(l, c, f, d, s[h + 3], 10, -1894986606),<br>            d = m(d, l, c, f, s[h + 10], 15, -1051523),<br>            f = m(f, d, l, c, s[h + 1], 21, -2054922799),<br>            c = m(c, f, d, l, s[h + 8], 6, 1873313359),<br>            l = m(l, c, f, d, s[h + 15], 10, -30611744),<br>            d = m(d, l, c, f, s[h + 6], 15, -1560198380),<br>            f = m(f, d, l, c, s[h + 13], 21, 1309151649),<br>            c = m(c, f, d, l, s[h + 4], 6, -145523070),<br>            l = m(l, c, f, d, s[h + 11], 10, -1120210379),<br>            d = m(d, l, c, f, s[h + 2], 15, 718787259),<br>            f = m(f, d, l, c, s[h + 9], 21, -343485551),<br>            c = c + g >>> 0,<br>            f = f + v >>> 0,<br>            d = d + _ >>> 0,<br>            l = l + w >>> 0<br>    }<br>    return r123.endian([c, f, d, l])<br>}<br>​
复制代码
继续发现n未定义 进入n
将n复制出来,改名n123
  1. var n123 = {<br>            utf8: {<br>                stringToBytes: function(e) {<br>                    return n123.bin.stringToBytes(unescape(encodeURIComponent(e)))<br>                },<br>                bytesToString: function(e) {<br>                    return decodeURIComponent(escape(r.bin.bytesToString(e)))<br>                }<br>            },<br>            bin: {<br>                stringToBytes: function(e) {<br>                    for (var t = [], r = 0; r < e.length; r++)<br>                        t.push(255 & e.charCodeAt(r));<br>                    return t<br>                },<br>                bytesToString: function(e) {<br>                    for (var t = [], r = 0; r < e.length; r++)<br>                        t.push(String.fromCharCode(e[r]));<br>                    return t.join("")<br>                }<br>            }<br>        }
复制代码
继续运行发现a123的缺少以下这些方法

复制出来改造下
  1. _ff = function(e, t, r, n, i, o, a) {<br>  var s = e + (t & r | ~t & n) + (i >>> 0) + a;<br>  return (s << o | s >>> 32 - o) + t<br>}<br>_gg = function(e, t, r, n, i, o, a) {<br>  var s = e + (t & n | r & ~n) + (i >>> 0) + a;<br>  return (s << o | s >>> 32 - o) + t<br>}<br>_hh = function(e, t, r, n, i, o, a) {<br>  var s = e + (t ^ r ^ n) + (i >>> 0) + a;<br>  return (s << o | s >>> 32 - o) + t<br>}<br>_ii = function(e, t, r, n, i, o, a) {<br>  var s = e + (r ^ (t | ~n)) + (i >>> 0) + a;<br>  return (s << o | s >>> 32 - o) + t<br>}
复制代码
完整的a方法
  1. // a<br>a123 = function(e, r) {<br>    e.constructor == String ? e = r && "binary" === r.encoding ? o.stringToBytes(e) : n123.utf8.stringToBytes(e) : i(e) ? e = Array.prototype.slice.call(e, 0) : Array.isArray(e) || e.constructor === Uint8Array || (e = e.toString());<br>    for (var s = r123.bytesToWords(e), u = 8 * e.length, c = 1732584193, f = -271733879, d = -1732584194, l = 271733878, h = 0; h < s.length; h++)<br>        s[h] = 16711935 & (s[h] << 8 | s[h] >>> 24) | 4278255360 & (s[h] << 24 | s[h] >>> 8);<br>    s[u >>> 5] |= 128 << u % 32,<br>        s[14 + (u + 64 >>> 9 << 4)] = u;<br>    var p = _ff<br>        , b = _gg<br>        , y = _hh<br>        , m = _ii;<br>    for (h = 0; h < s.length; h += 16) {<br>        var g = c<br>            , v = f<br>            , _ = d<br>            , w = l;<br>        c = p(c, f, d, l, s[h + 0], 7, -680876936),<br>            l = p(l, c, f, d, s[h + 1], 12, -389564586),<br>            d = p(d, l, c, f, s[h + 2], 17, 606105819),<br>            f = p(f, d, l, c, s[h + 3], 22, -1044525330),<br>            c = p(c, f, d, l, s[h + 4], 7, -176418897),<br>            l = p(l, c, f, d, s[h + 5], 12, 1200080426),<br>            d = p(d, l, c, f, s[h + 6], 17, -1473231341),<br>            f = p(f, d, l, c, s[h + 7], 22, -45705983),<br>            c = p(c, f, d, l, s[h + 8], 7, 1770035416),<br>            l = p(l, c, f, d, s[h + 9], 12, -1958414417),<br>            d = p(d, l, c, f, s[h + 10], 17, -42063),<br>            f = p(f, d, l, c, s[h + 11], 22, -1990404162),<br>            c = p(c, f, d, l, s[h + 12], 7, 1804603682),<br>            l = p(l, c, f, d, s[h + 13], 12, -40341101),<br>            d = p(d, l, c, f, s[h + 14], 17, -1502002290),<br>            c = b(c, f = p(f, d, l, c, s[h + 15], 22, 1236535329), d, l, s[h + 1], 5, -165796510),<br>            l = b(l, c, f, d, s[h + 6], 9, -1069501632),<br>            d = b(d, l, c, f, s[h + 11], 14, 643717713),<br>            f = b(f, d, l, c, s[h + 0], 20, -373897302),<br>            c = b(c, f, d, l, s[h + 5], 5, -701558691),<br>            l = b(l, c, f, d, s[h + 10], 9, 38016083),<br>            d = b(d, l, c, f, s[h + 15], 14, -660478335),<br>            f = b(f, d, l, c, s[h + 4], 20, -405537848),<br>            c = b(c, f, d, l, s[h + 9], 5, 568446438),<br>            l = b(l, c, f, d, s[h + 14], 9, -1019803690),<br>            d = b(d, l, c, f, s[h + 3], 14, -187363961),<br>            f = b(f, d, l, c, s[h + 8], 20, 1163531501),<br>            c = b(c, f, d, l, s[h + 13], 5, -1444681467),<br>            l = b(l, c, f, d, s[h + 2], 9, -51403784),<br>            d = b(d, l, c, f, s[h + 7], 14, 1735328473),<br>            c = y(c, f = b(f, d, l, c, s[h + 12], 20, -1926607734), d, l, s[h + 5], 4, -378558),<br>            l = y(l, c, f, d, s[h + 8], 11, -2022574463),<br>            d = y(d, l, c, f, s[h + 11], 16, 1839030562),<br>            f = y(f, d, l, c, s[h + 14], 23, -35309556),<br>            c = y(c, f, d, l, s[h + 1], 4, -1530992060),<br>            l = y(l, c, f, d, s[h + 4], 11, 1272893353),<br>            d = y(d, l, c, f, s[h + 7], 16, -155497632),<br>            f = y(f, d, l, c, s[h + 10], 23, -1094730640),<br>            c = y(c, f, d, l, s[h + 13], 4, 681279174),<br>            l = y(l, c, f, d, s[h + 0], 11, -358537222),<br>            d = y(d, l, c, f, s[h + 3], 16, -722521979),<br>            f = y(f, d, l, c, s[h + 6], 23, 76029189),<br>            c = y(c, f, d, l, s[h + 9], 4, -640364487),<br>            l = y(l, c, f, d, s[h + 12], 11, -421815835),<br>            d = y(d, l, c, f, s[h + 15], 16, 530742520),<br>            c = m(c, f = y(f, d, l, c, s[h + 2], 23, -995338651), d, l, s[h + 0], 6, -198630844),<br>            l = m(l, c, f, d, s[h + 7], 10, 1126891415),<br>            d = m(d, l, c, f, s[h + 14], 15, -1416354905),<br>            f = m(f, d, l, c, s[h + 5], 21, -57434055),<br>            c = m(c, f, d, l, s[h + 12], 6, 1700485571),<br>            l = m(l, c, f, d, s[h + 3], 10, -1894986606),<br>            d = m(d, l, c, f, s[h + 10], 15, -1051523),<br>            f = m(f, d, l, c, s[h + 1], 21, -2054922799),<br>            c = m(c, f, d, l, s[h + 8], 6, 1873313359),<br>            l = m(l, c, f, d, s[h + 15], 10, -30611744),<br>            d = m(d, l, c, f, s[h + 6], 15, -1560198380),<br>            f = m(f, d, l, c, s[h + 13], 21, 1309151649),<br>            c = m(c, f, d, l, s[h + 4], 6, -145523070),<br>            l = m(l, c, f, d, s[h + 11], 10, -1120210379),<br>            d = m(d, l, c, f, s[h + 2], 15, 718787259),<br>            f = m(f, d, l, c, s[h + 9], 21, -343485551),<br>            c = c + g >>> 0,<br>            f = f + v >>> 0,<br>            d = d + _ >>> 0,<br>            l = l + w >>> 0<br>    }<br>    return r123.endian([c, f, d, l])<br>}<br>_ff = function(e, t, r, n, i, o, a) {<br>    var s = e + (t & r | ~t & n) + (i >>> 0) + a;<br>    return (s << o | s >>> 32 - o) + t<br>}<br>_gg = function(e, t, r, n, i, o, a) {<br>        var s = e + (t & n | r & ~n) + (i >>> 0) + a;<br>        return (s << o | s >>> 32 - o) + t<br>    }<br>_hh = function(e, t, r, n, i, o, a) {<br>        var s = e + (t ^ r ^ n) + (i >>> 0) + a;<br>        return (s << o | s >>> 32 - o) + t<br>    }<br>_ii = function(e, t, r, n, i, o, a) {<br>        var s = e + (r ^ (t | ~n)) + (i >>> 0) + a;<br>        return (s << o | s >>> 32 - o) + t<br>    }
复制代码
完整的js代码
  1. var i = "9SASji5OWnG41iRKiSvTJHlXHmRySRp1",<br>    data = {<br>        "keyword": "",<br>        "provinceNames": [],<br>        "natureTypes": [],<br>        "eduLevel": "",<br>        "categories": [],<br>        "features": [],<br>        "pageIndex": 1,<br>        "pageSize": 20,<br>        "sort": 11<br>    }, uri = '/youzy.dms.basiclib.api.college.query'<br>exports123 = function (e, r) {<br>    if (null == e)<br>        throw new Error("Illegal argument " + e);<br>    var n = r123.wordsToBytes(a123(e, r));<br>    return r && r.asBytes ? n : r && r.asString ? o.bytesToString(n) : r123.bytesToHex(n)<br>}<br>​<br>// n<br>var n123 = {<br>    utf8: {<br>        stringToBytes: function (e) {<br>            return n123.bin.stringToBytes(unescape(encodeURIComponent(e)))<br>        },<br>        bytesToString: function (e) {<br>            return decodeURIComponent(escape(r.bin.bytesToString(e)))<br>        }<br>    },<br>    bin: {<br>        stringToBytes: function (e) {<br>            for (var t = [], r = 0; r < e.length; r++)<br>                t.push(255 & e.charCodeAt(r));<br>            return t<br>        },<br>        bytesToString: function (e) {<br>            for (var t = [], r = 0; r < e.length; r++)<br>                t.push(String.fromCharCode(e[r]));<br>            return t.join("")<br>        }<br>    }<br>}<br>​<br>//t<br>r123 = {<br>    rotl: function (e, t) {<br>        return e << t | e >>> 32 - t<br>    },<br>    rotr: function (e, t) {<br>        return e << 32 - t | e >>> t<br>    },<br>    endian: function (e) {<br>        if (e.constructor == Number)<br>            return 16711935 & r123.rotl(e, 8) | 4278255360 & r123.rotl(e, 24);<br>        for (var t = 0; t < e.length; t++)<br>            e[t] = r123.endian(e[t]);<br>        return e<br>    },<br>    randomBytes: function (e) {<br>        for (var t = []; e > 0; e--)<br>            t.push(Math.floor(256 * Math.random()));<br>        return t<br>    },<br>    bytesToWords: function (e) {<br>        for (var t = [], r = 0, n = 0; r < e.length; r++,<br>            n += 8)<br>            t[n >>> 5] |= e[r] << 24 - n % 32;<br>        return t<br>    },<br>    wordsToBytes: function (e) {<br>        for (var t = [], r = 0; r < 32 * e.length; r += 8)<br>            t.push(e[r >>> 5] >>> 24 - r % 32 & 255);<br>        return t<br>    },<br>    bytesToHex: function (e) {<br>        for (var t = [], r = 0; r < e.length; r++)<br>            t.push((e[r] >>> 4).toString(16)),<br>                t.push((15 & e[r]).toString(16));<br>        return t.join("")<br>    },<br>    hexToBytes: function (e) {<br>        for (var t = [], r = 0; r < e.length; r += 2)<br>            t.push(parseInt(e.substr(r, 2), 16));<br>        return t<br>    },<br>    bytesToBase64: function (e) {<br>        for (var r = [], n = 0; n < e.length; n += 3)<br>            for (var i = e[n] << 16 | e[n + 1] << 8 | e[n + 2], o = 0; o < 4; o++)<br>                8 * n + 6 * o <= 8 * e.length ? r.push(t.charAt(i >>> 6 * (3 - o) & 63)) : r.push("=");<br>        return r.join("")<br>    },<br>    base64ToBytes: function (e) {<br>        e = e.replace(/[^A-Z0-9+\/]/gi, "");<br>        for (var r = [], n = 0, i = 0; n < e.length; i = ++n % 4)<br>            0 != i && r.push((t.indexOf(e.charAt(n - 1)) & Math.pow(2, -2 * i + 8) - 1) << 2 * i | t.indexOf(e.charAt(n)) >>> 6 - 2 * i);<br>        return r<br>    }<br>}<br>​<br>// a<br>a123 = function (e, r) {<br>    e.constructor == String ? e = r && "binary" === r.encoding ? o.stringToBytes(e) : n123.utf8.stringToBytes(e) : i(e) ? e = Array.prototype.slice.call(e, 0) : Array.isArray(e) || e.constructor === Uint8Array || (e = e.toString());<br>    for (var s = r123.bytesToWords(e), u = 8 * e.length, c = 1732584193, f = -271733879, d = -1732584194, l = 271733878, h = 0; h < s.length; h++)<br>        s[h] = 16711935 & (s[h] << 8 | s[h] >>> 24) | 4278255360 & (s[h] << 24 | s[h] >>> 8);<br>    s[u >>> 5] |= 128 << u % 32,<br>        s[14 + (u + 64 >>> 9 << 4)] = u;<br>    var p = _ff<br>        , b = _gg<br>        , y = _hh<br>        , m = _ii;<br>    for (h = 0; h < s.length; h += 16) {<br>        var g = c<br>            , v = f<br>            , _ = d<br>            , w = l;<br>        c = p(c, f, d, l, s[h + 0], 7, -680876936),<br>            l = p(l, c, f, d, s[h + 1], 12, -389564586),<br>            d = p(d, l, c, f, s[h + 2], 17, 606105819),<br>            f = p(f, d, l, c, s[h + 3], 22, -1044525330),<br>            c = p(c, f, d, l, s[h + 4], 7, -176418897),<br>            l = p(l, c, f, d, s[h + 5], 12, 1200080426),<br>            d = p(d, l, c, f, s[h + 6], 17, -1473231341),<br>            f = p(f, d, l, c, s[h + 7], 22, -45705983),<br>            c = p(c, f, d, l, s[h + 8], 7, 1770035416),<br>            l = p(l, c, f, d, s[h + 9], 12, -1958414417),<br>            d = p(d, l, c, f, s[h + 10], 17, -42063),<br>            f = p(f, d, l, c, s[h + 11], 22, -1990404162),<br>            c = p(c, f, d, l, s[h + 12], 7, 1804603682),<br>            l = p(l, c, f, d, s[h + 13], 12, -40341101),<br>            d = p(d, l, c, f, s[h + 14], 17, -1502002290),<br>            c = b(c, f = p(f, d, l, c, s[h + 15], 22, 1236535329), d, l, s[h + 1], 5, -165796510),<br>            l = b(l, c, f, d, s[h + 6], 9, -1069501632),<br>            d = b(d, l, c, f, s[h + 11], 14, 643717713),<br>            f = b(f, d, l, c, s[h + 0], 20, -373897302),<br>            c = b(c, f, d, l, s[h + 5], 5, -701558691),<br>            l = b(l, c, f, d, s[h + 10], 9, 38016083),<br>            d = b(d, l, c, f, s[h + 15], 14, -660478335),<br>            f = b(f, d, l, c, s[h + 4], 20, -405537848),<br>            c = b(c, f, d, l, s[h + 9], 5, 568446438),<br>            l = b(l, c, f, d, s[h + 14], 9, -1019803690),<br>            d = b(d, l, c, f, s[h + 3], 14, -187363961),<br>            f = b(f, d, l, c, s[h + 8], 20, 1163531501),<br>            c = b(c, f, d, l, s[h + 13], 5, -1444681467),<br>            l = b(l, c, f, d, s[h + 2], 9, -51403784),<br>            d = b(d, l, c, f, s[h + 7], 14, 1735328473),<br>            c = y(c, f = b(f, d, l, c, s[h + 12], 20, -1926607734), d, l, s[h + 5], 4, -378558),<br>            l = y(l, c, f, d, s[h + 8], 11, -2022574463),<br>            d = y(d, l, c, f, s[h + 11], 16, 1839030562),<br>            f = y(f, d, l, c, s[h + 14], 23, -35309556),<br>            c = y(c, f, d, l, s[h + 1], 4, -1530992060),<br>            l = y(l, c, f, d, s[h + 4], 11, 1272893353),<br>            d = y(d, l, c, f, s[h + 7], 16, -155497632),<br>            f = y(f, d, l, c, s[h + 10], 23, -1094730640),<br>            c = y(c, f, d, l, s[h + 13], 4, 681279174),<br>            l = y(l, c, f, d, s[h + 0], 11, -358537222),<br>            d = y(d, l, c, f, s[h + 3], 16, -722521979),<br>            f = y(f, d, l, c, s[h + 6], 23, 76029189),<br>            c = y(c, f, d, l, s[h + 9], 4, -640364487),<br>            l = y(l, c, f, d, s[h + 12], 11, -421815835),<br>            d = y(d, l, c, f, s[h + 15], 16, 530742520),<br>            c = m(c, f = y(f, d, l, c, s[h + 2], 23, -995338651), d, l, s[h + 0], 6, -198630844),<br>            l = m(l, c, f, d, s[h + 7], 10, 1126891415),<br>            d = m(d, l, c, f, s[h + 14], 15, -1416354905),<br>            f = m(f, d, l, c, s[h + 5], 21, -57434055),<br>            c = m(c, f, d, l, s[h + 12], 6, 1700485571),<br>            l = m(l, c, f, d, s[h + 3], 10, -1894986606),<br>            d = m(d, l, c, f, s[h + 10], 15, -1051523),<br>            f = m(f, d, l, c, s[h + 1], 21, -2054922799),<br>            c = m(c, f, d, l, s[h + 8], 6, 1873313359),<br>            l = m(l, c, f, d, s[h + 15], 10, -30611744),<br>            d = m(d, l, c, f, s[h + 6], 15, -1560198380),<br>            f = m(f, d, l, c, s[h + 13], 21, 1309151649),<br>            c = m(c, f, d, l, s[h + 4], 6, -145523070),<br>            l = m(l, c, f, d, s[h + 11], 10, -1120210379),<br>            d = m(d, l, c, f, s[h + 2], 15, 718787259),<br>            f = m(f, d, l, c, s[h + 9], 21, -343485551),<br>            c = c + g >>> 0,<br>            f = f + v >>> 0,<br>            d = d + _ >>> 0,<br>            l = l + w >>> 0<br>    }<br>    return r123.endian([c, f, d, l])<br>}<br>_ff = function (e, t, r, n, i, o, a) {<br>    var s = e + (t & r | ~t & n) + (i >>> 0) + a;<br>    return (s << o | s >>> 32 - o) + t<br>}<br>_gg = function (e, t, r, n, i, o, a) {<br>    var s = e + (t & n | r & ~n) + (i >>> 0) + a;<br>    return (s << o | s >>> 32 - o) + t<br>}<br>_hh = function (e, t, r, n, i, o, a) {<br>    var s = e + (t ^ r ^ n) + (i >>> 0) + a;<br>    return (s << o | s >>> 32 - o) + t<br>}<br>_ii = function (e, t, r, n, i, o, a) {<br>    var s = e + (r ^ (t | ~n)) + (i >>> 0) + a;<br>    return (s << o | s >>> 32 - o) + t<br>}<br>​<br>o = Object.keys(data).length > 0 ? "".concat(JSON.stringify(data), "&").concat(i) : "&".concat(i);<br>o = o.toLowerCase()<br>​<br>console.log(exports123(o))
复制代码
java调用

js封装方法提供java调用
  1. ​<br>function sign(data){<br>    data =  JSON.parse(data)<br>    o = Object.keys(data).length > 0 ? "".concat(JSON.stringify(data), "&").concat(i) : "&".concat(i);<br>    o = o.toLowerCase()<br>    return exports123(o)<br>}
复制代码
java代码示例
  1. package com.wq;<br>​<br>import cn.hutool.http.HttpUtil;<br>​<br>​<br>import javax.script.Invocable;<br>import javax.script.ScriptEngine;<br>import javax.script.ScriptEngineManager;<br>import javax.script.ScriptException;<br>import java.io.*;<br>import java.nio.charset.StandardCharsets;<br>import java.util.HashMap;<br>import java.util.Map;<br>​<br>/**<br> * @Description TODO<br> * @Version 1.0.0<br> * @Date 2023/7/13<br> * @Author wandaren<br> */<br>public class TestMain {<br>    public static void main(String[] args) throws ScriptException, FileNotFoundException, NoSuchMethodException {<br>        int pageIndex = 1;<br>        String url = "https://uwf7de983aad7a717eb.youzy.cn/youzy.dms.basiclib.api.college.query";<br>        String i = "/youzy.dms.basiclib.api.college.query";<br>        String data = "{"keyword":"","provinceNames":[],"natureTypes":[],"eduLevel":"","categories":[],"features":[],"pageIndex":"+pageIndex+","pageSize":20,"sort":11}";<br>​<br>        BufferedReader buf =  new BufferedReader(new InputStreamReader(<br>                        new FileInputStream("/Users/wandaren/Downloads/Compressed/zktest/src/test/java/com/wq/youzy.js"), StandardCharsets.UTF_8));<br>        // 获取JS执行引擎<br>        ScriptEngineManager scriptManager = new ScriptEngineManager();<br>            ScriptEngine js = scriptManager.getEngineByExtension("js");<br>            js.eval(buf);<br>            Invocable inv = (Invocable) js;<br>        String sign = (String) inv.invokeFunction("sign", data,i);<br>        System.out.println(sign);<br>​<br>            Map<String,String> map = new HashMap<>();<br>                map.put("Accept", "*/*");<br>                map.put("Accept-Language", "zh-CN,zh;q=0.9,en;q=0.8");<br>                map.put("Connection", "keep-alive");<br>                map.put("Content-Type", "application/json");<br>                map.put("Host", "uwf7de983aad7a717eb.youzy.cn");<br>                map.put("Origin", "https://pv4y-pc.youzy.cn");<br>                map.put("Referer", "https://pv4y-pc.youzy.cn/");<br>                map.put("Sec-Fetch-Dest", "empty");<br>                map.put("Sec-Fetch-Mode", "cors");<br>                map.put("Sec-Fetch-Site", "same-site");<br>                map.put("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36");<br>                map.put("sec-ch-ua", ""Not.A/Brand";v="8", "Chromium";v="114", "Google Chrome";v="114"");<br>                map.put("sec-ch-ua-mobile", "?0");<br>                map.put("sec-ch-ua-platform", ""macOS"");<br>                map.put("u-sign", sign+"");<br>                map.put("u-token", "");<br>        final String body = HttpUtil<br>                .createPost(url)<br>                .addHeaders(map)<br>                .body(data)<br>                .execute()<br>                .body();<br>        System.out.println(body);<br>​<br>​<br>    }<br>}
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4