安卓逆向工作之sha1暴力破解(研究篇)
思路:
1. 读取rsa文件,每次递增的读取一段内容去计算内容的16进制的sha值
2. 遍历sha1算出sha1的散列码。
3. 最后写入文件,该代码没有加入写入文件的代码段。
import os
import hashlib
import numpy as np
import binascii
from hashlib import blake2b
class AppRsaKill():
def __init__(self,paths):
self._paths = paths
def run(self):
try:
pass
self.read_rsa_content()
except Exception as e:
print(e)
def read_rsa_content(self):
rsa_file = open(self._paths[0],'rb')
size = os.path.getsize(self._paths[0])
sha_path = open(self._paths[1],'rb').read()
sha_path = sha_path.decode()
num = 0
a = rsa_file.read()
for i in range(size):
for j in range(i+1,size):
num += 1
new_sha1 = self.bytes2sha(a[i:j])
new_sha1_str = " ".join(new_sha1)
if sha_path == new_sha1_str:
print("第{0}次匹配成功 结果为{1}".format(num,new_sha1_str))
return
else:
print("匹配第{0}次 数据是{1}".format(num,new_sha1_str))
def bytes2sha(self,b):
sha1_obj = hashlib.sha1()
sha1_obj.update(b)
b_sha1 = sha1_obj.digest()
new_sha1 = []
for idx in range(len(b_sha1)):
_ = b_sha1[idx]
hex_sha = hex(_)
hex_sha = hex_sha[2:4]
hex_sha = hex_sha.upper()
if len(hex_sha)==1:
hex_sha = "0"+hex_sha
new_sha1.append(hex_sha)
return new_sha1
if __name__ == "__main__":
base_dir = os.path.dirname(os.path.abspath(__file__))
file_path = base_dir + "/KEY0.RSA"
sha_path = base_dir + "/SHA.txt"
AppRsaKill([file_path,sha_path]).run()