有关CRT密码反编译问题

By Heanny
2020-08-04
118 read

前提

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

python3

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'\x00\x00')]
    padded = padded.strip("b'")
    padded = padded.replace(r'\x00','')
    return padded

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

python2

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] != '\x00\x00' :
        p += padded[:2]
        padded = padded[2:]
    return p.encode('UTF-16')

其他账户信息

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

int(port, 16)
REGEX_HOSTNAME = re.compile(r'S:"Hostname"=([^\r\n]*)')
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"=([^\r\n]*)')

哦对了

ini文件在crt全局配置下面

【微信小程序】小程序使用彩色iconfont
论如何下载网页中的m3u8/ts视频

Comments

暂无评论,还不快来坐沙发...

Leave a Reply