找回SecureCRT密码
来源:互联网 发布:二季度出口数据 编辑:程序博客网 时间:2024/05/01 01:18
前言
因为S公司历史原因,几百台服务器的密码保存SecureCRT上,但是这个软件实在太难用了,所以提取其中的原始账号密码,转移到Xshell上
密码保存位置
Windows 在 “用户名\AppData\Roaming\VanDyke\Config\Sessions\”中,每个机器名对应一个ini文件
(位置可能会有修改)
使用
先看后面的安装,Python脚本保存为SecureCRTDecrypt.py
用法 python SecureCRTDecrypt.py [filename...]
例子
[@bx_5_219 /tmp]# python SecureCRTDecrypt.py 10.10.123.123.ini 10.10.123.123.inissh root@10.10.70.30 # I'mpassword
依赖包
安装解密依赖包pycrypto
下载
https://pypi.python.org/pypi/pycryptowget https://pypi.python.org/packages/source/p/pycrypto/pycrypto-2.6.1.tar.gz
解压安装
tar -zxvf pycrypto-2.6.1.tar.gzcd pycrtyto-2.6.1python setup.py buildpython setup.py install
密文解密程序
保存为SecureCRTDecrypt.py
from Crypto.Cipher import Blowfishimport argparseimport redef 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))
参考
[1] 如何找回SecureCRT密码
[2] GitHub上gitPoc32的项目
0 0
- 找回SecureCRT密码
- 查看 找回 SecureCRT的密码
- 密码找回
- 找回密码
- 密码找回
- 找回密码
- 找回 Linux 密码
- oracle10g如何找回密码
- 找回adsl密码
- 终于找回密码^_^
- 终于找回密码了
- MYSQL密码找回
- mysql 找回密码
- 找回ORACLE密码
- 找回root的密码
- mysql 找回密码
- 发送邮件 找回密码
- 找回MysQL密码
- ubuntu sogoupinyin拼音安装
- 菜鸟的ViewPager使用
- Python中将字符串转换成字典dict类型
- APP开发实战138-代码封装
- js中几种实用的跨域方法原理详解
- 找回SecureCRT密码
- Photoshop文字特效——胶囊字体
- Java的基本语法
- 创建第一个 local network(I) - 每天5分钟玩转 OpenStack(80)
- Netty解决粘包问题(1) 自定义分隔符
- 半年总结-2016-8-30 23:19:19
- APP开发实战139-APP测试
- 什么是POP3、SMTP和IMAP?
- Linux 运维学习第五天-正则表达式及shell脚本