主页 > imtoken手机钱包 > 破解网站登录加密的方法是什么

破解网站登录加密的方法是什么

imtoken手机钱包 2023-01-18 09:38:18

破解网站登录加密的方法是什么?这个问题在我们日常的学习或工作中可能会经常看到。我希望这个问题可以帮助你收获很多。以下是小编为大家带来的参考内容,一起来看看吧!

今天的内容主要是破解一个网站的rsa加密。当然不是破解算法,而是找到加密后的参数,正确模拟算法。

1、什么是rsa算法

1976 年,两位美国计算机科学家 Whitfield Diffie 和 Martin Hellman 提出了一个新的想法,即可以在密钥的情况下,完成解密。这称为“Diffie-Hellman 密钥交换算法”。该算法启发了其他科学家。众所周知,加密和解密可以使用不同的规则私钥好破解吗,只要两条规则之间存在一定的对应关系,从而避免了直接传递密钥的需要。

这种新的加密方式被称为“非对称加密算法”。

(1)乙方生成两个密钥(公钥和私钥)。公钥是公开的,任何人都可以获取,而私钥是保密的。

(2)甲方获得乙方的公钥私钥好破解吗,然后用它对信息进行加密。

私钥好破解吗

(3)乙方获取加密信息并用私钥解密。

如果用公钥加密的信息只能用私钥解密,那么只要私钥不泄露,通信就是安全的。

2、研究目标

从我想研究的网站来看,就是根据参数得到正确的公钥,然后加密后返回给服务器,这样服务器就可以用私钥解密正确的数据了。

同时,这篇文章我不会告诉你具体的网站,只是给你一个解决问题的思路。

3、开始

3.1 抓包找参数

私钥好破解吗

首先打开一个网站的登录页面,输入用户名、密码、验证码等参数,抓包看到如下页面:

破解网站登录加密的方法是什么

我实际输入的值都是1,而且都是加密的。我别无选择,只能找到一种加密方法。

经过一番搜索,发现原来的加密算法在源码中,下面是截图:

破解网站登录加密的方法是什么

从这里可以看到具体的算法名称和相关参数。他们会说,我不知道这是什么算法?搜索,你可以通过关键字搜索找到。

同时,你是不是觉得这个网站很蠢,是不是太简单了?

私钥好破解吗

绝对不是!!!

这么简单,就说明这里一定有玄机!!!

至于其中的奥秘,待会再谈,泪流满面。

3.2 加密过程分析

首先,我们知道公钥后,可以通过解析公钥得到相关参数,给你找个例子代码

# /usr/bin/python
# encoding: utf-8
import base64
def str2key(s):
    # 对字符串解码
    b_str = base64.b64decode(s)
    if len(b_str) < 162:
        return False
    hex_str = ''
    # 按位转换成16进制
    for x in b_str:
        h = hex(ord(x))[2:]
        h = h.rjust(2, '0')
        hex_str += h
    # 找到模数和指数的开头结束位置
    m_start = 29 * 2
    e_start = 159 * 2
    m_len = 128 * 2
    e_len = 3 * 2
    modulus = hex_str[m_start:m_start + m_len]
    exponent = hex_str[e_start:e_start + e_len]
    return modulus,exponent
if __name__ == "__main__":
    pubkey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDC7kw8r6tq43pwApYvkJ5laljaN9BZb21TAIfT/vexbobzH7Q8SUdP5uDP
    XEBKzOjx2L28y7Xs1d9v3tdPfKI2LR7PAzWBmDMn8riHrDDNpUpJnlAGUqJG9ooPn8j7YNpcxCa1iybOlc2kEhmJn5uwoanQq+CA6agNkq
    ly2H4j6wIDAQAB"
    key = str2key(pubkey)
    print key

对应的输出:

私钥好破解吗

('c2ee4c3cafab6ae37a7002962f909e656a58da37d0596f6d530087d3fef7b16e86f31fb43c49474fe6e0cf5c404acce8f1d8bdbccbb5ecd
5df6fded74f7ca2362d1ecf033581983327f2b887ac30cda54a499e500652a246f68a0f9fc8fb60da5cc426b58b26ce95cda41219899f9bb0
a1a9d0abe080e9a80d92a972d87e23eb', 
'010001')

从代码中可以看出,解析公钥后,我们得到两个值,一个是010001,和我们在网站源码中查到的值是一样的。因此,我们应该可以直接使用源代码中的参数。有没有办法找到组织?

接下来,使用以下代码对数据进行加密:

import rsa
import binascii
def en_test():
    param_1 = "010001"
    # 某次我找到的
    param_2 = "955120AB9334B7CD52FCDB422DBF564AFD46DEBDC706F33502BBFAD9DD216A22E4D5012CB70F28473B46FB7190D08C31
    B4B8E76B5112ACE1C5552408961530B1C932DEEA8FC38A9A624AD22073F56F02BF453DD2C1FEA0164106D6B099CC9E5EC88C356FC16
    4FCA47C766DD565D3D11048D27F2DD4221A0B26AB59BD7D09841F"
    message = 'nihao'
    modulus = int(param_2, 16)
    exponent = int(param_1, 16)
    rsa_pubkey = rsa.PublicKey(modulus, exponent)
    crypto = rsa.encrypt(message, rsa_pubkey)
    data = binascii.b2a_hex(crypto)
    print data
if __name__ == '__main__':
    en_test()

但是当我做完之后,进行模拟登录,当我以为我很好的时候,服务器返回给我这样的结果,我傻眼了:

{"Status":false,"ResultValue":"","StatusCode":"REFRESH","StatusMessage":"请尝试重新登录","RecordCount":0,"Data":null}

Yes See 信息提示需要刷新,但当时看不懂。是否需要刷新羊毛?

私钥好破解吗

迷茫了一会,又从头走一遍流程,现在才发现原来源码里的长数据会变,直到这个时候我才意识到为什么要我刷新。

服务器,不能直接说参数不对吗?刷新你的叔叔。

果然还是太年轻了。

果然,从天而降的绝对不是馅饼,而是陷阱。

知道了这个坑就容易处理了,用正则匹配,结果是正确的:

{"Status":true,"ResultValue":"","StatusCode":"OK","StatusMessage":"成功","RecordCount":0,"Data":{"LoginUrl":
"/System/Welcome"}}

感谢大家的阅读!看完以上内容,你对破解网站登录加密的方法有大概了解了吗?希望文章的内容对你有所帮助。想了解更多相关文章,请关注易宿云行业资讯频道。