前提
本来想使用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全局配置下面