找回SecureCRT密码

举报
清雨小竹 发表于 2022/09/25 00:47:40 2022/09/25
【摘要】 使用 先看后面的安装,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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。