A-A+

TX 天眼云镜 系统登录加密分析 Python3 rsaEncrypt Cipher_pkcs1_v1_5

2022年04月06日 12:04 学习笔记 暂无评论 共1717字 (阅读1,427 views次)

【注意:此文章为博主原创文章!转载需注意,请带原文链接,至少也要是txt格式!】

images

之前写过TX IOA 系统登录加密分析 Python3 RSA PKCS1_OAEP 其实分析方法差不多,但是加密方法不一样。

这次走的弯路还是比较少的,废话不多说,直接看图:

images

关键代码如下:

 

initializer: function() {
            return ()=>{
                let {user: e, password: t} = this.inputConfig;
                if (!e.value.trim())
                    return e.isError = !0,
                    void this.reportError(!0, "请输入账号名");
                if (!t.value.trim())
                    return t.isError = !0,
                    void this.reportError(!0, "请输入密码");
                this.isLogining = !0;
                const a = p.appContext.config
                  , r = (0,
                d.default)().unix()
                  , n = a.publicKey[a.environment]
                  , s = f.encryptor.rsaEncrypt(t.value + r, n);
                h.authService.login(e.value, s, r).then(e=>{
                    (0,
                    c.runInAction)(()=>{
                        e.data && e.success && p.appContext.redirector.toBase(),
                        e.errorCode && !e.success && this.reportError(!0, e.errorDesc),
                        this.isLogining = !1
                    }
                    )
                }
                , ()=>{
                    (0,
                    c.runInAction)(()=>{
                        this.isLogining = !1
                    }
                    )
                }
                )
            }
        }

这里面,最关键的代码就是s = f.encryptor.rsaEncrypt(t.value + r, n); 我们仔细分析一下这句话,首先t.value就是我输入的密码,后面的r就是(0,d.default)().unix() 通过控制台就会发现,其实这是获取当前时间戳。然后密码加上时间戳。如下图:

images

它是把两个值放一起,然后进行rsa加密的。当然仔细看,这个加密函数里面除了这个还要传进去一个n,这个n就是n = a.publicKey[a.environment]表面的意思就很明显了,就是公钥KEY,我们看一下。

images

现在加密需要传入的参数我们都有了,那么下一步就是看一下它rsa的具体加密方式。跟进这个函数里面,

images

这里设置了ras的默认加密配置。那我们直接用python 按上面的规则写一个最基础的rsa的加密方式即可,完整代码如下:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
##RSA加密
def rsa_encrypt_password():
    """
    rsa加密
    """
    from Crypto.PublicKey import RSA
    from Crypto.Cipher import PKCS1_v1_5 as Cipher_pkcs1_v1_5
    denglu_time = int(time.time())
    message = "123456{}".format(denglu_time)   #密码加时间戳
    rsa_key = b"""-----BEGIN PUBLIC KEY-----   #公钥
MIGfMA0GCSqGxxxxxxxxxxxxxxxxxxxxxxxxxxxSvd6yxhboGZREYMhMasRSC+Ac
coc8cnqvkABb31wHxBbLbmORR0siQN0iiwl7HHk8O2CMi5RbsYMjU+2nF01iZHn1
EkNIAHwfOgZB0FkHwdgMJT5qw6/+BWewMy4tVYER1X54me8zkEuAYexrkmNjtBnX
RY3oaO3lriD1qcSFdQIDAQAB
-----END PUBLIC KEY-----"""
    rsakey = RSA.importKey(rsa_key)
    cipher = Cipher_pkcs1_v1_5.new(rsakey)  # 创建用于执行pkcs1_v1_5加密或解密的密码
    cipher_text = base64.b64encode(cipher.encrypt(message.encode('utf-8')))
    return cipher_text, denglu_time

布施恩德可便相知重

微信扫一扫打赏

支付宝扫一扫打赏

×

给我留言