有关CRT密码反编译问题

2022-08-05 21:22:14 浏览数 (3)

前提

本来想使用sftp往服务器上传点文件,结果密码忘记了,查看密码记事本也不记得,只好反编译crt里面的密码

python3

代码语言:javascript复制
from Crypto.Cipher import Blowfish


def decrypt(password) :
    str_c1 = '5F B0 45 A2 94 17 D9 16 C6 C6 A2 FF 06 41 82 B7'.replace(' ','')
    str_c2 = '24 A6 3D DE 5B D3 B3 82 9C 7E 06 F4 08 16 AA 07'.replace(' ','')
    c1 = Blowfish.new(bytes.fromhex(str_c1), Blowfish.MODE_CBC, b'x00'*8)
    c2 = Blowfish.new(bytes.fromhex(str_c2), Blowfish.MODE_CBC, b'x00'*8)
    padded = c1.decrypt(c2.decrypt(bytes.fromhex(password))[4:-4])
    padded = str(padded)
    padded = padded[0:padded.find(r'x00x00')]
    padded = padded.strip("b'")
    padded = padded.replace(r'x00','')
    return padded

# 密码格式S:"Password"=u加上你的密码
decrypt('这里是密码')

python2

代码语言:javascript复制
from Crypto.Cipher import Blowfish

def decrypt(passwd):
    c1 = Blowfish.new('5F B0 45 A2 94 17 D9 16 C6 C6 A2 FF 06 41 82 B7'.replace(' ','').decode('hex'), Blowfish.MODE_CBC, 'x00'*8)
    c2 = Blowfish.new('24 A6 3D DE 5B D3 B3 82 9C 7E 06 F4 08 16 AA 07'.replace(' ','').decode('hex'), Blowfish.MODE_CBC, 'x00'*8)
    padded = c1.decrypt(c2.decrypt(passwd.strip().decode('hex'))[4:-4])
    p = ''
    while padded[:2] != 'x00x00' :
        p  = padded[:2]
        padded = padded[2:]
    return p.encode('UTF-16')

其他账户信息

温馨提示,一下为匹配所需的账户信息 hostname为明文,username为明文,port是十六进制数字,需要转换一下,方法为,password加密了,解密方法见decrypt(),支持7.x版本以下

代码语言:javascript复制
int(port, 16)
代码语言:javascript复制
REGEX_HOSTNAME = re.compile(r'S:"Hostname"=([^rn]*)')
REGEX_PASWORD = re.compile(r'S:"Password"=u([0-9a-f] )')
REGEX_PORT = re.compile(r'D:"[SSH2] Port"=([0-9a-f]{8})')
REGEX_USERNAME = re.compile(r'S:"Username"=([^rn]*)')

哦对了

ini文件在crt全局配置下面

0 人点赞