东方财富证券登录解密

2022年8月1日 10:58 ry 40

之前接了个单,使用协议登录东方财富证券交易网站,登录界面如图所示

输入账号密码和验证码实现登录,验证码这个好办,之前写了个通用的接口,先登录抓下登录的数据包,随便输入几个账号密码,如图所示

数据包点进去,如图所示

查看其数据包,登录的几个参数,userId为账号,password为密码,经过加密了的,duration为保持登录时长3小时,除了password加密了其他的都为明文,开始来查看这个加密参数,全局搜索ctrl+shift+F,输入password字段,搜索查询结果如图

看到encrypt,差不多加密就在这里了,在这行打上断点,登录重新提交下,如图所示

可以看见我输入的密码明文是123456,经过EMTradeEncrypt,encrypt函数加密,我们点开这个函数,鼠标选定,如图所示

熟悉js语法的人很容易看到是RSA加密,公钥一串字符串直接复制即可,对于python实现RSA加密代码如下所示

def _encrpt(string, public_key):
    rsakey = RSA.importKey(public_key)  # 读取公钥
    cipher = Cipher_pksc1_v1_5.new(rsakey)
    # 因为encryptor.encrypt方法其内部就实现了加密再次Base64加密的过程,所以这里实际是通过下面的1和2完成了JSEncrypt的加密方法
    encrypt_text = cipher.encrypt(string.encode())  # 1.对账号密码组成的字符串加密
    cipher_text_tmp = base64.b64encode(encrypt_text)  # 2.对加密后的字符串base64加密
    return cipher_text_tmp.decode()


def gen_body(pwd, public_key):
    '''根据账号密码生成请求的body然后调用_encrpt方法加密'''

    encrypt_res = _encrpt(pwd,public_key)
    return encrypt_res

最后的登录实现效果如图所示

 

欢迎发表评论~

点击此处登录后即可评论


评论列表
2022年8月1日 11:00 ry:

纯属技术交流,请勿滥用



赣ICP备2021001574号-1

赣公网安备 36092402000079号