如何在Python中使用已知密码解密PGP自解密归档(.exe)文件
批量解密Windows下PGP自解密归档(SDA).exe文件的解决方案
问题原因
PGP自解密归档(SDA)是整合了自解密程序与加密数据的EXE文件,并非纯PGP加密数据流。这就是为什么你用gnupg库直接读取文件会提示no data was provided,以及Kleopatra无法识别这类EXE的原因——它们默认只处理标准PGP格式的加密数据,而非带自解密外壳的EXE。
解决方案一:用gpg4win命令行工具批量解密
gpg4win自带的gpg命令行工具可以识别并处理SDA文件,步骤如下:
- 找到gpg程序路径:默认安装路径为
C:\Program Files (x86)\GnuPG\bin\gpg.exe - 打开PowerShell或CMD,切换到SDA文件所在目录
- 执行批量解密命令:
单个文件解密
"C:\Program Files (x86)\GnuPG\bin\gpg.exe" --batch --passphrase "你的密码" --output 解密后文件名.exe 待解密文件.exe
批量解密(PowerShell)
$passwd = "你的密码" $gpgPath = "C:\Program Files (x86)\GnuPG\bin\gpg.exe" # 遍历当前目录下所有.exe文件,解密后添加_decrypted后缀 Get-ChildItem -Filter "*.exe" | ForEach-Object { $outputName = $_.BaseName + "_decrypted" + $_.Extension & $gpgPath --batch --passphrase $passwd --output $outputName $_.FullName }
参数说明:
--batch:禁用交互模式,无需手动确认--passphrase:直接指定解密密码--output:指定解密后的输出文件名(省略的话会自动使用原始归档内的文件名)
解决方案二:Python调用gpg命令行实现批量解密
由于gnupg库无法处理SDA的EXE外壳,我们可以通过Python调用系统命令来完成批量解密:
import subprocess import os # 配置参数 PASSWD = "你的解密密码" GPG_EXE_PATH = r"C:\Program Files (x86)\GnuPG\bin\gpg.exe" SDA_FILE_DIR = r"D:\你的SDA文件存放目录" # 遍历目录下所有SDA文件 for file_name in os.listdir(SDA_FILE_DIR): if file_name.lower().endswith(".exe"): sda_full_path = os.path.join(SDA_FILE_DIR, file_name) # 构造解密后的文件名(原文件名后加_decrypted) decrypted_name = f"{os.path.splitext(file_name)[0]}_decrypted{os.path.splitext(file_name)[1]}" decrypted_full_path = os.path.join(SDA_FILE_DIR, decrypted_name) # 组装gpg命令参数 cmd_args = [ GPG_EXE_PATH, "--batch", "--passphrase", PASSWD, "--output", decrypted_full_path, sda_full_path ] try: # 执行解密命令 subprocess.run(cmd_args, check=True, capture_output=True, text=True) print(f"✅ 成功解密:{file_name}") except subprocess.CalledProcessError as e: print(f"❌ 解密失败 {file_name}:{e.stderr.strip()}")
注意事项:
- 如果你的gpg安装路径不同,请修改
GPG_EXE_PATH - 若解密后的原始文件不是EXE格式,可调整
decrypted_name的后缀 - 密码包含特殊字符(如空格、$、&)时,Python代码无需额外处理,subprocess会自动处理参数分隔
补充提示
- 不要尝试用
gnupg库直接读取SDA文件内容,它无法解析EXE外壳中的加密数据 - Kleopatra不支持直接处理SDA格式,所以只能通过命令行工具完成批量操作
内容的提问来源于stack exchange,提问作者lampShadesDrifter
相关产品推荐
相关产品推荐

