美文网首页
新版正方系统模拟登陆

新版正方系统模拟登陆

作者: Y_6edb | 来源:发表于2019-04-17 21:04 被阅读0次

    教务系统模拟登陆

    模拟登陆

    1. start_url是登陆页面,请求后可以得到csrftoken,如果不想被发现可以添加时间戳
    2. 需要向服务器请求RSA公钥,对密码进行加密,但是每一个公钥加密的结果是不一样的,同时还要把公钥放在session上才能够验证密码通过
    3. post表单中有两个mm值目的是防止浏览器自动填充密码

    使用python3 加密mm值

    1. 先得到moudles、exponent,在使用RSA加密发送
    2. login.js的源码,在网页的plugin文件中有加密算法
    //获取加密参数
    var modulus,exponent;
        //Ajax请求
        $.getJSON(_path+"/xtgl/login_getPublicKey.html?time="+new Date().getTime(),function(data){
            modulus = data["modulus"];
            exponent = data["exponent"];
        });
        //加密密码
      var rsaKey = new RSAKey();
                rsaKey.setPublic(b64tohex(modulus), b64tohex(exponent));
                var enPassword = hex2b64(rsaKey.encrypt($("#mm").val()));
                $("#mm").val(enPassword);
                $("#hidMm").val(enPassword);   //页面上放了一个隐藏的password类型输入框,name也是mm,防止密码自动填充,在提交的时候把内容设置成跟输入的密码一致
                
    
    1. 使用Python3编写hex2b64()、b64tohex()两个函数,将网页传来的base64数据(modulus、exponent)转为hex,将rsa函数得到的密文转换为base64
    import rsa
    
    # 具体的算法我也不会
    def hex2b64(hex):
    
    def b64tohex(b64):
    
    # rsa加密——先通过m,e生成公钥,再通过公钥加密pwd
    def encrypt_pwd(modulus,exponent,pwd):
        rsa_key = rsa.PubliceKey(b64tohex(modulus),b64tohex(exponent))
        rsa_mm = ras.encrypt(pwd,rsa_key)
        return hex2b64(rsa_mm)
        
        
    """大致逻辑就是这样,但是还需要对数据进行一些处理才用于生成公钥"""
    
    1. 后续就可以通过requests和bs4处理,继承登录模块的cookie即可访问网页数据
    2. 具体的代码在GitHub - yangp1205/zf_jwxt: 登陆RSA加密密码的正方教务系统
    3. RSA加密通过网页的js脚本生成,在python3中的算法感谢EddieIvan01的分享

    相关文章

      网友评论

          本文标题:新版正方系统模拟登陆

          本文链接:https://www.haomeiwen.com/subject/hfmowqtx.html