某网站登录授权过程

本文详细解析了网站登录过程中的加密机制,包括AES、Base64、MD5和RSA加密,以及加法验证码的计算方法。首先,通过JS分析了loginseccodeverify等参数的加密流程,然后介绍了如何获取服务器publickey并进行RSA加密。此外,还涉及了深度学习验证码的处理。整个登录授权过程包括获取publickey、发送解码密钥到服务器和登录授权三个步骤。
摘要由CSDN通过智能技术生成

本文仅用于学习参考,请勿于商用

本文不呈现网站链接,仅仅是一个账号记录登录过程,含JS分析、深度学习计算验证码

  • 登录展示:

点击login,出现验证码。
在这里插入图片描述
输入验证码,点击login,现登录信息如下。
在这里插入图片描述
post发送四个请求,账号,密码,验证码,UA,及前三都都是加密的参数

  • JS过程

全局搜索 loginseccodeverify 参数
在这里插入图片描述
很快找到相应加密参数来源
在这里插入图片描述
第一个加密,AES加密
在这里插入图片描述
在这里插入图片描述
第二个加密,base64
在这里插入图片描述
第三个加密
在这里插入图片描述
在这里插入图片描述
密码那里就单独多了一个md5加密。
在这里插入图片描述


当然,还有encryptkey参数。后面参数测试,不需要每次都生成,只要同规则的参数就行,就是一真用 "1aa8bef48f4b11149a8e5263ade3c965c23425ae8bdbc4aab322bd26f103d6f8"参数都行

在这里插入图片描述
在此之前,还发送了两个请求,一个是获取服务器的publickey,一个是发送服务器解密key
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述


查找 “keycryp” 参数
在这里插入图片描述
此时断点已经生成,那么慢慢往回退,查找生成方式
在这里插入图片描述
在这里插入图片描述
此时,"keycryp"是RSA加密,publickey从服务器返回。

至此,JS加密告别一段落。

加法验证码计算(这里分两种)
  • 接打码平台:

在这里插入图片描述

  • 深度学习方式:

请查看我的另一文章:https://blog.csdn.net/fm345689/article/details/116852673

通过上面过程,登录授权过程就完成了。

登录授权步骤:

获取publickey

发送解码密钥,到服务器

登录授权

说明请求方式请求链接请求参数
获取相关cookieget请求网站相关链接后返回cookie
获取验证码get/seccode.php?update=0.18529641790017615
获取publickeyget/ajax_login.php?action=CryptionData&getPublicKey=true&timeid=1621061157120
发送解码密钥,到服务器post/ajax_login.php?action=CryptionData&handshake=true&timeid=1621061157120keycryp: rE****KM=
登录授权post/ajax_login.php?action=LogAppusername: 5***303d
password: 5***3d
loginseccodeverify: 5***303d
useragent: **6

AES加密,python调js代码

def execute_js(answer,message):

    # $.jCryption.str2hex(Base64_2.encode($.jCryption.encrypt(username, encryptkey)))
    js_code1 = """
    
    var exejs = function(){
     const CryptoJS = require('crypto-js');"""

    js_code2 =  """
    
     var data1 = CryptoJS.AES.encrypt('{}', '{}').toString();

 """.format(str(answer),message)

    js_code3 = """
     var data2 = new Buffer(data1).toString('base64');

     var tohex = function(c) {
           return c > 15 ? c.toString(16) : c < 0 ? "" : "0" + c.toString(16);
       }
    
    var str2hex = function(str) {
          for (var hs = "", i = 0; i < str.length; ++i)
              hs += tohex(str.charCodeAt(i));
           return hs;
       }
	
    var data3 = str2hex(data2);

    return data3
    }
    """
    exjs = execjs.compile(js_code1+js_code2+js_code3,cwd=r"/home/nodejs/node_modules")
    arg2 = exjs.call('exejs')
    # print(arg2)
    return arg2

RSA加密,python代码:

def rsa_encrypt(message,publickey):
    """
    使用信息进行rsa加密
    :param message:
    :param publickey:
    :return:
    """
    key = publickey
    rsakey = RSA.importKey(key)
    cipher = Cipher_pkcs1_v1_5.new(rsakey)
    cipher_text = base64.b64encode(cipher.encrypt(message.encode('utf-8')))
    result = cipher_text.decode('utf-8')

    return result
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值