找回SecureCRT密码
【摘要】
使用
先看后面的安装,Python脚本保存为SecureCRTDecrypt.py 用法python SecureCRTDecrypt.py [filename...] 例子
[@bx_5_219 /tmp]# python SecureCRTDecrypt.py 10.10.123.123.ini 10.10.123.123....
使用
先看后面的安装,Python脚本保存为SecureCRTDecrypt.py
用法python SecureCRTDecrypt.py [filename...]
例子
-
[@bx_5_219 /tmp]# python SecureCRTDecrypt.py 10.10.123.123.ini
-
10.10.123.123.ini
-
ssh root@10.10.70.30 # I'mpassword
依赖包
安装解密依赖包pycrypto
下载
-
https://pypi.python.org/pypi/pycrypto
-
wget https://pypi.python.org/packages/source/p/pycrypto/pycrypto-2.6.1.tar.gz
解压安装
-
tar -zxvf pycrypto-2.6.1.tar.gz
-
cd pycrtyto-2.6.1
-
python setup.py build
-
python setup.py install
密文解密程序
保存为SecureCRTDecrypt.py
-
from Crypto.Cipher import Blowfish
-
import argparse
-
import re
-
-
def decrypt(password) :
-
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(password.decode('hex'))[4:-4])
-
p = ''
-
while padded[:2] != '\x00\x00' :
-
p += padded[:2]
-
padded = padded[2:]
-
return p.decode('UTF-16')
-
-
REGEX_HOSTNAME = re.compile(ur'S:"Hostname"=([^\r\n]*)')
-
REGEX_PASWORD = re.compile(ur'S:"Password"=u([0-9a-f]+)')
-
REGEX_PORT = re.compile(ur'D:"\[SSH2\] Port"=([0-9a-f]{8})')
-
REGEX_USERNAME = re.compile(ur'S:"Username"=([^\r\n]*)')
-
-
def hostname(x) :
-
m = REGEX_HOSTNAME.search(x)
-
if m :
-
return m.group(1)
-
return '???'
-
-
def password(x) :
-
m = REGEX_PASWORD.search(x)
-
if m :
-
return decrypt(m.group(1))
-
return '???'
-
-
def port(x) :
-
m = REGEX_PORT.search(x)
-
if m :
-
return '-p %d '%(int(m.group(1), 16))
-
return ''
-
-
def username(x) :
-
m = REGEX_USERNAME.search(x)
-
if m :
-
return m.group(1) + '@'
-
return ''
-
-
parser = argparse.ArgumentParser(description='Tool to decrypt SSHv2 passwords in VanDyke Secure CRT session files')
-
parser.add_argument('files', type=argparse.FileType('r'), nargs='+',
-
help='session file(s)')
-
-
args = parser.parse_args()
-
-
for f in args.files :
-
c = f.read().replace('\x00', '')
-
print f.name
-
print "ssh %s%s%s # %s"%(port(c), username(c), hostname(c), password(c))
文章来源: zzzili.blog.csdn.net,作者:清雨小竹,版权归原作者所有,如需转载,请联系作者。
原文链接:zzzili.blog.csdn.net/article/details/119205517
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)