安卓工程逆向之sha1暴力破解(研究篇)

安卓逆向工作之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()

猜你喜欢

转载自blog.csdn.net/wujiesunlirong/article/details/117783415
今日推荐