破解网站登录加密–RSA

栏目: 编程工具 · 发布时间: 5年前

内容简介:今天的内容主要讲的是破解一个网站的rsa加密,当然肯定不是破解这个算法,而是找到加密的参数,正确模拟这个算法即可。

大家好,我是四毛,下面的是我的公众号,欢迎关注。

破解网站登录加密–RSA

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

破解网站登录加密–RSA

1. 什么是rsa算法

下面的资料摘抄自阮一峰老师的文章, 点这里了解更多

1976年,两位美国计算机学家Whitfield Diffie 和 Martin Hellman,提出了一种崭新构思,可以在不直接传递密钥的情况下,完成解密。这被称为 “Diffie-Hellman密钥交换算法” 。这个算法启发了其他科学家。人们认识到,加密和解密可以使用不同的规则,只要这两种规则之间存在某种对应关系即可,这样就避免了直接传递密钥。

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

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

(2)甲方获取乙方的公钥,然后用它对信息加密。

(3)乙方得到加密后的信息,用私钥解密。

如果公钥加密的信息只有私钥解得开,那么只要私钥不泄漏,通信就是安全的。

2. 研究目标

从我要研究的网站来说,就是根据参数得到正确的公钥,加密以后返回给服务器,让服务器使用私钥可以解密出正确的数据即可。

同时,本文不会将具体的网站说出来,只是给大家提供一个解决问题的思路。

3. 开始

3.1 抓包找参数

首先,打开某个网站的登录页面,输入用户名,密码,验证码之类的参数, 抓包看到了下面这个页面:

破解网站登录加密–RSA

我实际输入的值全是1, 然后都被加密了, 没办法,只能去找加密的方法了。

经过一番搜索过后,才发现,原来加密的算法就在源代码里面,这里截个图:

破解网站登录加密–RSA

从这里就可以看到具体的算法名以及相关的参数了,你会说,这是什么算法我都不知道啊?搜啊,用关键词搜一下就能知道了。

同时,是不是觉得这个网站好傻逼,这不太简单了吗?

肯定不是!!!

这么简单,说明此处也是必有玄机!!!

至于什么玄机,到后面说,都是泪。

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/vexbobzH7Q8SUdP5uDPXEBKzOjx2L28y7Xs1d9v3tdPfKI2LR7PAzWBmDMn8riHrDDNpUpJnlAGUqJG9ooPn8j7YNpcxCa1iybOlc2kEhmJn5uwoanQq+CA6agNkqly2H4j6wIDAQAB"
    key = str2key(pubkey)
    print key

相应的输出

('c2ee4c3cafab6ae37a7002962f909e656a58da37d0596f6d530087d3fef7b16e86f31fb43c49474fe6e0cf5c404acce8f1d8bdbccbb5ecd5df6fded74f7ca2362d1ecf033581983327f2b887ac30cda54a499e500652a246f68a0f9fc8fb60da5cc426b58b26ce95cda41219899f9bb0a1a9d0abe080e9a80d92a972d87e23eb', 
'010001')

从代码中可以看出,解析了公钥之后得到了两个值,一个就是010001,和我们在网站源代码里面找到的值是一样的。所以,源代码里面的参数我们应该就是可以直接使用的,是不是有种找到组织的赶脚。

接下来,利用下面的代码,来对数据进行加密

import rsa
import binascii
def en_test():
    param_1 = "010001"
    # 某次我找到的
    param_2 = "955120AB9334B7CD52FCDB422DBF564AFD46DEBDC706F33502BBFAD9DD216A22E4D5012CB70F28473B46FB7190D08C31B4B8E76B5112ACE1C5552408961530B1C932DEEA8FC38A9A624AD22073F56F02BF453DD2C1FEA0164106D6B099CC9E5EC88C356FC164FCA47C766DD565D3D11048D27F2DD4221A0B26AB59BD7D09841F"
    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}

破解网站登录加密–RSA

可以看到信息提示要刷新,但是当时是百思不得其解,为毛线要刷新?

困惑了一会之后,我再次从头走了一遍流程,这下我才发现,原来源代码里面的那个 长长的数据 是会 改变 的,直到这个时候,我才意识到为什么要我刷新。。。。。。

服务器啊,你就不能直接说参数错误吗?刷新你大爷啊。

果然,我还是太年轻啊。

果然,天上掉下的绝不是馅饼,绝逼是个陷阱。

破解网站登录加密–RSA

知道这个坑以后就好办了,用个正则匹配一下就行了,而结果也是对的:

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

4 总结

到这里这篇文章就结束了,这个案例相对于来说很简单,而且为了保护网站的隐私,所以没办法展开说。

有些网站的加密方式是很变态的,比如网易云音乐,知晓常见的加密方法,就可以处理大部分的情况了。

其实,网易云音乐并不是一定要加密, 有想知道非加密的方法的,可以关注我,私聊我。有点敏感,就不写文章了。

反正,我爬了1000W+的网易云音乐都是不加密的~~

如果你有类似的问题待解决或者想了解的更清楚的细节的,欢迎关注我的公众号以后,后台私我一下。

破解网站登录加密–RSA


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

JavaScript征途

JavaScript征途

朱印宏 / 电子工业出版社 / 2009-9 / 89.00元

《JavaScript征途》是一本学习JavaScript语言的权威书籍,在遵循语言学习的特殊规律基础上精心选材,力争做到统筹、有序,在结构上体现系统性和完整性。同时还重点挖掘JavaScript基于对象的开发精髓及函数式编程两个技术核心。《JavaScript征途》内容全面,由浅入深,包括6篇21章,主要内容包括:JavaScript语言的基本特性,开发简单的JavaScript程序,JavaS......一起来看看 《JavaScript征途》 这本书的介绍吧!

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

html转js在线工具
html转js在线工具

html转js在线工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具