当前位置:网站首页>我来图书馆小程序签到流程分析
我来图书馆小程序签到流程分析
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日 晴
今天你破天荒的给我发了个早,我开心极了,难道这就是恋爱的感觉吗?我一看时间,十二点整,你一醒来就在想我,我流下了激动的泪水,又想到你现在都没有吃饭,我给你发了二百块钱的红包。你快速的领取了,却迟迟没有回我消息。我想你可能也沉浸在感动当中吧,我给你发了句吃点东西吧。回复我的确实一个红色感叹号!红色代表爱情,你一定是不好意思说出口,采用这么委婉的方式表达你对我的爱,我也爱你。
边栏推荐
- Web3.0 blog DAPP development practice [2022]
- Worthington产气荚膜梭菌神经氨酸酶的特征及测定
- What are the functions of cloud notes, and how do browsers add cloud note plug-ins
- E. Split into two sets
- Advantages of composition API
- Zhinai buys melons (DP backpack)
- These practical security browser plug-ins improve your efficiency
- [leetcode] 32. Longest valid bracket
- AttributeError: ‘Document‘ object has no attribute ‘pageCount‘
- I.MX6UL核心模块使用连载-WIFI测试 (八)
猜你喜欢

Digital transformation behind the reshaping growth of catering chain stores

E. Split into two sets

What is the difference between for... In... And for... Of

增删改查业务的快速上手

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

Video game quiz? I think it's useless. It's better to do these well!

I.MX6UL核心模块使用连载-以太网测试 (七)

I.MX6UL核心模块使用连载-WIFI测试 (八)

I.MX6UL核心模块使用连载-Iot-6ULX核心模块简要介绍 (一)

Implementation of C iterator
随机推荐
I.MX6UL核心模块使用连载-以太网测试 (七)
[leetcode] 32. Longest valid bracket
Pt onnx ncnn conversion problem record (followed by yolov5 training)
MPLS知识点
I.MX6UL核心模块使用连载-RS485测试 (十)
【2021】【论文笔记】红外及THz下的细胞膜生物效应——效应是现象,作用是机理——THz对医学的好处
A MCU event driven C framework
Sqlyog data import and export graphic tutorial
vite 本地运行首次进入页面加载慢问题
The slow loading of the first entry page of vite local operation
MPLS knowledge points
Summary after reading "poor dad and rich dad"
[C language brush leetcode] 443. Compressed string (m)
LeetCode302场周赛第三题--裁剪数字后查询第 K 小的数字
【2020】【论文笔记】磁控溅射法生长Bi2Te3/CoFeB双层异质结——
Qt程序美化之样式表的使用方法,Qt使用图片作为背景与控件透明化,Qt自定义按钮样式
AttributeError: ‘Document‘ object has no attribute ‘pageCount‘
国标GB28181协议视频平台EasyGBS消息弹框模式优化
Implementation of Ti am335x industrial control module network and file system nfs
一款可插拔的AM335X工控模块板载wifi模块