当我解密从 Gmail 收到的电子邮件时,我会在解密的电子邮件正文中收到作为 Base64 编码字符串的附件。
然后,我必须手动提取 base64 字符串并使用 base64 -d 或类似方法对其进行解码,才能实际获取附件文件。
我很惊讶我找不到 gpg 的参数来为我解密和 Base64 将任何找到的附件解码为单独的文件。有什么方便的方法来做到这一点?
答案1
就我而言,Protonmail 还对附件进行了加密,如下所示:
-----BEGIN PGP MESSAGE-----
Content-Type: text/html
Version: ProtonMail
wcBMA9huJ3ednol8AQf9GkIDfBmoLhXbkfQ/xiH/IA6c5FSXS5t0ybrKL/c0
... base 64 ...
PO/ZPcImGYDYUgd1VkItf9xdnFo02c9OF+8=
=r9ZO
-----END PGP MESSAGE-----
--b1_UtzHbBo7cr7IHemm3M2xGQe8Ak73bka7W7I3ZHMX6c
Content-Type: application/octet-stream; name="=?utf-8?Q?name.jpg.pgp?="
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="=?utf-8?Q?name.jpg.pgp?="
wcBMA9huJ3ednol8AQf+OX4BrthHHn10wHpniO8+qt4pDFpOZiqNOawF1sDeWeu5mmimF8hsma5V
... long base64 ...
bm//YnWeec1rBfdTbu2eCf4Z7snf2Q==
第一个 Base64 编码消息是电子邮件内容,第二个消息是我要查找的附件。为了解密它,我用 和 填充了附件 base64,-----BEGIN PGP MESSAGE-----
如下-----END PGP MESSAGE-----
所示:
-----BEGIN PGP MESSAGE-----
wcBMA9huJ3ednol8AQf+OX4BrthHHn10wHpniO8+qt4pDFpOZiqNOawF1sDeWeu5mmimF8hsma5V
... long base64 ...
bm//YnWeec1rBfdTbu2eCf4Z7snf2Q==
-----END PGP MESSAGE-----
然后将其保存到一个新文件并使用 解密gpg -o name.jpg -d encrypted_attachment.txt
。
这很不方便,但该过程可以通过脚本自动化(例如,查找文件中的所有附件,将它们填充为 PGP MESSAGE 块,将它们写入单独的文件,然后解密它们)。
答案2
没有一种方便的方法可以直接使用 GPG 执行此操作,但是您可以解密,然后将解密的 HTML 邮件导入到 Thunderbird,它将正确解析出 Base64 编码的附件,使您可以正常处理它们。
对于寻找手动说明的人来说,它们在下面。
MIME 编码的电子邮件将在电子邮件文件中嵌入附件。这些 MIME 编码的附件是 base64 编码的。这是一个例子:
-----------------------280fe25f5480076f6dcc4a82dc971dc5
Content-Type: application/pgp-keys; filename="textfile.txt - [email protected] - textfile.txt"; name="textfile - [email protected] - textfile.txt"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="textfile - [email protected] - textfile.txt"; name="textfile - [email protected] - textfile.txt"
dGhpcyBpcyB0aGUgYmFzZTY0IGVuY29kZWQgdGV4dAo=
-----------------------280fe25f5480076f6dcc4a82dc971dc5--
这标志着附件详细信息的开始:
-----------------------280fe25f5480076f6dcc4a82dc971dc5
这标志着结束(注意--
最后的两个额外内容):
-----------------------280fe25f5480076f6dcc4a82dc971dc5--
前几行是元数据。有用的部分是这样的:
dGhpcyBpcyB0aGUgYmFzZTY0IGVuY29kZWQgdGV4dAo=
您可以复制该内容并将其保存,然后textfile.txt
运行以下命令以查看其实际内容:
base64 -d textfile.txt
如果它是像图像或类似文件这样的二进制文件,请将输出重定向到您的最终文件名,例如
base64 -d tempfilename.base64 > picture.jpg