Skip to content

Repository files navigation

FinalShell Decoder X — 解析本地 FinalShell 配置文件,提取服务器信息并解密保存的密码与私钥。
跨平台支持 macOS / Windows / Linux,提供 GUI 与命令行两种使用方式。

📌 免责声明
本项目仅供学习交流使用,使用者需自行承担使用风险。 本项目不隶属于 FinalShell 官方,仅用于对本地配置文件进行解析与展示。请勿向 FinalShell 官方反馈任何问题,请勿在 FinalShell 官方社区提及此工具。


License

✨ 功能特性

  • 自动检测 FinalShell 安装目录 ✅
  • 解析所有服务器连接配置 ✅
  • 解密加密的登录凭据:
    • 账号密码 ✅
    • SSH 私钥 ✅
  • GUI 表格展示:连接名称 / 主机 / 端口 / 用户名 / 认证方式 / 登录凭据
  • 表格支持点击列标题排序 ✅
  • 右键菜单快捷操作(复制凭据、查看详情)✅
  • 双击即可复制凭据,右下方面板展示完整解析数据
  • 命令行版本支持导出私钥到文件
  • 水平滚动条支持长内容显示 ✅

📁 项目结构

├── final_shell_decoder.py       # GUI 版本
├── final_shell_decoder_cli.py   # 命令行版本
├── src/
│   ├── __init__.py
│   └── core.py                  # 共享核心库(解密引擎、JSON 解析、数据模型)
├── tests/
│   └── test_core.py             # 单元测试
├── pyproject.toml               # 项目配置
└── README.md

🖥 安装

方式一:uv(推荐)

uv venv
uv add pyperclip pycryptodome

方式二:标准 venv

python3 -m venv venv
source venv/bin/activate      # macOS / Linux
# venv\Scripts\activate       # Windows

pip install pyperclip pycryptodome

方式三:直接安装

pip install pyperclip pycryptodome

🚀 使用方法

GUI 版本

# uv
uv run python final_shell_decoder.py

# 标准 venv / 直接安装
python final_shell_decoder.py

alt text

  1. 程序启动后自动检测 FinalShell 安装目录
  2. 若未检测到,点击「手动选择」浏览到包含 conn 文件夹的目录
  3. 点击「开始解析」— 所有连接配置将显示在表格中
  4. 双击任意行查看详情,凭据自动复制到剪贴板

界面布局:

  • 路径选择区域 — 显示与选择 FinalShell 目录
  • 表格区域 — 列出所有服务器连接
  • 详细信息区域 — 显示选中连接的完整配置与密钥信息(含解析日志)
  • 状态栏 — 显示运行状态与提示

命令行版本

# uv
uv run python final_shell_decoder_cli.py [目录]

# 标准 venv / 直接安装
python final_shell_decoder_cli.py [目录]
# 自动检测 FinalShell 目录
python final_shell_decoder_cli.py

# 指定目录
python final_shell_decoder_cli.py /path/to/finalshell
python final_shell_decoder_cli.py .

# 查看版本与帮助
python final_shell_decoder_cli.py --version
python final_shell_decoder_cli.py --help

# 开启调试输出
python final_shell_decoder_cli.py --verbose

alt text 解析完成后,若存在已解密的私钥,程序会询问是否导出到文件:

  • 默认保存路径:当前目录下的 output/ 目录
  • 单个私钥:自动选择并保存
  • 多个私钥:可选择保存全部(输入 0)或指定单个私钥(输入对应编号)

📄 支持的配置文件

文件 说明
config.json FinalShell 主配置,secret_key_list 字段存储加密私钥
conn/*_connect_config.json 单个服务器的连接配置(主机、端口、用户名、加密密码等)

🔐 技术原理

密码解密

  1. Base64 解码加密密码字段
  2. 取前 8 字节作为头部(head)信息
  3. 通过 ranDomKey(head) 生成 DES 密钥
  4. 剩余字节使用 DES-ECB 解密,得到明文密码

私钥解密

  1. config.jsonsecret_key_list 中提取 Base64 编码的 key_data
  2. Base64 解码即为原始 OpenSSH 私钥

⚠ 安全提示

  • 本工具仅可用于合法场景(数据备份、安全审计、自用环境迁移)
  • 请勿在未授权的环境中使用
  • 解析后的私钥与密码请妥善保管,避免泄露
  • 请勿将 config.jsonconn/output/ 目录提交到版本控制系统

🛠 开发者

系统要求

  • Python 3.8+
  • tkinter(仅 GUI 版本需要,通常随 Python 一起安装)
  • 依赖:pyperclippycryptodome

开发安装

pip install -e .

运行测试

python -m unittest discover -s tests -v

About

FinalShell 配置解析工具 — 跨平台解密密码与私钥

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages