ITPub博客

首页 > 应用开发 > Python > 使用python解密SecureCRT上保存的密码 (Windows)

使用python解密SecureCRT上保存的密码 (Windows)

原创 Python 作者:strivechao 时间:2020-09-24 17:25:37 0 删除 编辑

一、系统环境

系统:Win10

python版本:python-2.7  

下载地址: https://www.python.org/downloads/release/python-270/

Windows X86-64 MSI Installer (2.7.0)   [1]   (sig)

安装:python 依赖包

方法1:

 下载对应的版本

PyCrypto 2.6 for Python 2.7 64bit

http://www.voidspace.org.uk/python/modules.shtml#pycrypto

方法2:

python依赖包 下载python解密依赖包:

https://pypi.org/project/pycrypto/

解压文件,用命令行工具进入解压后的目录,执行下面命令

python setup.py build 

python setup.py install

二、用法:

python SecureCRT.py [filename...]

1、使用文本编辑器创建SecureCRT.py文件,写入源代码。

2、其中[filename...] 指的是ini文件,位于%APPDATA%\VanDyke\Config\Sessions\sessionname.ini

3、执行命令,即可查看到主机IP、账户、密码信息。

源代码:

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))


接着用命令行工具进入该目录,运行下面命令

 python SecureCRT.py 192.168.0.100.ini







来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25469263/viewspace-2723936/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2018-06-21

  • 博文量
    93
  • 访问量
    142497