云南财经大学的深澜认证协议

简单介绍了云财关于校园网需要注意的


前言

基于huxiaofan1223的文章和zu1k的开源项目来对我学校做的一些补充和修改

一、云财的深澜校园网

直接套用不能够使用,我用的是zu1k的开源代码才做成功

二、关于i的加密和info加密

1.encode与xencode

开始我以为encode是新的加密手段,但是用zu1k的xencode加密成功登录后我才发现是一样的

网页JavaScript的源码:

_encodeUserInfo.set(_assertThisInitialized(_this), {
    writable: true,
    value: function value(info, token) {
        // 克隆自 $.base64,防止污染
        var base64 = _this.clone($.base64);
 // base64 设置 Alpha
        base64.setAlpha('LVoJPiCN2R8G90yg+hmFHuacZ1OWMnrsSTXkYpUq/3dlbfKwv6xztjI7DeBE45QA'); 
// 用户信息转 JSON

        info = JSON.stringify(info);

        function encode(str, key) {
            if (str === '') return '';
            var v = s(str, true);
            var k = s(key, false);
            if (k.length < 4) k.length = 4;
            var n = v.length - 1,
                z = v[n],
                y = v[0],
                c = 0x86014019 | 0x183639A0,
                m,
                e,
                p,
                q = Math.floor(6 + 52 / (n + 1)),
                d = 0;

            while (0 < q--) {
                d = d + c & (0x8CE0D9BF | 0x731F2640);
                e = d >>> 2 & 3;

                for (p = 0; p < n; p++) {
                    y = v[p + 1];
                    m = z >>> 5 ^ y << 2;
                    m += y >>> 3 ^ z << 4 ^ (d ^ y);
                    m += k[p & 3 ^ e] ^ z;
                    z = v[p] = v[p] + m & (0xEFB8D130 | 0x10472ECF);
                }

                y = v[0];
                m = z >>> 5 ^ y << 2;
                m += y >>> 3 ^ z << 4 ^ (d ^ y);
                m += k[p & 3 ^ e] ^ z;
                z = v[n] = v[n] + m & (0xBB390742 | 0x44C6F8BD);
            }

            return l(v, false);
        }

        function s(a, b) {
            var c = a.length;
            var v = [];

            for (var i = 0; i < c; i += 4) {
                v[i >> 2] = a.charCodeAt(i) | a.charCodeAt(i + 1) << 8 | a.charCodeAt(i + 2) << 16 | a.charCodeAt(i + 3) << 24;
            }

            if (b) v[v.length] = c;
            return v;
        }

        function l(a, b) {
            var d = a.length;
            var c = d - 1 << 2;

            if (b) {
                var m = a[d - 1];
                if (m < c - 3 || m > c) return null;
                c = m;
            }

            for (var i = 0; i < d; i++) {
                a[i] = String.fromCharCode(a[i] & 0xff, a[i] >>> 8 & 0xff, a[i] >>> 16 & 0xff, a[i] >>> 24 & 0xff);
            }

            return b ? a.join('').substring(0, c) : a.join('');
        }

        return '{SRBX1}' + base64.encode(encode(info, token));
    }
});

2.网页端点击登录出现INFO Error锛宝rr_code=2的原因

我理解的主要是info获取出现了错误

登录的请求字段和i的加密在网页端JavaScript:

params: {
action: 'login',
username: username,
password: _this4.userInfo.otp ? '{OTP}' + password : '{MD5}' + hmd5,
os: _this4.portalInfo.userDevice.device,
name: _this4.portalInfo.userDevice.platform,
// 双栈认证时 double_stack 参数为 0
double_stack: _this4.portalInfo.doub && !obj.host ? 1 : 0,
chksum: sha1(str),
info: i,
ac_id: ac_id,
ip: ip,
n: n,
type: type
},
 var i = _classPrivateFieldGet(_this4, _encodeUserInfo).call(_this4, {
username: username,
password: password,
ip: ip,
acid: ac_id,
 enc_ver: enc
}, token);

这里的info:i i的加密包含ac_id,登录时的ac_id要改成7才能登录成功。
也就是说网页认证地址中
云南财经大学上网认证平台http://172.16.130.31/srun_portal_success?ac_id=1&theme=ynufeacid改成7就不会出现INFO Error锛宝rr_code=2


开源项目地址

开源项目当中做了登录与登出的功能。同时有python与java,做这2个语言的主要原因是python简洁一些用于快速来理解,因为加密算法大部分我都不知道是什么意思,大部分是用ai帮忙生成的,Java是用于制作Android的app

SimulatedLogin: 云南财经大学的Python和Java模拟登录

你可能感兴趣的:(Python,Java,python,java,深澜)