7

Я только что получил электронное письмо, чей X-Mailer - «X-Mailer: Microsoft CDO для Windows 2000». Он имеет в качестве вложения файл .sgn, содержимое которого представляет собой XML с одним полем, по-видимому, в формате PDF с кодировкой base64:

<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=

(... и т. д. и т. п. ...)

P9fdsc3jL4yg7at7G488BKcqQbpnZDkhXFsfhc/VIuPexfElgnf2oagaf/QjiZHy+ganiZcAH=
dFFFrN6xYK5n0JL5g330NKzD5CHBS8X1civ8VUAKdWjgI8pm1rFsm4v20SwIp/81OH1w=3D=3D=
</CertBase64></Certificate></SignaturePackage></DocumentEnvelope>

Если я копирую только часть DocumentContent и декодирую ее с помощью base64, я вижу заголовок PDF 1.3, но некоторые декодеры задыхаются от этого, и в любом случае я не могу получить работающий PDF от этой вещи. Так:

  • Как я могу вручную извлечь файл PDF оттуда?
  • Существует ли отдельный инструмент для извлечения файлов из таких почтовых сообщений или из файлов .sgn?
  • Есть ли расширение Thunderbird, которое обрабатывает их и представляет PDF как обычное вложение?

Примечания:

  • Файл был автоматически отправлен платформой Net Ha-Mishpat израильских судов. Я могу связаться с судами, но у них нет технически грамотных людей, и я не могу связаться с подрядчиком по программному обеспечению, которого они использовали.
  • Я знаю людей, которым в прошлом удавалось извлекать декодированные файлы из этих .sgn, я просто не знаю, как именно.

4 ответа4

2

Я получил один из этих документов сегодня.

Так как объяснение того, что не так с техподдержкой, казалось, заняло больше времени, чем попытка извлечь его самостоятельно, я создал небольшой скрипт на python для извлечения и декодирования документа pdf, который был встроен в файл sig .

То есть, предполагая, что существует один прикрепленный файл 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))

Я создал суть для этого сценария.

Вам нужно установить python 3.x , поместить файл sig и скрипт python в одну папку (или указать путь к файлу сценария) и выполнить его следующим образом:

python unpack.py <sig_filename>

Это создаст файл с именем out.pdf в той же папке.

2

Вот элементарный скрипт, который вы можете использовать в Unix-подобных системах (и, возможно, в Windows тоже с небольшими изменениями), чтобы извлечь PDF-файл из конверта документа; Я называю это sgn2pdf (поскольку файл конверта doc имеет расширение sgn). Его интерфейс командной строки

sgn2pdf [INPUT_FILENAME] [OUTPUT_FILENAME]

т.е. если вы добавите первый аргумент, он будет считываться из этого файла, а не из стандартного ввода; и если вы добавите второй аргумент, он перенаправит вывод во второй указанный файл.

Источник:

#!/bin/bash
#
# Extract a PDF file from an Israeli courts' .sgn PDF document envelope

exec 3<&0 # tie (new) file descriptor 3 to what is currently the standard input
exec 4>&1 # tie (new) file descriptor 4 to what is currently the standard output

if [[ $# > 0 ]]; then
    exec 3<$1 
    shift
fi
if [[ $# > 0 ]]; then
    exec 4>$1
    shift
fi
exec <&3 >&4
sed -r 's/^.*<DocumentContent[^>]*>//; s/<\/Document.*$//;' | base64 -d -i >&4

Декодер base64 является частью пакета GNU coreutils и должен быть доступен в любом дистрибутиве Linux.

0

Использование CDO 200 и конверта документа указывает на то, что электронное письмо, скорее всего, было отправлено автоматически или программно, то есть через сценарий, вне доступа или каким-либо другим способом через SMTP и программу, совместимую с CDO (не обычный почтовый клиент).

Файл SGN вряд ли будет настоящим файлом SGN, который является файлом "Sierra Print Artist"; кажется более вероятным, что кто-то использовал расширение вручную для файла подписи.

Я не верю, что этот файл должен был быть тем вложением, которое вы должны были открыть. Кажется, гораздо более вероятно, что файл, который вы видите, включен в электронное письмо как способ для отправителя показать его как "подписанный", когда он генерируется автоматически. Поскольку PDF-файл встроен в XML-файл, скорее всего, нет расширения, которое бы автоматически расшифровывало раздел вложения, который вы считаете PDF-файлом. Вы можете попробовать скопировать весь раздел, а затем расшифровать его и сохранить декодированный текст в текстовом редакторе, совместимом с юникодом, а затем посмотреть, открывается ли он как читаемый PDF-файл.

Но я думаю, что вы напрасно тратите свое время, и это вложение соответствует тому, что вы увидели бы, если бы кто-то включил визитную карточку с изображением, когда отправлял вам электронное письмо из какой-либо программы через CDO. То есть он не предназначен для декодирования, потому что если бы вы могли это сделать, то, возможно, вы могли бы подделать подпись отправителя.

Вы пытались связаться с отправителем, чтобы узнать, имеет ли вложение какое-либо значение? Мне кажется довольно очевидным, что это просто файл с подписью. Заголовок говорит вам, что алгоритм, используемый для генерации подписи, находится по адресу http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/xmldsig-core-schema.xsd#rsa-sha1 - что один должен сказать вам, что это не файл, который вы должны открыть как таковой.

0

Возможно, слишком поздно, но если вы получили этот файл из израильской судебной системы (נט המשפט), то здесь они дают ссылку (эту ссылку) на программу Windows, которая открывает его.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .