如何打开“文档信封”中发送给我的文件?

ein*_*lum 7 email thunderbird encoding pdf base64

我刚刚收到一封电子邮件,其 X-Mailer 是“X-Mailer:Microsoft CDO for Windows 2000”。它有一个 .sgn 文件作为附件,其内容是一个 XML,其中一个字段显然是一个 base64 编码的 PDF:

<DocumentEnvelope><SignaturePackage><Signature =
xmlns=3D"http://www.w3.org/2000/09/xmldsig#"><SignedInfo><Canonicalizatio=
nMethod Algorithm=3D"http://www.w3.org/TR/2001/REC-xml-c14n-20010315" =
/><SignatureMethod =
Algorithm=3D"http://www.w3.org/2000/09/xmldsig#rsa-sha1" /><Reference =
URI=3D"#SignedDoc"><DigestMethod =
Algorithm=3D"http://www.w3.org/2000/09/xmldsig#sha1" =
/><DigestValue>MFV2XJ9rfjhGCyA948wKB741ChQ=3D</DigestValue></Reference></=
SignedInfo><SignatureValue>aKHfEGfu2p9RdShv1Vv/kqC6gjdymojq0rQA+AU/hPocrr=
VqMQk2wbbJD60jc8QPP0kPIo4vWqB1mVx5Y45HK0LFWxMDkJ2/CN8GcODEum2Mamn3W2j9tKV=
8JfJAexlW47LprDq99W9YwfpXusaEplCOErCRj/2dhnGc4SgZXxw=3D</SignatureValue><=
KeyInfo><KeyValue><RSAKeyValue><Modulus>nz78eiuYN1Jmm5ND8xLLbJ9QTrBpjTMfv=
h4mbmHbBSB7HSHU+7Izp5GCiyDAlmXa3JjqKBRjw2+OpwhsJf+KHPltKFKwOltTN9QJWS4HJm=
H1xqF4VAuwvpp1tlJd1KP5WL/j9YCYigzEfZIAAUC2KiFlAxoR1mwz3alMR4v96h8=3D</Mod=
ulus><Exponent>AQAB</Exponent></RSAKeyValue></KeyValue></KeyInfo><Object =
Id=3D"SignedDoc"><DocumentOriginName =
xmlns=3D"">ecd20f25-95b3-4dc3-b8e6-fc62d23db259</DocumentOriginName><Docu=
mentExtension xmlns=3D"">pdf</DocumentExtension><DocumentCreationDate =
xmlns=3D"">2014-02-27T22:10:27.4320656+02:00</DocumentCreationDate><Docum=
entContent =
xmlns=3D"">JVBERi0xLjQNJeLjz9MNCjMgMCBvYmoNPDwvQ291bnQgMS9LaWRzWzQgMCBSXS=
9QYXJlbnQgMiAwIFIgDS9UeXBlL1BhZ2VzPj4NZW5kb2JqDTQgMCBvYmoNPDwvQXJ0Qm94WzA=
Run Code Online (Sandbox Code Playgroud)

(……等等……等等……)

P9fdsc3jL4yg7at7G488BKcqQbpnZDkhXFsfhc/VIuPexfElgnf2oagaf/QjiZHy+ganiZcAH=
dFFFrN6xYK5n0JL5g330NKzD5CHBS8X1civ8VUAKdWjgI8pm1rFsm4v20SwIp/81OH1w=3D=3D=
</CertBase64></Certificate></SignaturePackage></DocumentEnvelope>
Run Code Online (Sandbox Code Playgroud)

如果我只复制 DocumentContent 部分,并对其进行 base64 解码,我会看到一个 PDF 1.3 标头,但一些解码器会卡住它,无论如何,我无法从那个东西中获得有效的 PDF。所以:

  • 如何从那里手动提取 PDF 文件?
  • 是否有用于从此类邮件消息或 .sgn 文件中提取文件的独立工具?
  • 是否有处理这些的 Thunderbird 扩展程序,并将 PDF 显示为常规附件?

注意事项

  • 该文件由以色列法院的“Net Ha-Mishpat”平台自动发送。我可以联系法院,但他们没有懂技术的人,而且我无法联系他们使用的软件承包商。
  • 我知道过去有人设法从这些 .sgn 中提取解码文件,我只是不知道具体是如何提取的。

小智 2

我今天亲自拿到了其中一份文件。

由于向技术支持人员解释问题所在似乎可能比尝试自己提取问题花费更多的时间,因此我创建了一个小的 python 脚本来提取和解码嵌入在sig文件中的pdf文档。

也就是说,假设有一个附加的pdf文件,并且sig文件格式与我的相同。

我希望有人会觉得它有用。

import base64
import xml.etree.ElementTree as ET
import sys


def decode(infile, outfile):
    tree = ET.parse(infile)
    xmlns = '{http://www.w3.org/2000/09/xmldsig#}'
    b64 = tree.find("./SignaturePackage/{0}Signature/{0}Object/DocumentContent".format(xmlns)).text
    txt = base64.b64decode(b64)

    with open(outfile, 'bw+') as f:
        f.write(txt)

if __name__ == "__main__":
    if len(sys.argv) < 2:
        print('usage: python unpack.py <input_filename>')
        exit(1)
    infile = sys.argv[1]
    outfile = 'out.pdf'
    decode(infile, outfile)
    print('Done. Result saved to {0}'.format(outfile))
Run Code Online (Sandbox Code Playgroud)

我为这个脚本创建了一个要点

您需要安装python 3.x,将sig文件和 python 脚本放在同一文件夹中(或提供脚本的文件路径)并像这样执行:

python unpack.py <sig_filename>

这将在同一文件夹中创建一个名为out.pdf的文件。