☰
【网络安全实战】Wireshark 抓包配合 Kleopatra (GPG) 实现加密流量提取与解密
2026/10/6 8:06:20 网站建设 项目流程

📌 前言

在网络安全分析、CTF 比赛或日常运维中,我们经常需要捕获网络流量并分析其中的加密数据。本文将手把手教你如何用 Python 搭建简易 HTTP 服务器模拟网络传输,用 Wireshark 抓取流量并提取出加密的.gpg文件,最后用 GPG 命令行进行解密。本文附带了大量新手常见报错的排查方案,帮你一次跑通!

🛠️ 一、 环境准备

  • 抓包工具:Wireshark(安装时请务必勾选Npcap,并勾选支持 Loopback 回环抓包)

  • 加解密工具:Gpg4win (Kleopatra) - Windows 下 GPG 的图形化前端

  • 模拟环境:Python 3.x、Curl、PowerShell

🔐 二、 第一步:使用 Kleopatra 生成密钥并加密文件

  1. 打开 Kleopatra,点击“新建密钥对”。

  2. 输入姓名(例如张三)和邮箱(例如test@example.com),点击下一步,设置一个密码或直接留空(测试环境为了方便,可以直接留空,但会引发后续的一个坑,见下文)。

  3. 桌面上新建secret.txt,内容写上“这是我要加密的绝密信息”。

  4. 在 Kleopatra 中点击“签名/加密”,选择该文件。

⚠️避坑指南 1:No passphrase given
如果你在加密时勾选了“签名为”,而私钥是空密码,系统会报You have not entered a passphrase! An empty passphrase is not allowed.。
解决方案:在加密界面,取消勾选最上面的“签名为”,保留下面的“为我加密”,点击“签名/加密”,生成secret.gpg。

🌐 三、 第二步:搭建本地服务器模拟流量

  1. 桌面新建一个文件夹gpg_server,将刚才生成的secret.gpg复制进去。

  2. 打开 PowerShell,进入该目录并启动服务器:

    cd Desktop\gpg_server python -m http.server 8080

    保持该窗口开启,不要关闭。

⚠️避坑指南 2:404 Not Found 与 curl 失败

  • 如果浏览器访问http://127.0.0.1:8080/secret.gpg提示 404,说明你的服务器启动目录不对,或者文件名不一致(比如实际叫secret.txt.gpg)。

  • 在 PowerShell 中,curl是Invoke-WebRequest的别名,不支持-O参数,必须写成curl.exe -O ...。

🦈 四、 第三步:Wireshark 抓包与数据提取

  1. 关键操作:打开 Wireshark,选择网卡Adapter for loopback traffic capture(回环适配器),点击开始抓包。(否则抓不到本地 127.0.0.1 的流量)。

  2. 回到 PowerShell 执行下载命令:

curl.exe -O http://127.0.0.1:8080/secret.gpg

3.下载完成后,停止 Wireshark 抓包。

提取加密数据(极其重要):

  1. 在 Wireshark 过滤栏输入http,找到GET /secret.gpg对应的HTTP/1.0 200 OK响应包。

  2. 不要直接点击“追踪 TCP 流”然后另存为 ASCII!这样会混入 HTTP 头部。

  3. 正确姿势:在下方“数据包详细信息”面板,找到底层最下面的一行Data (xxx bytes),右键点击它,选择“导出分组字节流” (Export Packet Bytes...)。

  4. 保存为from_wireshark.gpg。

🔓 五、 第四步:命令行解密(绕过 GUI 报错)

拿到导出的from_wireshark.gpg后,双击打开 Kleopatra 解密通常会报错:“文件包含证书,无法被解密或验证”。

⚠️避坑指南 3:Kleopatra 报“包含证书”
这是 Kleopatra 图形界面的经典误判,它经常把纯正的 PGP 加密数据当成 X.509 证书。
终极解决方案:彻底抛弃图形界面,使用 GPG 命令行!

打开 PowerShell,执行以下命令(注意替换为你自己的实际路径):

gpg --output C:\Users\YourUsername\Desktop\final_decrypted.txt --decrypt C:\Users\YourUsername\Desktop\from_wireshark.gpg

打开生成的final_decrypted.txt,你会惊喜地发现明文“这是我要加密的绝密信息”完美还原!

🎯 六、 总结与排错核心

整个过程的核心逻辑是:本地加密 -> 模拟传输 -> 网卡抓包 -> 剥离协议头提取纯密文 -> 命令行解密。

新手常见的坑排查清单:

  1. 加密报错:检查是否取消了“签名为”。

  2. 下载 404:检查服务器目录和文件名,务必先用浏览器验证。

  3. 抓不到包:检查是否选择了Adapter for loopback traffic capture。

  4. 解密报错包含证书:请务必使用gpg --decrypt命令行,不要依赖 Kleopatra GUI。

  5. 解密失败提示格式错误:说明你导出时混入了 HTTP 头,请用“导出分组字节流”。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询