js逆向方法api调用(快手、抖音、wx、hnw、xhs)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

267 lines
6.0 KiB

7 months ago
  1. var w = 4294967296; // 先固定
  2. var M = r2(0,0,false);
  3. function mul_(v0, v1, v2, v3){
  4. let i32_v0 = new Int32Array(8);
  5. i32_v0[0] = v0;
  6. let i64_v0 = new BigInt64Array(i32_v0.buffer)[0];
  7. // console.log(i64_v0)
  8. let i32_v1 = new Int32Array(8);
  9. i32_v1[0] = v1;
  10. let i64_v1 = new BigInt64Array(i32_v1.buffer)[0];
  11. let i32_v2 = new Int32Array(8);
  12. i32_v2[0] = v2;
  13. let i64_v2 = new BigInt64Array(i32_v2.buffer)[0];
  14. let i32_v3 = new Int32Array(8);
  15. i32_v3[0] = v3;
  16. let i64_v3 = new BigInt64Array(i32_v3.buffer)[0];
  17. let i64_const = 32n;
  18. // shl、or、mul操作
  19. let tmp = (i64_v0 | (i64_v1 << i64_const)) * (i64_v2 | (i64_v3 << i64_const));
  20. // console.log(Number(tmp), tmp)
  21. // global0 shr_s
  22. let get_length = Number(tmp >> i64_const);
  23. let res = Number(tmp) >> 32;
  24. // console.log(res, get_length);
  25. return {mul: res, get_length: get_length}
  26. }
  27. function div_u_(v0, v1, v2, v3){
  28. let i32_v0 = new Int32Array(8);
  29. i32_v0[0] = v0;
  30. let i64_v0 = new BigInt64Array(i32_v0.buffer)[0];
  31. // console.log(i64_v0)
  32. let i32_v1 = new Int32Array(8);
  33. i32_v1[0] = v1;
  34. let i64_v1 = new BigInt64Array(i32_v1.buffer)[0];
  35. // console.log(i64_v1)
  36. let i32_v2 = new Int32Array(8);
  37. i32_v2[0] = v2;
  38. let i64_v2 = new BigInt64Array(i32_v2.buffer)[0];
  39. let i32_v3 = new Int32Array(8);
  40. i32_v3[0] = v3;
  41. let i64_v3 = new BigInt64Array(i32_v3.buffer)[0];
  42. let i64_const = 32n;
  43. // let u32_max = 0xFFFFFFFF;
  44. // shl、or、div操作
  45. let tmp = ((i64_v0 | (i64_v1 << i64_const)) / (i64_v2 | (i64_v3 << i64_const)))
  46. // console.log(Number(tmp))
  47. // global0 shr_s
  48. let get_length = Number(tmp >> i64_const);
  49. let res = Number(tmp) >> 32;
  50. // console.log(res, get_length);
  51. return {div_u: res, get_length: get_length}
  52. }
  53. function randomInt (e, t) {
  54. return Math.floor(Math.random() * (t - e + 1) + e)
  55. }
  56. function o(t) {
  57. return !0 === (t && t.__isLong__)
  58. }
  59. function m(t, e) {
  60. return "number" == typeof t ? l(t, e) : "string" == typeof t ? y(t, e) : d(t.low, t.high, "boolean" == typeof e ? e : t.unsigned)
  61. }
  62. function toUnsigned(obj) {
  63. return obj.unsigned ? obj : d(obj.low, obj.high, !0)
  64. }
  65. function isZero(obj) {
  66. return 0 === obj.high && 0 === obj.low
  67. }
  68. function r2(t, e, n) {
  69. return {low:0 | t, high:0 | e, unsigned:!!n}
  70. }
  71. function d(t, e, n) {
  72. return r2(t,e,n)
  73. }
  74. function eq(t, obj) {
  75. return o(t) || (t = m(t)),
  76. (obj.unsigned === t.unsigned || obj.high >>> 31 != 1 || t.high >>> 31 != 1) && (obj.high === t.high && obj.low === t.low)
  77. }
  78. function not(obj){
  79. return d(~obj.low, ~obj.high, obj.unsigned);
  80. }
  81. function neg(obj) {
  82. let k = {
  83. "low": 1,
  84. "high": 0,
  85. "unsigned": false
  86. }
  87. return add(k, not(obj));
  88. }
  89. function l(t, e) {
  90. return t < 0 ? l(-t, e).neg() : d(t % w | 0, t / w | 0, e)
  91. }
  92. function isNegative(obj){
  93. return !obj.unsigned && obj.high < 0
  94. }
  95. function isOdd(obj) {
  96. return 1 == (1 & obj.low)
  97. }
  98. function mul(t, obj) {
  99. if (isZero(obj))
  100. return M;
  101. if (o(t) || (t = m(t))){
  102. let mul$ = mul_(obj.low, obj.high, t.low, t.high);
  103. return d(mul$["mul"], mul$["get_length"], obj.unsigned);
  104. }
  105. if (isZero(t))
  106. return M;
  107. if (eq(j, obj))
  108. return t.isOdd() ? j : M;
  109. if (eq(j, t))
  110. return isOdd(obj) ? j : M;
  111. if (isNegative(obj))
  112. return t.isNegative() ? this.neg().mul(t.neg()) : this.neg().mul(t).neg();
  113. if (t.isNegative())
  114. return this.mul(t.neg()).neg();
  115. if (this.lt(x) && t.lt(x))
  116. return l(this.toNumber() * t.toNumber(), this.unsigned);
  117. var e = obj.high >>> 16
  118. , r = 65535 & obj.high
  119. , f = obj.low >>> 16
  120. , c = 65535 & obj.low
  121. , h = t.high >>> 16
  122. , v = 65535 & t.high
  123. , y = t.low >>> 16
  124. , w = 65535 & t.low
  125. , _ = 0
  126. , S = 0
  127. , E = 0
  128. , k = 0;
  129. return E += (k += c * w) >>> 16,
  130. S += (E += f * w) >>> 16,
  131. E &= 65535,
  132. S += (E += c * y) >>> 16,
  133. _ += (S += r * w) >>> 16,
  134. S &= 65535,
  135. _ += (S += f * y) >>> 16,
  136. S &= 65535,
  137. _ += (S += c * v) >>> 16,
  138. _ += e * w + r * y + f * v + c * h,
  139. d((E &= 65535) << 16 | (k &= 65535), (_ &= 65535) << 16 | (S &= 65535), obj.unsigned)
  140. }
  141. function div(t, o){
  142. let div_ = div_u_(o.low, o.high, t.low, t.high);
  143. return o.unsigned || -2147483648 !== o.high || -1 !== t.low || -1 !== t.high ? d(div_["div_u"], div_["get_length"], o.unsigned) : o;
  144. }
  145. function sub(t, obj) {
  146. return o(t) || (t = m(t)),
  147. add(neg(t), obj)
  148. }
  149. function toInt(obj) {
  150. return obj.unsigned ? obj.low >>> 0 : obj.low
  151. }
  152. function toS(t, obj){
  153. for (var r = l(Math.pow(t, 6), obj.unsigned), o = obj, f = ""; ; ) {
  154. var c = div(r, o)
  155. h = (toInt(sub(mul(r, c), o)) >>> 0).toString(t),
  156. h = (toInt(sub(mul(r, c), o)) >>> 0).toString(t);
  157. if (isZero(o = c))
  158. return h + f;
  159. for (; h.length < 6; )
  160. h = "0" + h;
  161. f = "" + h + f
  162. }
  163. }
  164. function add(t, obj) {
  165. o(t) || (t = m(t));
  166. var e = obj.high >>> 16
  167. , n = 65535 & obj.high
  168. , r = obj.low >>> 16
  169. , f = 65535 & obj.low
  170. , c = t.high >>> 16
  171. , h = 65535 & t.high
  172. , l = t.low >>> 16
  173. , v = 0
  174. , y = 0
  175. , w = 0
  176. , _ = 0;
  177. return w += (_ += f + (65535 & t.low)) >>> 16,
  178. y += (w += r + l) >>> 16,
  179. v += (y += n + h) >>> 16,
  180. v += e + c,
  181. d((w &= 65535) << 16 | (_ &= 65535), (v &= 65535) << 16 | (y &= 65535), obj.unsigned)
  182. }
  183. function y(t, e, n) {
  184. var p;
  185. for (var r = l(Math.pow(n, 8)), o = M, i = 0; i < t.length; i += 8) {
  186. var f = Math.min(8, t.length - i)
  187. , c = parseInt(t.substring(i, i + f), n);
  188. if (f < 8) {
  189. var h = l(Math.pow(n, f));
  190. o = add(l(c), mul(h, o));
  191. } else{
  192. o = add(l(c), mul(r, o));
  193. }
  194. }
  195. return o.unsigned = e,
  196. o
  197. }
  198. function getS(key){
  199. return toS(10, toUnsigned(y(key, !0, 16)));
  200. }
  201. module.exports = {
  202. getS
  203. }