当前位置: 首页 > news >正文

图灵逆向——题十-魔改算法

目录列表

    • 过程分析
    • JS代码还原
    • 代码实现
    • 运行结果

本题属于魔改标准加密算法,所以无法使用JS或Python中的标准库来进行模拟加密了,只能一步一步的还原它的环境咯。。。

过程分析

打开控制台发现有个无限debugger,直接过掉~[doge]。。。
在这里插入图片描述
OK过掉无限debugger之后直接看请求参数,发现有一个t是加密的,所以就要找这个t是怎么来的。。

在这里插入图片描述
跟踪堆栈在send那里打个断点开始准备跟栈分析~
在这里插入图片描述
结果你发现它JS是依托。。。

在这里插入图片描述
很明显是混淆过后的代码,使用解混淆工具还原一下,代码就变成了这样的。。。
在这里插入图片描述
使用替换大法把代码换成本地的,然后跟栈分析。就能找到一个加密的位置。
在这里插入图片描述
由于它是一个魔改算法,所以不能直接使用标准算法库对他的加密逻辑进行还原,只能通过它魔改的逻辑来补JS代码的环境了。

核心函数就是这个OOOO了,然后就开始扣代码就邢了~

function OOOO(_0x58d4b1, _0x19e7b0, _0x19c60c, _0x21036e, _0x19a1bf) {let _0x418c3c = OOXX();return sha256(xooo(_0x58d4b1 + _0x418c3c));
}

缺什么补什么就好,然后最后补出来的大概是下面这样的。

JS代码还原

function OOXX(_0x1d2b77, _0x414680, _0x3c906f, _0x3dc595, _0xe29e0c) {let _0x57722c = [0x62, 0x73, 0x62, 0x73, 0x62, 0x73, 0x62, 0x73, 0x62, 0x6c];let _0x315d43 = [];for (let _0x512ce5 = 0x0; _0x512ce5 < _0x57722c.length; _0x512ce5++) {_0x315d43.push(String.fromCharCode(_0x57722c[_0x512ce5]));}return _0x315d43.join("|");
}function h(_0x26b5cf, _0x41a4dc) {var _0x27bd6f;var _0x56c5bf;var _0x1d88bb;var _0x1629f5;var _0x5ad387;_0x1d88bb = _0x26b5cf & 0x80000000;_0x1629f5 = _0x41a4dc & 0x80000000;_0x27bd6f = _0x26b5cf & 0x40000000;_0x56c5bf = _0x41a4dc & 0x40000000;_0x5ad387 = (_0x26b5cf & 0x3fffffff) + (_0x41a4dc & 0x3fffffff);return _0x27bd6f & _0x56c5bf ? _0x5ad387 ^ 0x80000000 ^ _0x1d88bb ^ _0x1629f5 : _0x27bd6f | _0x56c5bf ? _0x5ad387 & 0x40000000 ? _0x5ad387 ^ 0xc0000000 ^ _0x1d88bb ^ _0x1629f5 : _0x5ad387 ^ 0x40000000 ^ _0x1d88bb ^ _0x1629f5 : _0x5ad387 ^ _0x1d88bb ^ _0x1629f5;
}function l(_0x4fcfd0, _0x791862, _0x545c62, _0x492884, _0x1b9409, _0x4f627e, _0x4c98ec) {_0x4fcfd0 = h(_0x4fcfd0, h(h(_0x791862 & _0x492884 | _0x545c62 & ~_0x492884, _0x1b9409), _0x4c98ec));return h(_0x4fcfd0 << _0x4f627e | _0x4fcfd0 >>> 0x20 - _0x4f627e, _0x791862);
}function m(_0x130849, _0x4b0430, _0x4ba0ed, _0x4e52aa, _0x25e079, _0x56e69f, _0x40ef4c) {_0x130849 = h(_0x130849, h(h(_0x4b0430 ^ _0x4ba0ed ^ _0x4e52aa, _0x25e079), _0x40ef4c));return h(_0x130849 << _0x56e69f | _0x130849 >>> 0x20 - _0x56e69f, _0x4b0430);
}function n(_0x4968e1, _0x1093ec, _0x4c5f59, _0x474b35, _0x353c24, _0xc168b9, _0x46b192) {_0x4968e1 = h(_0x4968e1, h(h(_0x4c5f59 ^ (_0x1093ec | ~_0x474b35), _0x353c24), _0x46b192));return h(_0x4968e1 << _0xc168b9 | _0x4968e1 >>> 0x20 - _0xc168b9, _0x1093ec);
}function k(_0x1f8a75, _0x4a3bd3, _0x5a3070, _0x25f36f, _0x4a9473, _0x451bed, _0x437fcb) {_0x1f8a75 = h(_0x1f8a75, h(h(_0x4a3bd3 & _0x5a3070 | ~_0x4a3bd3 & _0x25f36f, _0x4a9473), _0x437fcb));return h(_0x1f8a75 << _0x451bed | _0x1f8a75 >>> 0x20 - _0x451bed, _0x4a3bd3);
}var _0x15ef03 = global;
var _0x159519 = [];
_0x2f5ec1.prototype.update = function (_0x12ccc4) {var _0x370bf8 = !_0x15ef03.JS_SHA256_NO_COMMON_JS && "object" == typeof module && module.exports;var _0x45e279 = "function" == typeof define && define.amd;var _0x2cd597 = !_0x15ef03.JS_SHA256_NO_ARRAY_BUFFER && "undefined" != typeof ArrayBuffer;var _0x1d090b = "0123456789abcdef".split('');var _0x36a98e = [-0x80000000, 0x800000, 0x8000, 0x80];var _0x13b4ab = [0x18, 0x10, 0x8, 0x0];var _0x4239a7 = [0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0xfc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x6ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2];var _0x14b3d0 = ["hex", "array", "digest", "arrayBuffer"];var _0x159519 = [];if (!this.finalized) {var _0x3e60f0;var _0x1f3147 = typeof _0x12ccc4;if ("string" !== _0x1f3147) {if ("object" !== _0x1f3147) {throw new Error("input is invalid type");}if (null === _0x12ccc4) {throw new Error("input is invalid type");}if (_0x2cd597 && _0x12ccc4.constructor === ArrayBuffer) {_0x12ccc4 = new Uint8Array(_0x12ccc4);} else {if (!(Array.isArray(_0x12ccc4) || _0x2cd597 && ArrayBuffer.isView(_0x12ccc4))) {throw new Error("input is invalid type");}}_0x3e60f0 = true;}var _0x1eac44;var _0x5ae714;var _0x232dbe = 0x0;var _0x1a64c7 = _0x12ccc4.length;for (var _0x433824 = this.blocks; _0x232dbe < _0x1a64c7;) {if (this.hashed) {this.hashed = false;_0x433824[0x0] = this.block;this.block = _0x433824[0x10] = _0x433824[0x1] = _0x433824[0x2] = _0x433824[0x3] = _0x433824[0x4] = _0x433824[0x5] = _0x433824[0x6] = _0x433824[0x7] = _0x433824[0x8] = _0x433824[0x9] = _0x433824[0xa] = _0x433824[0xb] = _0x433824[0xc] = _0x433824[0xd] = _0x433824[0xe] = _0x433824[0xf] = 0x0;}if (_0x3e60f0) {for (_0x5ae714 = this.start; _0x232dbe < _0x1a64c7 && _0x5ae714 < 0x40; ++_0x232dbe) {_0x433824[_0x5ae714 >>> 0x2] |= _0x12ccc4[_0x232dbe] << _0x13b4ab[0x3 & _0x5ae714++];}} else {for (_0x5ae714 = this.start; _0x232dbe < _0x1a64c7 && _0x5ae714 < 0x40; ++_0x232dbe) {if ((_0x1eac44 = _0x12ccc4.charCodeAt(_0x232dbe)) < 0x80) {_0x433824[_0x5ae714 >>> 0x2] |= _0x1eac44 << _0x13b4ab[0x3 & _0x5ae714++];} else if (_0x1eac44 < 0x800) {_0x433824[_0x5ae714 >>> 0x2] |= (0xc0 | _0x1eac44 >>> 0x6) << _0x13b4ab[0x3 & _0x5ae714++];_0x433824[_0x5ae714 >>> 0x2] |= (0x80 | 0x3f & _0x1eac44) << _0x13b4ab[0x3 & _0x5ae714++];} else if (_0x1eac44 < 0xd800 || _0x1eac44 >= 0xe000) {_0x433824[_0x5ae714 >>> 0x2] |= (0xe0 | _0x1eac44 >>> 0xc) << _0x13b4ab[0x3 & _0x5ae714++];_0x433824[_0x5ae714 >>> 0x2] |= (0x80 | _0x1eac44 >>> 0x6 & 0x3f) << _0x13b4ab[0x3 & _0x5ae714++];_0x433824[_0x5ae714 >>> 0x2] |= (0x80 | 0x3f & _0x1eac44) << _0x13b4ab[0x3 & _0x5ae714++];} else {_0x1eac44 = 0x10000 + ((0x3ff & _0x1eac44) << 0xa | 0x3ff & _0x12ccc4.charCodeAt(++_0x232dbe));_0x433824[_0x5ae714 >>> 0x2] |= (0xf0 | _0x1eac44 >>> 0x12) << _0x13b4ab[0x3 & _0x5ae714++];_0x433824[_0x5ae714 >>> 0x2] |= (0x80 | _0x1eac44 >>> 0xc & 0x3f) << _0x13b4ab[0x3 & _0x5ae714++];_0x433824[_0x5ae714 >>> 0x2] |= (0x80 | _0x1eac44 >>> 0x6 & 0x3f) << _0x13b4ab[0x3 & _0x5ae714++];_0x433824[_0x5ae714 >>> 0x2] |= (0x80 | 0x3f & _0x1eac44) << _0x13b4ab[0x3 & _0x5ae714++];}}}this.lastByteIndex = _0x5ae714;this.bytes += _0x5ae714 - this.start;if (_0x5ae714 >= 0x40) {this.block = _0x433824[0x10];this.start = _0x5ae714 - 0x40;this.hash();this.hashed = true;} else {this.start = _0x5ae714;}}if (this.bytes > 0xffffffff) {this.hBytes += this.bytes / 0x100000000 << 0x0;this.bytes = this.bytes % 0x100000000;}return this;}
}function _0x2f5ec1(_0x506d56, _0x142c98) {if (_0x142c98) {_0x159519[0x0] = _0x159519[0x10] = _0x159519[0x1] = _0x159519[0x2] = _0x159519[0x3] = _0x159519[0x4] = _0x159519[0x5] = _0x159519[0x6] = _0x159519[0x7] = _0x159519[0x8] = _0x159519[0x9] = _0x159519[0xa] = _0x159519[0xb] = _0x159519[0xc] = _0x159519[0xd] = _0x159519[0xe] = _0x159519[0xf] = 0x0;this.blocks = _0x159519;} else {this.blocks = [0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0];}if (_0x506d56) {this.h0 = 0xc1059ed8;this.h1 = 0x367cd507;this.h2 = 0x3070dd17;this.h3 = 0xf70e5939;this.h4 = 0xffc00b31;this.h5 = 0x68581511;this.h6 = 0x64f98fa7;this.h7 = 0xbefa4fa4;} else {this.h0 = 0x6a09e667;this.h1 = 0xbb67ae85;this.h2 = 0x3c6ef372;this.h3 = 0xa54ff53a;this.h4 = 0x510e527f;this.h5 = 0x9b05688c;this.h6 = 0x1f83d9ab;this.h7 = 0x5be0cd19;}this.block = this.start = this.bytes = this.hBytes = 0x0;this.finalized = this.hashed = false;this.first = true;this.is224 = _0x506d56;
}function xooo(_0xbece56) {function _0x50a213(_0x47e4e0) {var _0x4a8091 = '';var _0x32f23e = '';var _0x1a2975;for (_0x1a2975 = 0x0; 0x3 >= _0x1a2975; _0x1a2975++) {_0x32f23e = _0x47e4e0 >>> 0x8 * _0x1a2975 & 0xff;_0x32f23e = "0" + _0x32f23e.toString(0x10);_0x4a8091 += _0x32f23e.substr(_0x32f23e.length - 0x2, 0x2);}return _0x4a8091;}var _0x1b8333 = [];var _0x28207d;var _0x383438;var _0x11fccf;var _0x3ce4d1;var _0x452f67;var _0x20d302;var _0x3a8a59;var _0x58cff2;_0xbece56 = function (_0x1a1913) {_0x1a1913 = _0x1a1913.replace(/\\r\\n/g, "\\n");var _0x34d0f0 = '';for (var _0x52db02 = 0x0; _0x52db02 < _0x1a1913.length; _0x52db02++) {var _0x23313b = _0x1a1913.charCodeAt(_0x52db02);if (0x80 > _0x23313b) {_0x34d0f0 += String.fromCharCode(_0x23313b);} else {if (0x7f < _0x23313b && 0x800 > _0x23313b) {_0x34d0f0 += String.fromCharCode(_0x23313b >> 0x6 | 0xc0);} else {_0x34d0f0 += String.fromCharCode(_0x23313b >> 0xc | 0xe0);_0x34d0f0 += String.fromCharCode(_0x23313b >> 0x6 & 0x3f | 0x80);}_0x34d0f0 += String.fromCharCode(_0x23313b & 0x3f | 0x80);}}return _0x34d0f0;}(_0xbece56);_0x1b8333 = function (_0x857796) {var _0x1608a4;var _0x7de62 = _0x857796.length;_0x1608a4 = _0x7de62 + 0x8;var _0x1b0bcd = 0x10 * ((_0x1608a4 - _0x1608a4 % 0x40) / 0x40 + 0x1);var _0x26393 = Array(_0x1b0bcd - 0x1);var _0x5e2c4a = 0x0;for (var _0x5038ff = 0x0; _0x5038ff < _0x7de62;) {_0x1608a4 = (_0x5038ff - _0x5038ff % 0x4) / 0x4;_0x5e2c4a = _0x5038ff % 0x4 * 0x8;_0x26393[_0x1608a4] |= _0x857796.charCodeAt(_0x5038ff) << _0x5e2c4a;_0x5038ff++;}_0x1608a4 = (_0x5038ff - _0x5038ff % 0x4) / 0x4;_0x26393[_0x1608a4] |= 0x80 << _0x5038ff % 0x4 * 0x8;_0x26393[_0x1b0bcd - 0x2] = _0x7de62 << 0x3;_0x26393[_0x1b0bcd - 0x1] = _0x7de62 >>> 0x1d;return _0x26393;}(_0xbece56);_0x452f67 = 0x10325476;_0x20d302 = 0x98badcfe;_0x3a8a59 = 0xefcdab89;_0x58cff2 = 0x67452301;for (_0xbece56 = 0x0; _0xbece56 < _0x1b8333.length; _0xbece56 += 0x10) {_0x28207d = _0x452f67;_0x383438 = _0x20d302;_0x11fccf = _0x3a8a59;_0x3ce4d1 = _0x58cff2;_0x452f67 = k(_0x452f67, _0x20d302, _0x3a8a59, _0x58cff2, _0x1b8333[_0xbece56 + 0x0], 0x7, 0xd76aa478);_0x58cff2 = k(_0x58cff2, _0x452f67, _0x20d302, _0x3a8a59, _0x1b8333[_0xbece56 + 0x1], 0xc, 0xe8c7b756);_0x3a8a59 = k(_0x3a8a59, _0x58cff2, _0x452f67, _0x20d302, _0x1b8333[_0xbece56 + 0x2], 0x11, 0x242070db);_0x20d302 = k(_0x20d302, _0x3a8a59, _0x58cff2, _0x452f67, _0x1b8333[_0xbece56 + 0x3], 0x16, 0xc1bdceee);_0x452f67 = k(_0x452f67, _0x20d302, _0x3a8a59, _0x58cff2, _0x1b8333[_0xbece56 + 0x4], 0x7, 0xf57c0faf);_0x58cff2 = k(_0x58cff2, _0x452f67, _0x20d302, _0x3a8a59, _0x1b8333[_0xbece56 + 0x5], 0xc, 0x4787c62a);_0x3a8a59 = k(_0x3a8a59, _0x58cff2, _0x452f67, _0x20d302, _0x1b8333[_0xbece56 + 0x6], 0x11, 0xa8304613);_0x20d302 = k(_0x20d302, _0x3a8a59, _0x58cff2, _0x452f67, _0x1b8333[_0xbece56 + 0x7], 0x16, 0xfd469501);_0x452f67 = k(_0x452f67, _0x20d302, _0x3a8a59, _0x58cff2, _0x1b8333[_0xbece56 + 0x8], 0x7, 0x698098d8);_0x58cff2 = k(_0x58cff2, _0x452f67, _0x20d302, _0x3a8a59, _0x1b8333[_0xbece56 + 0x9], 0xc, 0x8b44f7af);_0x3a8a59 = k(_0x3a8a59, _0x58cff2, _0x452f67, _0x20d302, _0x1b8333[_0xbece56 + 0xa], 0x11, 0xffff5bb1);_0x20d302 = k(_0x20d302, _0x3a8a59, _0x58cff2, _0x452f67, _0x1b8333[_0xbece56 + 0xb], 0x16, 0x895cd7be);_0x452f67 = k(_0x452f67, _0x20d302, _0x3a8a59, _0x58cff2, _0x1b8333[_0xbece56 + 0xc], 0x7, 0x6b901122);_0x58cff2 = k(_0x58cff2, _0x452f67, _0x20d302, _0x3a8a59, _0x1b8333[_0xbece56 + 0xd], 0xc, 0xfd987193);_0x3a8a59 = k(_0x3a8a59, _0x58cff2, _0x452f67, _0x20d302, _0x1b8333[_0xbece56 + 0xe], 0x11, 0xa679438e);_0x20d302 = k(_0x20d302, _0x3a8a59, _0x58cff2, _0x452f67, _0x1b8333[_0xbece56 + 0xf], 0x16, 0x49b40821);_0x452f67 = l(_0x452f67, _0x20d302, _0x3a8a59, _0x58cff2, _0x1b8333[_0xbece56 + 0x1], 0x5, 0xf61e2562);_0x58cff2 = l(_0x58cff2, _0x452f67, _0x20d302, _0x3a8a59, _0x1b8333[_0xbece56 + 0x6], 0x9, 0xc040b340);_0x3a8a59 = l(_0x3a8a59, _0x58cff2, _0x452f67, _0x20d302, _0x1b8333[_0xbece56 + 0xb], 0xe, 0x265e5a51);_0x20d302 = l(_0x20d302, _0x3a8a59, _0x58cff2, _0x452f67, _0x1b8333[_0xbece56 + 0x0], 0x14, 0xe9b6c7aa);_0x452f67 = l(_0x452f67, _0x20d302, _0x3a8a59, _0x58cff2, _0x1b8333[_0xbece56 + 0x5], 0x5, 0xd62f105d);_0x58cff2 = l(_0x58cff2, _0x452f67, _0x20d302, _0x3a8a59, _0x1b8333[_0xbece56 + 0xa], 0x9, 0x2441453);_0x3a8a59 = l(_0x3a8a59, _0x58cff2, _0x452f67, _0x20d302, _0x1b8333[_0xbece56 + 0xf], 0xe, 0xd8a1e681);_0x20d302 = l(_0x20d302, _0x3a8a59, _0x58cff2, _0x452f67, _0x1b8333[_0xbece56 + 0x4], 0x14, 0xe7d3fbc8);_0x452f67 = l(_0x452f67, _0x20d302, _0x3a8a59, _0x58cff2, _0x1b8333[_0xbece56 + 0x9], 0x5, 0x21e1cde6);_0x58cff2 = l(_0x58cff2, _0x452f67, _0x20d302, _0x3a8a59, _0x1b8333[_0xbece56 + 0xe], 0x9, 0xc33707d6);_0x3a8a59 = l(_0x3a8a59, _0x58cff2, _0x452f67, _0x20d302, _0x1b8333[_0xbece56 + 0x3], 0xe, 0xf4d50d87);_0x20d302 = l(_0x20d302, _0x3a8a59, _0x58cff2, _0x452f67, _0x1b8333[_0xbece56 + 0x8], 0x14, 0x455a14ed);_0x452f67 = l(_0x452f67, _0x20d302, _0x3a8a59, _0x58cff2, _0x1b8333[_0xbece56 + 0xd], 0x5, 0xa9e3e905);_0x58cff2 = l(_0x58cff2, _0x452f67, _0x20d302, _0x3a8a59, _0x1b8333[_0xbece56 + 0x2], 0x9, 0xfcefa3f8);_0x3a8a59 = l(_0x3a8a59, _0x58cff2, _0x452f67, _0x20d302, _0x1b8333[_0xbece56 + 0x7], 0xe, 0x676f02d9);_0x20d302 = l(_0x20d302, _0x3a8a59, _0x58cff2, _0x452f67, _0x1b8333[_0xbece56 + 0xc], 0x14, 0x8d2a4c8a);_0x452f67 = m(_0x452f67, _0x20d302, _0x3a8a59, _0x58cff2, _0x1b8333[_0xbece56 + 0x5], 0x4, 0xfffa3942);_0x58cff2 = m(_0x58cff2, _0x452f67, _0x20d302, _0x3a8a59, _0x1b8333[_0xbece56 + 0x8], 0xb, 0x8771f681);_0x3a8a59 = m(_0x3a8a59, _0x58cff2, _0x452f67, _0x20d302, _0x1b8333[_0xbece56 + 0xb], 0x10, 0x6d9d6122);_0x20d302 = m(_0x20d302, _0x3a8a59, _0x58cff2, _0x452f67, _0x1b8333[_0xbece56 + 0xe], 0x17, 0xfde5380c);_0x452f67 = m(_0x452f67, _0x20d302, _0x3a8a59, _0x58cff2, _0x1b8333[_0xbece56 + 0x1], 0x4, 0xa4beea44);_0x58cff2 = m(_0x58cff2, _0x452f67, _0x20d302, _0x3a8a59, _0x1b8333[_0xbece56 + 0x4], 0xb, 0x4bdecfa9);_0x3a8a59 = m(_0x3a8a59, _0x58cff2, _0x452f67, _0x20d302, _0x1b8333[_0xbece56 + 0x7], 0x10, 0xf6bb4b60);_0x20d302 = m(_0x20d302, _0x3a8a59, _0x58cff2, _0x452f67, _0x1b8333[_0xbece56 + 0xa], 0x17, 0xbebfbc70);_0x452f67 = m(_0x452f67, _0x20d302, _0x3a8a59, _0x58cff2, _0x1b8333[_0xbece56 + 0xd], 0x4, 0x289b7ec6);_0x58cff2 = m(_0x58cff2, _0x452f67, _0x20d302, _0x3a8a59, _0x1b8333[_0xbece56 + 0x0], 0xb, 0xeaa127fa);_0x3a8a59 = m(_0x3a8a59, _0x58cff2, _0x452f67, _0x20d302, _0x1b8333[_0xbece56 + 0x3], 0x10, 0xd4ef3085);_0x20d302 = m(_0x20d302, _0x3a8a59, _0x58cff2, _0x452f67, _0x1b8333[_0xbece56 + 0x6], 0x17, 0x4881d05);_0x452f67 = m(_0x452f67, _0x20d302, _0x3a8a59, _0x58cff2, _0x1b8333[_0xbece56 + 0x9], 0x4, 0xd9d4d039);_0x58cff2 = m(_0x58cff2, _0x452f67, _0x20d302, _0x3a8a59, _0x1b8333[_0xbece56 + 0xc], 0xb, 0xe6db99e5);_0x3a8a59 = m(_0x3a8a59, _0x58cff2, _0x452f67, _0x20d302, _0x1b8333[_0xbece56 + 0xf], 0x10, 0x1fa27cf8);_0x20d302 = m(_0x20d302, _0x3a8a59, _0x58cff2, _0x452f67, _0x1b8333[_0xbece56 + 0x2], 0x17, 0xc4ac5665);_0x452f67 = n(_0x452f67, _0x20d302, _0x3a8a59, _0x58cff2, _0x1b8333[_0xbece56 + 0x0], 0x6, 0xf4292244);_0x58cff2 = n(_0x58cff2, _0x452f67, _0x20d302, _0x3a8a59, _0x1b8333[_0xbece56 + 0x7], 0xa, 0x432aff97);_0x3a8a59 = n(_0x3a8a59, _0x58cff2, _0x452f67, _0x20d302, _0x1b8333[_0xbece56 + 0xe], 0xf, 0xab9423a7);_0x20d302 = n(_0x20d302, _0x3a8a59, _0x58cff2, _0x452f67, _0x1b8333[_0xbece56 + 0x5], 0x15, 0xfc93a039);_0x452f67 = n(_0x452f67, _0x20d302, _0x3a8a59, _0x58cff2, _0x1b8333[_0xbece56 + 0xc], 0x6, 0x655b59c3);_0x58cff2 = n(_0x58cff2, _0x452f67, _0x20d302, _0x3a8a59, _0x1b8333[_0xbece56 + 0x3], 0xa, 0x8f0ccc92);_0x3a8a59 = n(_0x3a8a59, _0x58cff2, _0x452f67, _0x20d302, _0x1b8333[_0xbece56 + 0xa], 0xf, 0xffeff47d);_0x20d302 = n(_0x20d302, _0x3a8a59, _0x58cff2, _0x452f67, _0x1b8333[_0xbece56 + 0x1], 0x15, 0x85845dd1);_0x452f67 = n(_0x452f67, _0x20d302, _0x3a8a59, _0x58cff2, _0x1b8333[_0xbece56 + 0x8], 0x6, 0x6fa87e4f);_0x58cff2 = n(_0x58cff2, _0x452f67, _0x20d302, _0x3a8a59, _0x1b8333[_0xbece56 + 0xf], 0xa, 0xfe2ce6e0);_0x3a8a59 = n(_0x3a8a59, _0x58cff2, _0x452f67, _0x20d302, _0x1b8333[_0xbece56 + 0x6], 0xf, 0xa3014314);_0x20d302 = n(_0x20d302, _0x3a8a59, _0x58cff2, _0x452f67, _0x1b8333[_0xbece56 + 0xd], 0x15, 0x4e0811a1);_0x452f67 = n(_0x452f67, _0x20d302, _0x3a8a59, _0x58cff2, _0x1b8333[_0xbece56 + 0x4], 0x6, 0xf7537e82);_0x58cff2 = n(_0x58cff2, _0x452f67, _0x20d302, _0x3a8a59, _0x1b8333[_0xbece56 + 0xb], 0xa, 0xbd3af235);_0x3a8a59 = n(_0x3a8a59, _0x58cff2, _0x452f67, _0x20d302, _0x1b8333[_0xbece56 + 0x2], 0xf, 0x2ad7d2bb);_0x20d302 = n(_0x20d302, _0x3a8a59, _0x58cff2, _0x452f67, _0x1b8333[_0xbece56 + 0x9], 0x15, 0xeb86d391);_0x452f67 = h(_0x452f67, _0x28207d);_0x20d302 = h(_0x20d302, _0x383438);_0x3a8a59 = h(_0x3a8a59, _0x11fccf);_0x58cff2 = h(_0x58cff2, _0x3ce4d1);}return (_0x50a213(_0x452f67) + _0x50a213(_0x20d302) + _0x50a213(_0x3a8a59) + _0x50a213(_0x58cff2)).toLowerCase();
}_0x2f5ec1.prototype.hash = function () {var _0x4239a7 = [0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0xfc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x6ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2];var _0x3016bf;var _0x446928;var _0x5e7b33;var _0x3a4c3a;var _0x599202;var _0x910c6f;var _0x1ba87a;var _0x5de766;var _0x451132;var _0x1beb23 = this.h0;var _0x43e799 = this.h1;var _0x538181 = this.h2;var _0x3b26fb = this.h3;var _0x4f122e = this.h4;var _0x3a1bfd = this.h5;var _0x19be1d = this.h6;var _0x3bcd00 = this.h7;var _0x209954 = this.blocks;for (_0x3016bf = 0x10; _0x3016bf < 0x40; ++_0x3016bf) {_0x446928 = ((_0x599202 = _0x209954[_0x3016bf - 0xf]) >>> 0x7 | _0x599202 << 0x19) ^ (_0x599202 >>> 0x12 | _0x599202 << 0xe) ^ _0x599202 >>> 0x3;_0x5e7b33 = ((_0x599202 = _0x209954[_0x3016bf - 0x2]) >>> 0x11 | _0x599202 << 0xf) ^ (_0x599202 >>> 0x13 | _0x599202 << 0xd) ^ _0x599202 >>> 0xa;_0x209954[_0x3016bf] = _0x209954[_0x3016bf - 0x10] + _0x446928 + _0x209954[_0x3016bf - 0x7] + _0x5e7b33 << 0x0;}_0x451132 = _0x43e799 & _0x538181;for (_0x3016bf = 0x0; _0x3016bf < 0x40; _0x3016bf += 0x4) {if (this.first) {if (this.is224) {_0x910c6f = 0x49400;_0x3bcd00 = (_0x599202 = _0x209954[0x0] - 0x543c9a5b) - 0x8f1a6c7 << 0x0;_0x3b26fb = _0x599202 + 0x170e9b5 << 0x0;} else {_0x910c6f = 0x2a01a605;_0x3bcd00 = (_0x599202 = _0x209954[0x0] - 0xc881298) - 0x5ab00ac6 << 0x0;_0x3b26fb = _0x599202 + 0x8909ae5 << 0x0;}this.first = false;} else {_0x446928 = (_0x1beb23 >>> 0x2 | _0x1beb23 << 0x1e) ^ (_0x1beb23 >>> 0xd | _0x1beb23 << 0x13) ^ (_0x1beb23 >>> 0x16 | _0x1beb23 << 0xa);_0x3a4c3a = (_0x910c6f = _0x1beb23 & _0x43e799) ^ _0x1beb23 & _0x538181 ^ _0x451132;_0x3bcd00 = _0x3b26fb + (_0x599202 = _0x3bcd00 + (_0x5e7b33 = (_0x4f122e >>> 0x6 | _0x4f122e << 0x1a) ^ (_0x4f122e >>> 0xb | _0x4f122e << 0x15) ^ (_0x4f122e >>> 0x19 | _0x4f122e << 0x7)) + (_0x4f122e & _0x3a1bfd ^ ~_0x4f122e & _0x19be1d) + _0x4239a7[_0x3016bf] + _0x209954[_0x3016bf]) << 0x0;_0x3b26fb = _0x599202 + (_0x446928 + _0x3a4c3a) << 0x0;}_0x446928 = (_0x3b26fb >>> 0x2 | _0x3b26fb << 0x1e) ^ (_0x3b26fb >>> 0xd | _0x3b26fb << 0x13) ^ (_0x3b26fb >>> 0x16 | _0x3b26fb << 0xa);_0x3a4c3a = (_0x1ba87a = _0x3b26fb & _0x1beb23) ^ _0x3b26fb & _0x43e799 ^ _0x910c6f;_0x19be1d = _0x538181 + (_0x599202 = _0x19be1d + (_0x5e7b33 = (_0x3bcd00 >>> 0x6 | _0x3bcd00 << 0x1a) ^ (_0x3bcd00 >>> 0xb | _0x3bcd00 << 0x15) ^ (_0x3bcd00 >>> 0x19 | _0x3bcd00 << 0x7)) + (_0x3bcd00 & _0x4f122e ^ ~_0x3bcd00 & _0x3a1bfd) + _0x4239a7[_0x3016bf + 0x1] + _0x209954[_0x3016bf + 0x1]) << 0x0;_0x446928 = ((_0x538181 = _0x599202 + (_0x446928 + _0x3a4c3a) << 0x0) >>> 0x2 | _0x538181 << 0x1e) ^ (_0x538181 >>> 0xd | _0x538181 << 0x13) ^ (_0x538181 >>> 0x16 | _0x538181 << 0xa);_0x3a4c3a = (_0x5de766 = _0x538181 & _0x3b26fb) ^ _0x538181 & _0x1beb23 ^ _0x1ba87a;_0x3a1bfd = _0x43e799 + (_0x599202 = _0x3a1bfd + (_0x5e7b33 = (_0x19be1d >>> 0x6 | _0x19be1d << 0x1a) ^ (_0x19be1d >>> 0xb | _0x19be1d << 0x15) ^ (_0x19be1d >>> 0x19 | _0x19be1d << 0x7)) + (_0x19be1d & _0x3bcd00 ^ ~_0x19be1d & _0x4f122e) + _0x4239a7[_0x3016bf + 0x2] + _0x209954[_0x3016bf + 0x2]) << 0x0;_0x446928 = ((_0x43e799 = _0x599202 + (_0x446928 + _0x3a4c3a) << 0x0) >>> 0x2 | _0x43e799 << 0x1e) ^ (_0x43e799 >>> 0xd | _0x43e799 << 0x13) ^ (_0x43e799 >>> 0x16 | _0x43e799 << 0xa);_0x3a4c3a = (_0x451132 = _0x43e799 & _0x538181) ^ _0x43e799 & _0x3b26fb ^ _0x5de766;_0x4f122e = _0x1beb23 + (_0x599202 = _0x4f122e + (_0x5e7b33 = (_0x3a1bfd >>> 0x6 | _0x3a1bfd << 0x1a) ^ (_0x3a1bfd >>> 0xb | _0x3a1bfd << 0x15) ^ (_0x3a1bfd >>> 0x19 | _0x3a1bfd << 0x7)) + (_0x3a1bfd & _0x19be1d ^ ~_0x3a1bfd & _0x3bcd00) + _0x4239a7[_0x3016bf + 0x3] + _0x209954[_0x3016bf + 0x3]) << 0x0;_0x1beb23 = _0x599202 + (_0x446928 + _0x3a4c3a) << 0x0;this.chromeBugWorkAround = true;}this.h0 = this.h0 + _0x1beb23 << 0x0;this.h1 = this.h1 + _0x43e799 << 0x0;this.h2 = this.h2 + _0x538181 << 0x0;this.h3 = this.h3 + _0x3b26fb << 0x0;this.h4 = this.h4 + _0x4f122e << 0x0;this.h5 = this.h5 + _0x3a1bfd << 0x0;this.h6 = this.h6 + _0x19be1d << 0x0;this.h7 = this.h7 + _0x3bcd00 << 0x0;
}
_0x2f5ec1.prototype.finalize = function () {var _0x36a98e = [-0x80000000, 0x800000, 0x8000, 0x80]if (!this.finalized) {this.finalized = true;var _0x596268 = this.blocks;var _0xc4eb28 = this.lastByteIndex;_0x596268[0x10] = this.block;_0x596268[_0xc4eb28 >>> 0x2] |= _0x36a98e[0x3 & _0xc4eb28];this.block = _0x596268[0x10];if (_0xc4eb28 >= 0x38) {if (!this.hashed) {this.hash();}_0x596268[0x0] = this.block;_0x596268[0x10] = _0x596268[0x1] = _0x596268[0x2] = _0x596268[0x3] = _0x596268[0x4] = _0x596268[0x5] = _0x596268[0x6] = _0x596268[0x7] = _0x596268[0x8] = _0x596268[0x9] = _0x596268[0xa] = _0x596268[0xb] = _0x596268[0xc] = _0x596268[0xd] = _0x596268[0xe] = _0x596268[0xf] = 0x0;}_0x596268[0xe] = this.hBytes << 0x3 | this.bytes >>> 0x1d;_0x596268[0xf] = this.bytes << 0x3;this.hash();}
}
_0x2f5ec1.prototype.hex = function () {var _0x1d090b = "0123456789abcdef".split('');this.finalize();var _0x47c3b2 = this.h0;var _0x69a47f = this.h1;var _0x3b8092 = this.h2;var _0x4fcff2 = this.h3;var _0x309f87 = this.h4;var _0xebcba2 = this.h5;var _0x137053 = this.h6;var _0x445e35 = this.h7;var _0x291a21 = _0x1d090b[_0x47c3b2 >>> 0x1c & 0xf] + _0x1d090b[_0x47c3b2 >>> 0x18 & 0xf] + _0x1d090b[_0x47c3b2 >>> 0x14 & 0xf] + _0x1d090b[_0x47c3b2 >>> 0x10 & 0xf] + _0x1d090b[_0x47c3b2 >>> 0xc & 0xf] + _0x1d090b[_0x47c3b2 >>> 0x8 & 0xf] + _0x1d090b[_0x47c3b2 >>> 0x4 & 0xf] + _0x1d090b[0xf & _0x47c3b2] + _0x1d090b[_0x69a47f >>> 0x1c & 0xf] + _0x1d090b[_0x69a47f >>> 0x18 & 0xf] + _0x1d090b[_0x69a47f >>> 0x14 & 0xf] + _0x1d090b[_0x69a47f >>> 0x10 & 0xf] + _0x1d090b[_0x69a47f >>> 0xc & 0xf] + _0x1d090b[_0x69a47f >>> 0x8 & 0xf] + _0x1d090b[_0x69a47f >>> 0x4 & 0xf] + _0x1d090b[0xf & _0x69a47f] + _0x1d090b[_0x3b8092 >>> 0x1c & 0xf] + _0x1d090b[_0x3b8092 >>> 0x18 & 0xf] + _0x1d090b[_0x3b8092 >>> 0x14 & 0xf] + _0x1d090b[_0x3b8092 >>> 0x10 & 0xf] + _0x1d090b[_0x3b8092 >>> 0xc & 0xf] + _0x1d090b[_0x3b8092 >>> 0x8 & 0xf] + _0x1d090b[_0x3b8092 >>> 0x4 & 0xf] + _0x1d090b[0xf & _0x3b8092] + _0x1d090b[_0x4fcff2 >>> 0x1c & 0xf] + _0x1d090b[_0x4fcff2 >>> 0x18 & 0xf] + _0x1d090b[_0x4fcff2 >>> 0x14 & 0xf] + _0x1d090b[_0x4fcff2 >>> 0x10 & 0xf] + _0x1d090b[_0x4fcff2 >>> 0xc & 0xf] + _0x1d090b[_0x4fcff2 >>> 0x8 & 0xf] + _0x1d090b[_0x4fcff2 >>> 0x4 & 0xf] + _0x1d090b[0xf & _0x4fcff2] + _0x1d090b[_0x309f87 >>> 0x1c & 0xf] + _0x1d090b[_0x309f87 >>> 0x18 & 0xf] + _0x1d090b[_0x309f87 >>> 0x14 & 0xf] + _0x1d090b[_0x309f87 >>> 0x10 & 0xf] + _0x1d090b[_0x309f87 >>> 0xc & 0xf] + _0x1d090b[_0x309f87 >>> 0x8 & 0xf] + _0x1d090b[_0x309f87 >>> 0x4 & 0xf] + _0x1d090b[0xf & _0x309f87] + _0x1d090b[_0xebcba2 >>> 0x1c & 0xf] + _0x1d090b[_0xebcba2 >>> 0x18 & 0xf] + _0x1d090b[_0xebcba2 >>> 0x14 & 0xf] + _0x1d090b[_0xebcba2 >>> 0x10 & 0xf] + _0x1d090b[_0xebcba2 >>> 0xc & 0xf] + _0x1d090b[_0xebcba2 >>> 0x8 & 0xf] + _0x1d090b[_0xebcba2 >>> 0x4 & 0xf] + _0x1d090b[0xf & _0xebcba2] + _0x1d090b[_0x137053 >>> 0x1c & 0xf] + _0x1d090b[_0x137053 >>> 0x18 & 0xf] + _0x1d090b[_0x137053 >>> 0x14 & 0xf] + _0x1d090b[_0x137053 >>> 0x10 & 0xf] + _0x1d090b[_0x137053 >>> 0xc & 0xf] + _0x1d090b[_0x137053 >>> 0x8 & 0xf] + _0x1d090b[_0x137053 >>> 0x4 & 0xf] + _0x1d090b[0xf & _0x137053];if (!this.is224) {_0x291a21 += _0x1d090b[_0x445e35 >>> 0x1c & 0xf] + _0x1d090b[_0x445e35 >>> 0x18 & 0xf] + _0x1d090b[_0x445e35 >>> 0x14 & 0xf] + _0x1d090b[_0x445e35 >>> 0x10 & 0xf] + _0x1d090b[_0x445e35 >>> 0xc & 0xf] + _0x1d090b[_0x445e35 >>> 0x8 & 0xf] + _0x1d090b[_0x445e35 >>> 0x4 & 0xf] + _0x1d090b[0xf & _0x445e35];}return _0x291a21;
}function sha256(_0x5a1594) {return new _0x2f5ec1(undefined, true).update(_0x5a1594)["hex"]();
}function OOOO(_0x58d4b1, _0x19e7b0, _0x19c60c, _0x21036e, _0x19a1bf) {let _0x418c3c = OOXX();return sha256(xooo(_0x58d4b1 + _0x418c3c));
}console.log(OOOO("/api/problem-detail/10/data/?page=6"));

本题大概就是解混淆 + 补环境,还原它的魔改算法的逻辑就好了~

代码实现

最后贴出python代码

"""
-*- coding: utf-8 -*-
@File   : .py
@author : @鲨鱼爱兜兜
@Time   : 2025/04/06 0:41
"""import requests
import execjscookies = {'sessionid': '你的值','Hm_lvt_b5d072258d61ab3cd6a9d485aac7f183': '1743870511,1743871379,1743932867,1743933915','HMACCOUNT': '你的值','Hm_lpvt_b5d072258d61ab3cd6a9d485aac7f183': '1743934341',
}
headers = {'accept': 'application/json, text/javascript, */*; q=0.01','accept-language': 'zh-CN,zh;q=0.9,en;q=0.8','cache-control': 'no-cache','pragma': 'no-cache','priority': 'u=1, i','referer': 'https://stu.tulingpyton.cn/problem-detail/10/','sec-ch-ua': '"Chromium";v="134", "Not:A-Brand";v="24", "Google Chrome";v="134"','sec-ch-ua-mobile': '?0','sec-ch-ua-platform': '"Windows"','sec-fetch-dest': 'empty','sec-fetch-mode': 'cors','sec-fetch-site': 'same-origin','user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36','x-requested-with': 'XMLHttpRequest',
}
with open('./题十-魔改算法.js', encoding='utf-8') as f:js_code = f.read()
s = 0
for page in range(1, 21):params = {'page': f'{page}','t': execjs.compile(js_code).call('OOOO', f"/api/problem-detail/10/data/?page={page}")}response = requests.get('https://stu.tulingpyton.cn/api/problem-detail/10/data/', params=params, cookies=cookies,headers=headers)response.raise_for_status()response.encoding = 'utf-8'print(response.json())s += sum(response.json()['current_array'])
print(s)

运行结果

在这里插入图片描述

第十题,勉强秒了[doge]~
@鲨鱼爱兜兜

相关文章:

图灵逆向——题十-魔改算法

目录列表 过程分析JS代码还原代码实现运行结果 本题属于魔改标准加密算法&#xff0c;所以无法使用JS或Python中的标准库来进行模拟加密了&#xff0c;只能一步一步的还原它的环境咯。。。 过程分析 打开控制台发现有个无限debugger&#xff0c;直接过掉~[doge]。。。 OK过掉…...

K8S学习之基础七十九:关闭istio功能

关闭istio功能 kubectl get ns --show-labels kubectl label ns default istio-injection-有istio-injectionenabled的命名空间&#xff0c;pod都会开启istio功能 反之&#xff0c;如果要开启istio&#xff0c;在对应命名空间打上该标签即可...

AI大模型课程系列汇总-某客时间篇

某客时间系列篇章&#x1f4a5; NO.文章&#xff08;点击可跳转&#xff09;1【课程系列11】某客时间AI 大模型应用开发实战营_ai大模型应用开发实战营 百度云-CSDN博客2【课程系列12】某客时间AI大模型微调训练营_极客时间 大模型rag 网盘-CSDN博客3【课程系列15】2024某客时…...

【人工智能】大语言模型多义词解析技术揭秘——以“项目“歧义消解为例

今天田辛老师和小伙伴探讨了一个有趣的多义词问题&#xff0c; 在人工智能技术日新月异的今天&#xff0c;大语言模型&#xff08;LLM&#xff09;对自然语言的理解能力已经达到令人惊叹的水平。大模型到底是如何去区分多义词的&#xff1f; 比如&#xff1a;当用户提到"…...

Coze平台 发布AI测试Agent的完整实现方案

以下是基于 Coze平台 发布AI测试Agent的完整实现方案,包含架构设计、核心功能模块、集成方式和落地步骤: 一、方案架构图 #mermaid-svg-kzS7cltxrbetjROl {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-kzS7cltxr…...

OpenHarmony子系统开发 - 调测工具(二)

OpenHarmony子系统开发 - 调测工具&#xff08;二&#xff09; 三、hiperf使用指导 hiperf是为开发人员提供性能采样分析的工具&#xff0c;基于内核perf机制进行的用户态能力的扩展&#xff0c;可以对指定的程序或者整个系统进行性能采样。 hiperf支持的命令有&#xff1a;l…...

keil ERROR: L6220E 如何解决

最近调试MK8000方案&#xff0c;增加code后遇到&#xff1a; keil ERROR: L6220E: Execution region RW_RAM1 size (24592 bytes) execeeds limit (24568 bytes) .region contains 93 bytes of padding and 0 bytes of veneers (total 93 bytes of linker generated content) …...

c++比较器——priority_queue用 ; unordered_map 自定义哈希函数

文章目录 priority_queue自定义比较方法对 比较对象结构体 重载 <仿函数为什么是传一个类std::less<T> 和 std::greater<T> lambda unordered_map自定义哈希函数仿函数lambda priority_queue template<class T,class Container std::vector<T>,class…...

centos-LLM-生物信息-BioGPT安装

参考&#xff1a; GitHub - microsoft/BioGPT https://github.com/microsoft/BioGPT BioGPT&#xff1a;用于生物医学文本生成和挖掘的生成式预训练转换器 |生物信息学简报 |牛津学术 — BioGPT: generative pre-trained transformer for biomedical text generation and mini…...

esp32cam远程图传:AI Thinker ESP32-CAM -》 服务器公网 | 服务器 -》 电脑显示

用AI Thinker ESP32-CAM板子访问公网ip的5112端口并上传你的摄像头拍摄的图像视频数据&#xff0c;并写一段python程序打开弹窗接受图像实现超远程图像传输教程免费 1. 首先你要有一个公网ip也就是去买一台拥有公网的服务器电脑&#xff0c;我买的是腾讯云1年38元的服务器还可…...

今日踩坑之@Autowired与@Resource区别

案例说明 今天算是体验到了这俩注解的区别了&#xff0c;真所谓不报错就记不住这两注解区别&#xff0c;其实之前本人也是知道这俩注解的区别的只是我们往往项目上用习惯了Autowired就忘了&#xff0c;看来只有真正体会到报错才能记忆犹新o(╥﹏╥)o。 说明一下本人的踩坑情况&…...

在 M1 芯片的 Mac 电脑上安装 Redis 可以通过 ​​Homebrew​​ 快速完成

以下是详细步骤&#xff1a; 1. 安装 Homebrew&#xff08;若未安装&#xff09; 打开 ​​终端​​&#xff0c;执行以下命令安装 Homebrew&#xff08;已安装可跳过&#xff09;&#xff1a; /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/…...

【从零开始学习JVM | 第一篇】快速认识JVM

什么是JVM&#xff1f; JVM--Java虚拟机&#xff0c;它是Java实现平台无关性的基石。 Java程序运行的时候&#xff0c;编译器将Java代码编译为平台无关的Java字节码文件&#xff08;.class&#xff09;&#xff0c;接下来对应平台的JVM对字节码进行运行解释&#xff0c;翻译成…...

linux 里的创建了一个tomcat用户 怎么禁止该用户使用crontab 功能

在 Linux 系统中&#xff0c;可以通过以下方法禁止 tomcat 用户使用 crontab 功能&#xff1a; 方法 1&#xff1a;通过 /etc/cron.deny 文件限制 这是 最推荐的标准方法&#xff0c;适用于所有主流 Linux 发行版&#xff08;CentOS、Ubuntu 等&#xff09;。 操作步骤&#…...

Elasticsearch入门指南(二)

一、RestClient操作索引库 什么是RestClient&#xff1f; ES官方提供了各种不同语言的客户端&#xff0c;用来操作ES。这些客户端的本质就是组装DSL语句&#xff0c;通过http请求发送给ES。官方文档地址&#xff1a; https://www.elastic.co/guide/en/elasticsearch/client/in…...

Mac监控新风尚:酷炫界面,性能监控更直观!

你是否曾经希望自己的Mac能够像Windows那样&#xff0c;轻松一按就能查看任务管理器来监控性能状态呢&#xff1f; 对于Mac用户来说&#xff0c;系统性能监控一直是个挑战——苹果公司并没有提供一个直观的性能监控工具&#xff0c;用户往往需要通过复杂的活动监视器来获取这些…...

碰一碰发视频源码开发深度解析,定制化开发

在移动应用开发领域&#xff0c;便捷的数据分享功能始终备受关注。碰一碰发视频这一创新功能&#xff0c;借助近场通信&#xff08;NFC&#xff09;技术&#xff0c;为用户提供了一种快速、直观的视频分享体验。本文将深入剖析碰一碰发视频功能的源码开发过程&#xff0c;涵盖从…...

基于 AI智能体、大模型、RAG、Agent 等技术构建公司内部闭环智能问答系统的详细方案,结合 Spring Boot + Vue 管理系统 的改造思路

以下是基于 AI智能体、大模型、RAG、Agent 等技术构建公司内部闭环智能问答系统的详细方案&#xff0c;结合 Spring Boot Vue 管理系统 的改造思路&#xff1a; 1. 系统架构设计 核心组件 数据源层 内部文档库&#xff1a;公司知识库&#xff08;如操作手册、FAQ、流程文档&a…...

红宝书第三十四讲:零基础学会单元测试框架:Jest、Mocha、QUnit

红宝书第三十四讲&#xff1a;零基础学会单元测试框架&#xff1a;Jest、Mocha、QUnit 资料取自《JavaScript高级程序设计&#xff08;第5版&#xff09;》。 查看总目录&#xff1a;红宝书学习大纲 一、单元测试是什么&#xff1f; 就像给代码做“体检”&#xff0c;帮你检查…...

视觉分析AI赋能智慧水务多场景应用

利用视觉分析的方式智慧水务的AI算法方案 一、背景 在传统水务监管中&#xff0c;面临着诸多痛点。例如&#xff0c;对于河道污染、水面异常、河湖四乱问题以及水生态环境差等情况&#xff0c;传统监管效率低下&#xff0c;预警不及时&#xff0c;资源分散&#xff0c;监控功…...

网络2 IP与MAC IP地址

IP地址与MAC地址 一 1.关系&#xff1a; 网卡有唯一的物理地址&#xff1a;MAC地址&#xff0c;IP是配置在网卡上的逻辑地址。 IP地址、MAC地址是进行网络通信必不可少的 2.MAC地址是物理地址&#xff0c;不可更改&#xff0c;通常与IP地址绑定 3.MAC地址&#xff1a;48位 IP地…...

spark-Core

运行架构 核心组件 由上图可以看出&#xff0c;对于 Spark 框架有两个核心组件&#xff1a; Driver&#xff0c;Spark 驱动器节点 其中Spark 驱动器节点&#xff0c;用于执行 Spark 任务中的 main 方法&#xff0c;负责实际代码的执行工作。 Driver 在 Spark 作业执行时主要…...

前端开发中的问题排查与定位:HTML、CSS、JavaScript(报错的解决方式)

目录 1.html 1. 结构错误调试&#xff1a;标签未正确嵌套 2. 语法问题调试&#xff1a;缺失引号 3. 断点调试&#xff1a;动态生成内容时的 JavaScript 错误 4. 网络调试&#xff1a;资源加载错误 5. 性能调试&#xff1a;页面加载性能 总结&#xff1a; 2.CSS 1. 定位…...

VMware Fusion Pro 13 for Mac虚拟机

VMware Fusion Pro 13 for Mac虚拟机 文章目录 VMware Fusion Pro 13 for Mac虚拟机一、介绍二、效果下载 一、介绍 VMware Fusion Pro for Mac&#xff0c;是一款mac虚拟机软件&#xff0c;跟Parallels Desktop一样&#xff0c;都可以让你的 Mac 同时运行一个或多个不同的操作…...

使用cline(VSCode插件)、continue(IDEA插件)、cherry-studio玩转MCP

安装环境 uv&#xff08;python&#xff09; 为什么不用pip&#xff1f; 使用 uv 时无需进行特定安装。使用 uvx 直接运行。 ⚡️ 比pip快10-100x https://github.com/pypa/pip https://ossinsight.io/analyze/pypa/pip?vsastral-sh%2Fuv#overview 安装 https://github…...

Kotlin FragmentTransaction多容器管理多个fragment

在Activity中管理五个Fragment的切换显示和隐藏&#xff0c;并且希望将这部分逻辑进行封装。之前已经教过他们如何在Kotlin中使用FragmentTransaction进行基本的添加、隐藏、显示和替换操作&#xff0c;现在需要进一步封装这些操作&#xff0c;提高代码的可维护性和复用性。 管…...

PyCharm显示主菜单和工具栏

显示主菜单 新版 PyCharm 是不显示主菜单的&#xff0c;要想显示主菜单和工具栏&#xff0c;则通过 “视图” → “外观” &#xff0c;勾选 “在单独的工具栏中显示主菜单” 和 “工具栏” 即可。 设置工具栏 此时工具栏里并没有什么工具&#xff0c;因此我们需要自定义工具…...

WebView2最低支持.NET frame4.5,win7系统

WebView2最低支持.NET frame什么版本 ‌WebView2 对 .NET Framework 的最低版本要求‌ ‌基础支持范围‌ WebView2 官方支持的 .NET Framework ‌最低版本为 4.5‌&#xff0c;同时兼容 ‌.NET Core 3.0‌ 及以上版本‌18。对于 WPF、WinForms 等桌面应用开发&#xff0c;需确…...

ClickOnce 部署

1、在远程服务器172.16.9.252共享文件文件夹Bluetooth. 2、设置版本自动更新. 3、设置部署 4、设置创建桌面菜单 二、远程发布IIS即可...

Kotlin 中 集合 Collection 的扩展方法完全指南

Kotlin 中 Collection 的扩展方法完全指南 “代码是最美的诗篇”——本文将带你进入 Kotlin 集合扩展函数的世界&#xff0c;帮助你写出既高效又优雅的代码 &#x1f680; 一、引言 &#x1f914; 在 Android 开发中&#xff0c;集合&#xff08;Collection&#xff09;的操作…...

STM32F407使用ESP8266连接阿里云并上传数据

文章目录 前言一、ESP01S介绍1.ESP01S2.MQTT固件烧录3.WIFI连接 二、阿里云平台介绍1.创建产品及添加设备2.连接云平台 三、数据上报四、命令下发五、完整工程 前言 在实现OTA功能我们必须学会如何连接云平台&#xff0c;本文会仔细介绍使用STM32F407和ESP8266连接阿里云平台&…...

TorchServe部署模型-index_to_name.json

在TorchServe部署模型时&#xff0c;若要将模型输出结果映射到指定标签&#xff08;如分类任务的类别名称&#xff09;&#xff0c;需通过index_to_name.json文件定义索引与标签的映射关系&#xff0c;并在打包模型时将其作为额外文件包含。以下是完整流程和命令示例&#xff1…...

每日一题——BMN3 小红炸砖块

“落下”操作只会对y轴有影响&#xff0c;所以注意y轴的变化即可 只要给出的坐标有砖块&#xff0c;就遍历查找他的上面是否有砖块&#xff0c;每一层都是这样&#xff0c;直到到没有砖块的那一层&#xff1b; 注意&#xff1a;定义矩阵时要注意&#xff0c;给出的坐标都是大…...

AWS服务器 磁盘空间升级到100G后,怎么使其生效?

在AWS&#xff08;Amazon Web Services&#xff09;上扩展EBS&#xff08;Elastic Block Store&#xff09;卷的大小后&#xff0c;服务器操作系统并不会自动识别新增的空间。要使操作系统识别并使用新增的磁盘空间&#xff0c;您需要进行一些额外的步骤。以下是详细的指导和说…...

AWS弹性容器服务(AWS Elastic Container Service,ECS)概述

李升伟 编译 标签&#xff1a;AWS | ECS | 容器 | Docker AWS弹性容器服务&#xff08;AWS Elastic Container Service&#xff0c;ECS&#xff09;简介 AWS弹性容器服务&#xff08;ECS&#xff09;是一项完全托管的容器编排服务&#xff0c;支持运行、管理和扩展容器化应用…...

【消息队列kafka_中间件】一、快速入门分布式消息队列

在当今大数据和分布式系统盛行的时代&#xff0c;消息队列作为一种关键的中间件技术&#xff0c;发挥着举足轻重的作用。其中&#xff0c;Apache Kafka 以其卓越的性能、高可扩展性和强大的功能&#xff0c;成为众多企业构建分布式应用的首选消息队列解决方案。本篇文章将带你深…...

【Axure元件分享】移动端滑动拨盘地区级联选择器

在移动端产品设计中&#xff0c;地区级联选择器&#xff08;省/市/区&#xff09;是用户信息录入场景的核心组件&#xff0c;尤其在电商收货地址、政务信息填报等高频业务中直接影响表单转化率。本文将介绍一款基于Axure的三级动态联动机型地区选择器&#xff0c;通过仿真级联滚…...

宁德时代25年校招演绎数字推理SHL测评题库题型及真题分析

非常感谢您对宁德时代的关注。祝贺您通过宁德时代校园招聘的专业面试环节&#xff0c;现邀请您参与完成以下测评。本轮共两份测评&#xff0c;每份测评对您的最终结果都非常重要&#xff0c;请务必在收到测评后48小时内完成!本测评需要进行远程监考&#xff0c;如果您无法或不愿…...

Python-Django+vue宠物服务管理系统功能说明

❥(^_-) 上千个精美定制模板,各类成品Java、Python、PHP、Android毕设项目,欢迎咨询。 ❥(^_-) 程序开发、技术解答、代码讲解、文档,💖文末获取源码+数据库+文档💖 💖软件下载 | 实战案例 💖文章底部二维码,可以联系获取软件下载链接,及项目演示视频。 本项目…...

洛谷普及B3691 [语言月赛202212] 狠狠地切割(Easy Version)

题目&#xff1a;[语言月赛202212] 狠狠地切割(Easy Version) 题号&#xff1a;B3691 难度&#xff1a;普及一 末尾包含对二分法优化的详细解释 题目分析 最后一句应该是本题的考查关键&#xff0c;关于筛选算法的时间优化&#xff0c; 但从功能理论上&#xff0c;我找到了…...

FPGA_BD Block Design学习(一)

PS端开发流程详细步骤 1.第一步&#xff1a;打开Vivado软件&#xff0c;创建或打开一个工程。 2.第二步&#xff1a;在Block Design中添加arm核心&#xff0c;并将其配置为IP核。 3.第三步&#xff1a;配置arm核心的外设信息&#xff0c;如DDR接口、时钟频率、UART接口等。 …...

Collection vs Collections:核心区别与面试指南

Collection vs Collections&#xff1a;核心区别与面试指南 一、本质区别&#xff08;核心记忆点&#xff09; 维度CollectionCollections身份集合框架的根接口操作集合的工具类包位置java.utiljava.util是否可实例化❌ 接口✅ 类&#xff08;但构造器私有&#xff0c;不可实…...

sqlite3基本语句

创建表 CREATE TABLE student ( id INTEGER PRIMARY KEY, -- 学号&#xff0c;主键 name TEXT NOT NULL, -- 姓名&#xff0c;不能为空 age INTEGER, -- 年龄 gender TEXT -- 性别 ); SQLite常用数据类型 主键 …...

jupyter notebook 显示conda虚拟环境

使用 nb_conda_kernels 安装 nb_conda_kernels&#xff1a;这个包可以自动从你的 Conda 环境中发现并列出内核。 conda activate base # 确保你在 base 环境或任何其他环境中安装 conda install nb_conda_kernels显示jupyternotebook当前所在的位置。...

华为海思IC前端中后端(COTXPU)岗位笔试机考题

近期华为海思即将开始IC设计实现实习岗位机考。小编今天给大家分享下华为海思相关机考题目。 华为海思2025届校招笔试面试经验分享 每年IC秋招笔试其实也是从题库中随机抽出一些题。 华为海思2025届校招笔试面试经验分享华为海思机考主要分三个方向&#xff0c;分别是物理方向…...

HarmonyOS NEXT 实现滑动拼图验证码功能

大家好&#xff0c;我是 V 哥。 在 Gitee 上看到一个用 Java 实现的 HarmonyOS 滑动拼图验证码功能&#xff0c;已经太老了&#xff0c;鸿蒙开发推荐使用 ArkTS 语言&#xff0c;V 哥来改造一下。 以下是基于 ArkTS 的实现方案。由于鸿蒙系统的特性差异&#xff0c;这里提供核…...

【XML基础-1】深入理解XML:介绍、语法规则与实际应用

XML&#xff08;可扩展标记语言&#xff09;作为数据表示和交换的标准格式&#xff0c;自1998年问世以来已成为现代计算领域不可或缺的一部分。本文将全面介绍XML的基础概念、详细语法规则以及它在各领域中的实际应用。 1. 什么是XML&#xff1f; XML&#xff08;eXtensible …...

STM32 HAL库扩大USB CDC的输入缓冲区

STM32 HAL库,使用USB, 扩大输入暂存区的方法 使用STM32的USB通讯CubeMX建立配置Serial Wire时钟配置USB配置时钟频率设置代码编写运行效果总结使用STM32的USB通讯 STM32可以不用使用串口转换直接和USB通讯。这给串口调试提供了极大的方便。编程,我使用了STM32CubeIDE编程。这…...

迭代器模式深度解析与实战案例

一、模式定义 迭代器模式&#xff08;Iterator Pattern&#xff09; 是一种行为设计模式&#xff0c;提供一种方法顺序访问聚合对象的元素&#xff0c;无需暴露其底层表示。核心思想是将遍历逻辑从聚合对象中分离&#xff0c;实现 遍历与存储的解耦。 二、核心组件 组件作用…...

Kotlin协程实用模版合集

目录 ✅ Kotlin 协程实用模板合集&#xff08;适合 Android 项目&#xff09; &#x1f4e6; 1. 基础挂起函数封装&#xff08;Repository 层&#xff09; ⚙️ 2. ViewModel 中使用协程 状态处理 ⏱️ 3. 带超时控制的挂起操作 &#x1f91d; 4. 并发请求合并&#xff0…...