当前位置:网站首页>我来图书馆小程序签到流程分析
我来图书馆小程序签到流程分析
2022-07-26 02:04:00 【未成年梦想】
先抓包看看提交的哪些参数

再来看看源代码的
- 可以看到,我们单击签到,是跳转到了
iBeacon页面

- 我们再去
iBeacon页面看看,
可以看到关键的签到代码
signAppoint: function() {
wx.showLoading({
title: "签到座位中",
mask: !0
});
var o = getApp(), e = wx.getStorageSync("colleageId"), a = wx.getStorageSync("userId"), n = t.getKeyPair(o.globalData.rsa.exponent, "", o.globalData.rsa.modulus), s = t.encryptedString(n, this.data.urlOptions.appoint_id + "");
wx.request({
url: o.globalData.httpAddress + "/wx/sign",
data: {
colleageId: e,
userId: a,
appointId: s,
x: this.data.latitude,
y: this.data.longitude
},
header: {
"content-type": "application/json"
},
success: function(t) {
console.log(t.data), t.data.success, wx.showToast({
title: t.data.message,
mask: !0,
icon: "none",
duration: 2e3
}), setTimeout(function() {
wx.hideLoading(), wx.navigateBack({
delta: 1
});
}, 2100);
},
fail: function(t) {
console.log(t), wx.showToast({
icon: "none",
title: "服务器错误"
});
}
});
},
- 然后我们通过找寻
appointId的来源,后面发现可以通过https://wxcourse.jxufe.cn/wxlib/wx/mineCurrentAppoint?userId=个人学号当中的id字段来获取 - 如图,图中的
id就是appoint_id字段

签到大概流程就这样子

顺便附上代码
//蓝牙签到
const ttt = require("./security.js");
var modulus = "00ae1d6d965af848bc5814af9073dce0b03ee18f5f2448f922549826c7ae54601ea7c09ef026c8997343833160298849a9b73483f324100b7095b4bd10afabed447ea1b0871ca613aeb391f1e7361f3ae0a147d1431ddd1c1c080ba46a51d70dc93508a9fc4dcc683ed64d429e026d1335ab01020cfee00e788d78dced6fe5199b";
var exponent = "010001";
var n = ttt.getKeyPair(exponent, "", modulus);
//预约位置的id信息为每一次预约都变化
var appoint_id = "id信息填写";
var check_result = ttt.encryptedString(n, appoint_id + "");
console.log("签到预约代码",check_result);
security.js文件内容
- 我是以
nodejs运行的,security.js也可以浏览器运行,改改就OK
var i;
!function(t) {
void 0 === t.RSAUtils && (i = t.RSAUtils = {
});
var r, e, s, g = t.BigInt = function(i) {
this.digits = "boolean" == typeof i && 1 == i ? null : r.slice(0), this.isNeg = !1;
};
i.setMaxDigits = function(i) {
r = new Array(i);
for (var t = 0; t < r.length; t++) r[t] = 0;
e = new g(), (s = new g()).digits[0] = 1;
}, i.setMaxDigits(20);
i.biFromNumber = function(i) {
var t = new g();
t.isNeg = i < 0, i = Math.abs(i);
for (var r = 0; i > 0; ) t.digits[r++] = 65535 & i, i = Math.floor(i / 65536);
return t;
};
var n = i.biFromNumber(1e15);
i.biFromDecimal = function(t) {
for (var r, e = "-" == t.charAt(0), s = e ? 1 : 0; s < t.length && "0" == t.charAt(s); ) ++s;
if (s == t.length) r = new g(); else {
var d = (t.length - s) % 15;
for (0 == d && (d = 15), r = i.biFromNumber(Number(t.substr(s, d))), s += d; s < t.length; ) r = i.biAdd(i.biMultiply(r, n), i.biFromNumber(Number(t.substr(s, 15)))),
s += 15;
r.isNeg = e;
}
return r;
}, i.biCopy = function(i) {
var t = new g(!0);
return t.digits = i.digits.slice(0), t.isNeg = i.isNeg, t;
}, i.reverseStr = function(i) {
for (var t = "", r = i.length - 1; r > -1; --r) t += i.charAt(r);
return t;
};
var d = [ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z" ];
i.biToString = function(t, r) {
var s = new g();
s.digits[0] = r;
for (var n = i.biDivideModulo(t, s), o = d[n[1].digits[0]]; 1 == i.biCompare(n[0], e); ) n = i.biDivideModulo(n[0], s),
digit = n[1].digits[0], o += d[n[1].digits[0]];
return (t.isNeg ? "-" : "") + i.reverseStr(o);
}, i.biToDecimal = function(t) {
var r = new g();
r.digits[0] = 10;
for (var s = i.biDivideModulo(t, r), n = String(s[1].digits[0]); 1 == i.biCompare(s[0], e); ) s = i.biDivideModulo(s[0], r),
n += String(s[1].digits[0]);
return (t.isNeg ? "-" : "") + i.reverseStr(n);
};
var o = [ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f" ];
i.digitToHex = function(t) {
for (var r = "", e = 0; e < 4; ++e) r += o[15 & t], t >>>= 4;
return i.reverseStr(r);
}, i.biToHex = function(t) {
for (var r = "", e = (i.biHighIndex(t), i.biHighIndex(t)); e > -1; --e) r += i.digitToHex(t.digits[e]);
return r;
}, i.charToHex = function(i) {
return i >= 48 && i <= 57 ? i - 48 : i >= 65 && i <= 90 ? 10 + i - 65 : i >= 97 && i <= 122 ? 10 + i - 97 : 0;
}, i.hexToDigit = function(t) {
for (var r = 0, e = Math.min(t.length, 4), s = 0; s < e; ++s) r <<= 4, r |= i.charToHex(t.charCodeAt(s));
return r;
}, i.biFromHex = function(t) {
for (var r = new g(), e = t.length, s = 0; e > 0; e -= 4, ++s) r.digits[s] = i.hexToDigit(t.substr(Math.max(e - 4, 0), Math.min(e, 4)));
return r;
}, i.biFromString = function(t, r) {
var e = "-" == t.charAt(0), s = e ? 1 : 0, n = new g(), d = new g();
d.digits[0] = 1;
for (var o = t.length - 1; o >= s; o--) {
var u = t.charCodeAt(o), a = i.charToHex(u), b = i.biMultiplyDigit(d, a);
n = i.biAdd(n, b), d = i.biMultiplyDigit(d, r);
}
return n.isNeg = e, n;
}, i.biDump = function(i) {
return (i.isNeg ? "-" : "") + i.digits.join(" ");
}, i.biAdd = function(t, r) {
var e;
if (t.isNeg != r.isNeg) r.isNeg = !r.isNeg, e = i.biSubtract(t, r), r.isNeg = !r.isNeg; else {
e = new g();
for (var s, n = 0, d = 0; d < t.digits.length; ++d) s = t.digits[d] + r.digits[d] + n,
e.digits[d] = s % 65536, n = Number(s >= 65536);
e.isNeg = t.isNeg;
}
return e;
}, i.biSubtract = function(t, r) {
var e;
if (t.isNeg != r.isNeg) r.isNeg = !r.isNeg, e = i.biAdd(t, r), r.isNeg = !r.isNeg; else {
var s, n;
e = new g(), n = 0;
for (var d = 0; d < t.digits.length; ++d) s = t.digits[d] - r.digits[d] + n, e.digits[d] = s % 65536,
e.digits[d] < 0 && (e.digits[d] += 65536), n = 0 - Number(s < 0);
if (-1 == n) {
n = 0;
for (d = 0; d < t.digits.length; ++d) s = 0 - e.digits[d] + n, e.digits[d] = s % 65536,
e.digits[d] < 0 && (e.digits[d] += 65536), n = 0 - Number(s < 0);
e.isNeg = !t.isNeg;
} else e.isNeg = t.isNeg;
}
return e;
}, i.biHighIndex = function(i) {
for (var t = i.digits.length - 1; t > 0 && 0 == i.digits[t]; ) --t;
return t;
}, i.biNumBits = function(t) {
var r, e = i.biHighIndex(t), s = t.digits[e], g = 16 * (e + 1);
for (r = g; r > g - 16 && 0 == (32768 & s); --r) s <<= 1;
return r;
}, i.biMultiply = function(t, r) {
for (var e, s, n, d = new g(), o = i.biHighIndex(t), u = i.biHighIndex(r), a = 0; a <= u; ++a) {
e = 0, n = a;
for (var b = 0; b <= o; ++b, ++n) s = d.digits[n] + t.digits[b] * r.digits[a] + e,
d.digits[n] = 65535 & s, e = s >>> 16;
d.digits[a + o + 1] = e;
}
return d.isNeg = t.isNeg != r.isNeg, d;
}, i.biMultiplyDigit = function(t, r) {
var e, s, n, d = new g();
e = i.biHighIndex(t), s = 0;
for (var o = 0; o <= e; ++o) n = d.digits[o] + t.digits[o] * r + s, d.digits[o] = 65535 & n,
s = n >>> 16;
return d.digits[1 + e] = s, d;
}, i.arrayCopy = function(i, t, r, e, s) {
for (var g = Math.min(t + s, i.length), n = t, d = e; n < g; ++n, ++d) r[d] = i[n];
};
var u = [ 0, 32768, 49152, 57344, 61440, 63488, 64512, 65024, 65280, 65408, 65472, 65504, 65520, 65528, 65532, 65534, 65535 ];
i.biShiftLeft = function(t, r) {
var e = Math.floor(r / 16), s = new g();
i.arrayCopy(t.digits, 0, s.digits, e, s.digits.length - e);
for (var n = r % 16, d = 16 - n, o = s.digits.length - 1, a = o - 1; o > 0; --o,
--a) s.digits[o] = s.digits[o] << n & 65535 | (s.digits[a] & u[n]) >>> d;
return s.digits[0] = s.digits[o] << n & 65535, s.isNeg = t.isNeg, s;
};
var a = [ 0, 1, 3, 7, 15, 31, 63, 127, 255, 511, 1023, 2047, 4095, 8191, 16383, 32767, 65535 ];
function b(t) {
var r = i, e = r.biDivideByRadixPower(t, this.k - 1), s = r.biMultiply(e, this.mu), g = r.biDivideByRadixPower(s, this.k + 1), n = r.biModuloByRadixPower(t, this.k + 1), d = r.biMultiply(g, this.modulus), o = r.biModuloByRadixPower(d, this.k + 1), u = r.biSubtract(n, o);
u.isNeg && (u = r.biAdd(u, this.bkplus1));
for (var a = r.biCompare(u, this.modulus) >= 0; a; ) u = r.biSubtract(u, this.modulus),
a = r.biCompare(u, this.modulus) >= 0;
return u;
}
function h(t, r) {
var e = i.biMultiply(t, r);
return this.modulo(e);
}
function l(t, r) {
var e = new g();
e.digits[0] = 1;
for (var s = t, n = r; 0 != (1 & n.digits[0]) && (e = this.multiplyMod(e, s)), 0 != (n = i.biShiftRight(n, 1)).digits[0] || 0 != i.biHighIndex(n); ) s = this.multiplyMod(s, s);
return e;
}
i.biShiftRight = function(t, r) {
var e = Math.floor(r / 16), s = new g();
i.arrayCopy(t.digits, e, s.digits, 0, t.digits.length - e);
for (var n = r % 16, d = 16 - n, o = 0, u = o + 1; o < s.digits.length - 1; ++o,
++u) s.digits[o] = s.digits[o] >>> n | (s.digits[u] & a[n]) << d;
return s.digits[s.digits.length - 1] >>>= n, s.isNeg = t.isNeg, s;
}, i.biMultiplyByRadixPower = function(t, r) {
var e = new g();
return i.arrayCopy(t.digits, 0, e.digits, r, e.digits.length - r), e;
}, i.biDivideByRadixPower = function(t, r) {
var e = new g();
return i.arrayCopy(t.digits, r, e.digits, 0, e.digits.length - r), e;
}, i.biModuloByRadixPower = function(t, r) {
var e = new g();
return i.arrayCopy(t.digits, 0, e.digits, 0, r), e;
}, i.biCompare = function(i, t) {
if (i.isNeg != t.isNeg) return 1 - 2 * Number(i.isNeg);
for (var r = i.digits.length - 1; r >= 0; --r) if (i.digits[r] != t.digits[r]) return i.isNeg ? 1 - 2 * Number(i.digits[r] > t.digits[r]) : 1 - 2 * Number(i.digits[r] < t.digits[r]);
return 0;
}, i.biDivideModulo = function(t, r) {
var e, n, d = i.biNumBits(t), o = i.biNumBits(r), u = r.isNeg;
if (d < o) return t.isNeg ? ((e = i.biCopy(s)).isNeg = !r.isNeg, t.isNeg = !1, r.isNeg = !1,
n = biSubtract(r, t), t.isNeg = !0, r.isNeg = u) : (e = new g(), n = i.biCopy(t)),
[ e, n ];
e = new g(), n = t;
for (var a = Math.ceil(o / 16) - 1, b = 0; r.digits[a] < 32768; ) r = i.biShiftLeft(r, 1),
++b, ++o, a = Math.ceil(o / 16) - 1;
n = i.biShiftLeft(n, b), d += b;
for (var h = Math.ceil(d / 16) - 1, l = i.biMultiplyByRadixPower(r, h - a); -1 != i.biCompare(n, l); ) ++e.digits[h - a],
n = i.biSubtract(n, l);
for (var f = h; f > a; --f) {
var v = f >= n.digits.length ? 0 : n.digits[f], c = f - 1 >= n.digits.length ? 0 : n.digits[f - 1], N = f - 2 >= n.digits.length ? 0 : n.digits[f - 2], m = a >= r.digits.length ? 0 : r.digits[a], M = a - 1 >= r.digits.length ? 0 : r.digits[a - 1];
e.digits[f - a - 1] = v == m ? 65535 : Math.floor((65536 * v + c) / m);
for (var y = e.digits[f - a - 1] * (65536 * m + M), p = 4294967296 * v + (65536 * c + N); y > p; ) --e.digits[f - a - 1],
y = e.digits[f - a - 1] * (65536 * m | M), p = 65536 * v * 65536 + (65536 * c + N);
l = i.biMultiplyByRadixPower(r, f - a - 1), (n = i.biSubtract(n, i.biMultiplyDigit(l, e.digits[f - a - 1]))).isNeg && (n = i.biAdd(n, l),
--e.digits[f - a - 1]);
}
return n = i.biShiftRight(n, b), e.isNeg = t.isNeg != u, t.isNeg && (e = u ? i.biAdd(e, s) : i.biSubtract(e, s),
r = i.biShiftRight(r, b), n = i.biSubtract(r, n)), 0 == n.digits[0] && 0 == i.biHighIndex(n) && (n.isNeg = !1),
[ e, n ];
}, i.biDivide = function(t, r) {
return i.biDivideModulo(t, r)[0];
}, i.biModulo = function(t, r) {
return i.biDivideModulo(t, r)[1];
}, i.biMultiplyMod = function(t, r, e) {
return i.biModulo(i.biMultiply(t, r), e);
}, i.biPow = function(t, r) {
for (var e = s, g = t; 0 != (1 & r) && (e = i.biMultiply(e, g)), 0 != (r >>= 1); ) g = i.biMultiply(g, g);
return e;
}, i.biPowMod = function(t, r, e) {
for (var g = s, n = t, d = r; 0 != (1 & d.digits[0]) && (g = i.biMultiplyMod(g, n, e)),
0 != (d = i.biShiftRight(d, 1)).digits[0] || 0 != i.biHighIndex(d); ) n = i.biMultiplyMod(n, n, e);
return g;
}, t.BarrettMu = function(t) {
this.modulus = i.biCopy(t), this.k = i.biHighIndex(this.modulus) + 1;
var r = new g();
r.digits[2 * this.k] = 1, this.mu = i.biDivide(r, this.modulus), this.bkplus1 = new g(),
this.bkplus1.digits[this.k + 1] = 1, this.modulo = b, this.multiplyMod = h, this.powMod = l;
};
var f = function(r, e, s) {
var g = i;
this.e = g.biFromHex(r), this.d = g.biFromHex(e), this.m = g.biFromHex(s), this.chunkSize = 2 * g.biHighIndex(this.m),
this.radix = 16, this.barrett = new t.BarrettMu(this.m);
};
i.getKeyPair = function(i, t, r) {
return new f(i, t, r);
}, void 0 === t.twoDigit && (t.twoDigit = function(i) {
return (i < 10 ? "0" : "") + String(i);
}), i.encryptedString = function(t, r) {
for (var e = [], s = r.length, n = 0; n < s; ) e[n] = r.charCodeAt(n), n++;
for (;e.length % t.chunkSize != 0; ) e[n++] = 0;
var d, o, u, a = e.length, b = "";
for (n = 0; n < a; n += t.chunkSize) {
for (u = new g(), d = 0, o = n; o < n + t.chunkSize; ++d) u.digits[d] = e[o++],
u.digits[d] += e[o++] << 8;
var h = t.barrett.powMod(u, t.e);
b += (16 == t.radix ? i.biToHex(h) : i.biToString(h, t.radix)) + " ";
}
return b.substring(0, b.length - 1);
}, i.decryptedString = function(t, r) {
var e, s, g, n = r.split(" "), d = "";
for (e = 0; e < n.length; ++e) {
var o;
for (o = 16 == t.radix ? i.biFromHex(n[e]) : i.biFromString(n[e], t.radix), g = t.barrett.powMod(o, t.d),
s = 0; s <= i.biHighIndex(g); ++s) d += String.fromCharCode(255 & g.digits[s], g.digits[s] >> 8);
}
return 0 == d.charCodeAt(d.length - 1) && (d = d.substring(0, d.length - 1)), d;
}, i.setMaxDigits(130);
}({
}), module.exports = i;
舔狗日志
舔狗日记 6月19日 晴
今天你终于通过我好友了,打招呼的方式还是那么别致,一个阿玛尼包包的淘宝链接,我从兄弟那边借了3000,很快给你买了,你很开心,给我发了可爱的表情包,还对我说了谢谢,你开心,我也就开心了
舔狗日记 6月20日 晴
今天发工资了,我一个月工资800,你猜我会给你多少,是不是觉得我会给你1200,因为厂里全勤奖还有400。错了,我会再和工友借114凑够1314转给你。
舔狗日记 6月21日 阴
我给你打了一通电话,你终于接了。听到了你发出啊啊啊啊的声音,你说你脚痛,我想你一定是很难受吧。电话还有个男的对你说“来换个姿势”。你一定是在做理疗,好心疼,期待你早日康复。
舔狗日记 10月26日 晴
今天约喜欢的女孩子一起出去喝奶茶,她回我一句“有病”,我想着,有病啊,那等她病好了,再约她吧,嘿嘿
舔狗日记 10月30日 晴
今天你破天荒的给我发了个早,我开心极了,难道这就是恋爱的感觉吗?我一看时间,十二点整,你一醒来就在想我,我流下了激动的泪水,又想到你现在都没有吃饭,我给你发了二百块钱的红包。你快速的领取了,却迟迟没有回我消息。我想你可能也沉浸在感动当中吧,我给你发了句吃点东西吧。回复我的确实一个红色感叹号!红色代表爱情,你一定是不好意思说出口,采用这么委婉的方式表达你对我的爱,我也爱你。
边栏推荐
- SQL手工盲注、报错注入
- TI AM335x工控模块网络跟文件系统NFS的实现
- [in simple terms, play with FPGA learning 11 --- testbench writing skills 1]
- [paper reading] coat: CO scale conv attentional image transformers
- MPLS knowledge points
- SQLyog数据导入导出图文教程
- How to do Taobao live broadcast and how to do the anchor to drain and sell products
- [in simple terms, play with FPGA learning 11 --- testbench writing skills 2]
- Programming basic environment variable setting of in-house SOC
- E2. escape the maze (hard version)
猜你喜欢

SQL手工盲注、报错注入
![[2019] [paper notes] tunable THz broadband absorption based on metamaterials——](/img/ae/bbebba30d0d6f58d65531cff48b5e9.png)
[2019] [paper notes] tunable THz broadband absorption based on metamaterials——

mysql 事务隔离级别

How to choose cloud note tool? What can I do with cloud notes?

There is no setter method in grpc list under flutter. How to use related attributes

obsidian移动端PC段同步

ggplot2学习总结

1. Mx6ul core module use serial RTC test (XII)

These practical security browser plug-ins improve your efficiency

1. Mx6ul core module uses serial can and buzzer test (XI)
随机推荐
Mark and lightbulbs (thinking)
I.MX6UL核心模块使用连载-TF卡读写测试 (五)
增删改查业务的快速上手
[C language brush leetcode] 814. Binary tree pruning (m)
I.MX6UL核心模块使用连载-CAN、蜂鸣器测试 (十一)
I.MX6UL核心模块使用连载-以太网测试 (七)
# Dest0g3 520迎新赛(更新中)
win下搭建嵌入式开发环境及frp穿透
JS add random pixel noise background to the page
2022-07-17
19_请求表单与文件
Are you still using ==0 null equal to judge null values? How much do you know about isempty and isblank
租户问题。
还在用==0 null equal 判断空值吗,对isEmpty 和 isBlank有多少了解呢
Implementation of Ti am335x industrial control module network and file system nfs
1. Mx6ul core module uses serial can and buzzer test (XI)
1. Mx6ul core module use serial TF card read / write test (V)
PHP Alipay transfer to Alipay account
转:高效做正确的事
[C language brush leetcode] 146. LRU cache (m)