查看: 20|回复: 0

[Windows] SecureCRT密码批量提取工具V1.2

[复制链接]

2354

主题

0

回帖

7083

积分

版主

积分
7083
发表于 2026-7-10 18:28:54 | 显示全部楼层 |阅读模式
时隔一年更新了自用的小工具,原帖来自本人:https://www.52pojie.cn/forum.php ... =crt%2B%C3%DC%C2%EB

项目在git上放了打包好的exe,求starundefined,项目地址:https://github.com/TerraBough/SecureCRT-encrypt-password

省流地址在这:https://wwbqa.lanzouu.com/b0um8byub 密码:52pj

也可以选择这个富哥链接 蓝奏云.txt (47 Bytes, 下载次数: 10)
注意要新建一个sessions目录放在exe同级,双击就可以开始用了,其他详细可以看项目介绍






SecureCRT 会话密码批量提取工具

一个用于离线还原 SecureCRT 会话 (.ini) 中保存密码的命令行工具。支持 SecureCRT 的两代密码格式(V1 双层 Blowfish、V2 AES 含 BCrypt-PBKDF2 派生),可批量遍历整个 Sessions 目录并把结果汇总为 CSV。
⚠️ 本工具仅用于您自身拥有合法访问权限的设备/账号。误用或越权使用导致的任何后果由使用者自行承担。

目录结构

复制代码 隐藏代码
SecureCRT-encrypt-password/├── securecrt_cipher.py              # SecureCRT V1 / V2 加解密算法实现(核心算法层)├── securecrt_encrypt_password.py    # CLI 主入口:扫描 ini → 解密 → 写 CSV├── requirements.txt                 # 运行时依赖(pycryptodome)├── requirements_win7.txt            # Win7-11 打包专用依赖(锁定版本)├── build_win7.bat                   # 一键打包脚本(生成 Win7-11 兼容 exe)├── .gitignore                       # 忽略 CSV / Sessions / __pycache__ 等敏感物├── LICENSE                          # MIT License└── README.md                        # 本文档
运行时还会按需读写:
  • Sessions/:SecureCRT 的会话目录(脚本同级,或由 --sessions-dir 指定,或回退到 %APPDATA%\VanDyke\Config\Sessions)。
  • securecrt_passwords.csv:默认输出,位于 Sessions/ 同级目录下。

核心特性

  • 双版本兼容:自动识别 Password V2 (AES) 与 Password (V1 Blowfish);同一会话同时存在时优先 V2,V2 失败可自动回退到 V1。
  • 健壮的字段提取:兼容 SecureCRT INI 文件末尾无换行、字符串字段含 hex 长度前缀等格式细节。
  • 单文件异常隔离:单个 ini 解析或解密失败不会中断整批处理,错误原因写入 CSV 的"备注"列。
  • 状态与统计:CSV 含 状态/备注 两列(success/failed/no_password),运行结束输出 成功 / 失败 / 仅用户名 计数。
  • Excel 友好的 CSV:utf-8-sig BOM + QUOTE_ALL,密码含逗号/换行/引号也不会破坏列。
  • 密码明文输入:配置密码在终端明文显示输入,便于确认。
  • 进度反馈:每处理 N 条打印一行计数,N 由 --progress-every 控制。
  • 打包友好:被 PyInstaller 打包成 exe 双击运行时,自动启用 --pause 防止窗口闪退。

安装

复制代码 隐藏代码
# 建议在虚拟环境中安装python -m venv .venv.\.venv\Scripts\Activate.ps1pip install -r requirements.txt
仅需 pycryptodome 一个第三方依赖。

打包为 exe(Win7-11 兼容)

本工具提供一键打包脚本 build_win7.bat,可将程序打包为单个 exe 文件,兼容 Windows 7 SP1 / 8 / 10 / 11。
环境要求

[td]
项目
要求
操作系统Windows 7 SP1 及以上
Python3.8.x(推荐 3.8.10),64 位
Windows 7 补丁需安装KB2533623KB2999226(Win10/11 无需)
为什么选 Python 3.8?它是官方最后支持 Windows 7 的 Python 版本。更高版本可在 Win10/11 上使用,但打包后的 exe 无法在 Win7 上运行。
一键打包

复制代码 隐藏代码
cd SecureCRT-encrypt-passwordbuild_win7.bat
脚本会自动完成以下步骤:
  • 检测 Python 版本(3.8 ~ 3.10)
  • 升级 pip/setuptools/wheel 至兼容版本
  • 安装 requirements_win7.txt 中锁定的依赖(含 PyInstaller 4.10)
  • 验证 pycryptodome 内部 API _bcrypt_hash 可用
  • 清理旧构建产物
  • 执行 PyInstaller 打包为单文件 exe
打包成功后,输出文件位于:
复制代码 隐藏代码
dist\SecureCRT_Encrypt_Password.exe手动打包

若需自行控制打包参数,可手动执行:
复制代码 隐藏代码
python -m venv .venv.\.venv\Scripts\activatepip install --upgrade pip==24.0 setuptools==69.5.1 wheel==0.43.0pip install -r requirements_win7.txtpython -m PyInstaller --clean -F --console securecrt_encrypt_password.py ^    --name=SecureCRT_Encrypt_Password ^    --hidden-import=securecrt_cipher ^    --hidden-import=Crypto.Cipher.AES ^    --hidden-import=Crypto.Cipher.Blowfish ^    --hidden-import=Crypto.Protocol.KDF._bcrypt_hash分发与使用

  • 将 SecureCRT_Encrypt_Password.exe 拷贝到目标机器
  • 将 Sessions 目录放在 exe 同级目录下(或运行时通过 --sessions-dir 指定路径)
  • 双击 exe 运行,或在 CMD 中执行 SecureCRT_Encrypt_Password.exe --help 查看参数
注意:exe 双击运行时会自动启用 --pause,程序结束后等待按回车才退出,防止窗口闪退。

使用方法

1. 准备 Sessions 目录

将 SecureCRT 的 Sessions 目录拷贝到本工具同级(或运行时通过参数指定路径)。SecureCRT 的默认位置:
复制代码 隐藏代码
%APPDATA%\VanDyke\Config\Sessions2. 运行

最简形式(交互输入配置密码):
复制代码 隐藏代码
python securecrt_encrypt_password.py
常用参数:
复制代码 隐藏代码
# 指定 Sessions 目录python securecrt_encrypt_password.py --sessions-dir "C:\Users\me\AppData\Roaming\VanDyke\Config\Sessions"# 指定输出 CSV 路径python securecrt_encrypt_password.py -o passwords.csv# 关闭进度输出python securecrt_encrypt_password.py --progress-every 0# 自动化场景:从命令行直接传配置密码(不推荐,会进入 shell 历史)python securecrt_encrypt_password.py -p "<your-config-passphrase>"
完整参数:
[td]
参数
说明
--sessions-dir <path>SecureCRT Sessions 目录路径。默认顺序:脚本同级 Sessions/ → %APPDATA%\VanDyke\Config\Sessions
-o, --output <path>输出 CSV 路径。默认:Sessions 同级目录下的 securecrt_passwords.csv
-p, --passphrase <pwd>CRT 配置密码。不推荐在命令行明文传入,仅供自动化使用
--pause结束后等待回车再退出(双击 exe 已自动启用)
--progress-every <N>每处理 N 个文件打印一条进度(默认 50;设为 0 关闭)
3. 关于"配置密码"

SecureCRT V2 (03: 前缀) 密码使用用户在"全局选项 → 常规 → 配置密码"中设置的 Configuration Passphrase 作为派生密钥的 passphrase。
  • 若你启用了配置密码,必须在交互提示处输入它,否则 V2 会话会全部解密失败。
  • 若未启用(仅有 02: 前缀或 V1),直接按回车跳过即可。

输出 CSV 字段

[td]
含义
目录层级会话相对 Sessions/ 的子目录路径,分隔符替换为 -;位于根目录时为 root
文件名.ini 文件名
用户名会话中 S:"Username" 字段值
明文密码解密成功时的明文;失败/无密码时为空
密码版本V1 / V2 / 空(无密码)
状态success / failed / no_password
备注解密失败原因;V2 回退到 V1 时也会标注

模块说明

securecrt_cipher.py

底层加解密原语,不应被修改(与 SecureCRT 的格式严格对应):
  • SecureCRTCrypto:V1 Blowfish-CBC 双层加密。
  • SecureCRTCryptoV2:V2 AES-CBC,区分 02 前缀(SHA256 派生)与 03 前缀(随机 salt + bcrypt-pbkdf2 派生)。
  • 也可作为独立 CLI 单条加/解密一段密文,参见文件内 __main__ 部分。
securecrt_encrypt_password.py

业务编排层,分若干清晰职责:
[td]
区段
主要函数
INI 读取与解析_read_ini_text、extract_password_info
解密策略_decrypt_with_v1 / _decrypt_with_v2 / decrypt_password(V2→V1 回退在此)
路径与 CLIresolve_sessions_dir、resolve_output_csv_path、build_arg_parser、_prompt_passphrase
单文件 / 批量_format_dir_level、_process_single_ini、process_sessions_dir
主入口_maybe_inject_pause_for_frozen、main
所有正则在模块加载时一次性编译,频繁字段提取无重复开销。

安全提示

  • 输出 CSV 中包含明文密码。建议处理完毕后立即妥善归档(加密 zip、删除原文件等),勿提交到任何仓库。
  • 仓库 .gitignore 已默认忽略 *.csv / *.ini / Sessions/。
  • 配置密码请使用交互输入(默认行为),避免出现在 shell 历史或 CI 日志中。
  • 本工具使用了 pycryptodome 中的内部 API Crypto.Protocol.KDF._bcrypt_hash(V2 03: 前缀派生需要)。升级 pycryptodome 时若出现 AttributeError,将版本回退到 requirements.txt 锁定的范围即可。

常见问题

Q:所有 V2 会话均报 无效密文: 明文长度不正确?
A:99% 是配置密码输入错误。请确认你输入的是 SecureCRT "全局选项 → 常规 → 配置密码"中的密码;若该选项未启用,则直接回车。
Q:双击 exe 后窗口一闪而过?
A:本工具在 frozen 模式下会自动启用 --pause,若仍然闪退,多半是依赖未一同打包,请用 console=True 模式构建 PyInstaller 并查看错误。
Q:能不能用在 Linux/Mac?
A:核心算法跨平台,CLI 主体也跨平台,但 Sessions 目录的默认查找路径基于 %APPDATA%。在 *nix 上请显式 --sessions-dir。

致谢

底层算法实现参考自社区已有的 SecureCRT 解密工作(securecrt_cipher.py),原作者请见文件头部注释或开源参考。

License

本项目以 [MIT License] 发布。securecrt_cipher.py 中借鉴自第三方的算法实现部分,请额外尊重其原始许可证。


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|天翼网

相关侵权、举报、投诉及建议等,请发 E-mail:2026@typc.net

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.|晋ICP备2026008270号-1|晋公网安备14010602111293号

在本版发帖QQ客服返回顶部