龙空技术网

Python3解密SecureCRT会话密码

程序员的成长之路 217

前言:

而今同学们对“python暴力破解ssh”大约比较关注,大家都需要知道一些“python暴力破解ssh”的相关资讯。那么小编在网摘上搜集了一些对于“python暴力破解ssh””的相关资讯,希望兄弟们能喜欢,兄弟们快快来了解一下吧!

Python3解密SecureCRT会话密码

SecureCRT有一个Sessions目录,存放会话文件(ini格式的,包含输入的加密密码),我们的目的是对密码解密。

因为有一些服务器的密码并没有拿到(密码申请需要进过各种流程,为了偷懒就直接要了一个ini文件的会话),虽然直接可以登录,但没有密码想换一个工具登录是不行的,所以有了下面的python脚本。

环境:

win10 + python3.7 (64bit)

第三方模块:

pip install pycryptodome

脚本:

阅读(带格式)

方便复制版:

securecrt_decrypt.py:

# -*- coding: utf-8 -*-

from Crypto.Cipher import Blowfish

def decrypt(password) :

c1 = Blowfish.new(bytes.fromhex('5F B0 45 A2 94 17 D9 16 C6 C6 A2 FF 06 41 82 B7'.replace(' ','')), Blowfish.MODE_CBC, b'\x00'*8)

c2 = Blowfish.new(bytes.fromhex('24 A6 3D DE 5B D3 B3 82 9C 7E 06 F4 08 16 AA 07'.replace(' ','')), Blowfish.MODE_CBC, b'\x00'*8)

padded = c1.decrypt(c2.decrypt(bytes.fromhex(password))[4:-4])

p = b''

while padded[:2] != b'\x00\x00' :

p += padded[:2]

padded = padded[2:]

return p.decode('utf-16')

if __name__ == '__main__':

print(decrypt('d46174594b91ebcfe5f6f1a1a7a9ce08f8a8f4961033a8e3'));

print(decrypt('8053982e93770599e949ba5ba3f34f08b15d77b6ddf6a88974a6369cb3b8955b586c39f4a2912dfda2de053f83682fcc'));

特点:支持python3, 网络上提供的脚本大部分都是python2的

外篇:

使用python3改造.网上的python2的脚本

脚本:

阅读(带格式)

方便复制版:

securecrt_decrypt_util.py:

# encoding=utf-8

from Crypto.Cipher import Blowfish

import argparse

import re

def decrypt(password) :

c1 = Blowfish.new(bytes.fromhex('5F B0 45 A2 94 17 D9 16 C6 C6 A2 FF 06 41 82 B7'.replace(' ','')), Blowfish.MODE_CBC, b'\x00'*8)

c2 = Blowfish.new(bytes.fromhex('24 A6 3D DE 5B D3 B3 82 9C 7E 06 F4 08 16 AA 07'.replace(' ','')), Blowfish.MODE_CBC, b'\x00'*8)

padded = c1.decrypt(c2.decrypt(bytes.fromhex(password))[4:-4])

p = b''

while padded[:2] != b'\x00\x00' :

p += padded[:2]

padded = padded[2:]

return p.decode('utf-16')

re_hostname = re.compile('S:"Hostname"=([^\r\n]*)')

re_port = re.compile('D:"\[SSH2\] (Port|端口)"=([0-9a-f]{8})')

re_username = re.compile('S:"Username"=([^\r\n]*)')

re_password = re.compile('S:"Password"=u([0-9a-f]+)')

def hostname(con) :

m = re_hostname.search(con)

if m :

return m.group(1)

return '???'

def port(con) :

m = re_port.search(con)

if m :

return '-p %d '%(int(m.group(2), 16))

return ''

def username(con) :

m = re_username.search(con)

if m :

return m.group(1) + '@'

return ''

def password(con) :

m = re_password.search(con)

if m :

return decrypt(m.group(1))

return '???'

if __name__ == '__main__':

parser = argparse.ArgumentParser(description='Tool to decrypt SSHv2 passwords in VanDyke Secure CRT session files')

parser.add_argument('files', type=argparse.FileType('r', encoding='utf-8'), 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_decrypt_util.py 192.168.10.25.ini

结果:

192.168.10.25.ini

ssh -p 22 yang@192.168.10.25 # rlX6Df3MC*ZB0ew

标签: #python暴力破解ssh