Como faço para abrir arquivos enviados para mim em um 'envelope de documentos'?

7

Acabei de receber um email cujo X-Mailer é "X-Mailer: Microsoft CDO para Windows 2000". Ele tem como anexo um arquivo .sgn, cujo conteúdo é um XML com um campo aparentemente sendo um PDF codificado em 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=

(... etc. etc. ...)

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

Se eu copiar apenas a parte do DocumentContent e decodificá-la na base 64, vejo um cabeçalho do PDF 1.3, mas alguns decodificadores se sufocam nele e, de qualquer maneira, não consigo obter um PDF funcional dessa coisa. Então:

  • Como posso extrair manualmente o arquivo PDF de lá?
  • Existe uma ferramenta autônoma para extrair arquivos de tais mensagens de e-mail ou de arquivos .sgn?
  • Existe uma extensão do Thunderbird que lida com isso e apresenta o PDF como um anexo comum?

Notas :

  • O arquivo foi enviado automaticamente pela plataforma 'Net Ha-Mishpat' dos tribunais de Israel. Posso entrar em contato com os tribunais, mas eles não têm pessoas com conhecimentos técnicos e não posso entrar em contato com o fornecedor de software que eles usaram.
  • Eu conheço pessoas que, no passado, conseguiram extrair arquivos decodificados desses .sgn's, só não sei exatamente como.
por einpoklum 27.02.2014 / 22:13

4 respostas

2

Eu mesmo tenho um desses documentos hoje.

Como explicar o que está errado para o pessoal de suporte técnico provavelmente demoraria mais do que tentar extraí-lo sozinho, criei um pequeno script python para extrair e decodificar o documento pdf que estava incorporado em o arquivo sig .

Ou seja, assumindo que existe um único arquivo pdf e o formato do arquivo sig é o mesmo que o meu.

Espero que alguém ache útil.

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

Eu criei um gist para este script.

Você precisa ter o python 3.x instalado, colocar o arquivo sig e o python script na mesma pasta (ou forneça o caminho do arquivo para o script) e execute da seguinte forma:

python unpack.py <sig_filename>

Isso criará um arquivo chamado out.pdf na mesma pasta.

    
por 12.05.2015 / 12:20
2

Aqui está um script rudimentar que você pode usar em sistemas semelhantes ao Unix (e provavelmente no Windows também com uma pequena modificação) para extrair o arquivo PDF do envelope do documento; Chamo de sgn2pdf (já que o arquivo de envelope do documento tem uma extensão sgn). Sua interface de linha de comando é

sgn2pdf [INPUT_FILENAME] [OUTPUT_FILENAME]

i.e. se você adicionar um primeiro argumento, ele será lido a partir daquele arquivo, e não da entrada padrão; e se você adicionar um segundo argumento, ele redirecionará a saída para o segundo arquivo especificado.

Fonte:

#!/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

O decodificador base64 faz parte do pacote GNU coreutils e deve estar disponível em qualquer distribuição Linux.

    
por 30.10.2016 / 09:10
0

O uso do CDO 200 e o envelope do documento indicam que o email provavelmente foi enviado automaticamente ou programaticamente, por meio de um script, fora do Access ou de alguma outra forma via SMTP e um programa compatível com CDO (não um correio normal cliente).

É improvável que o arquivo SGN seja um verdadeiro arquivo SGN, que é um arquivo "Sierra Print Artist"; parece mais provável que alguém tenha usado a extensão manualmente para um arquivo de assinatura.

Eu não acredito que esse arquivo tenha sido o tipo de anexo que você deve abrir. Parece muito mais provável que o arquivo que você está vendo esteja incluído no e-mail como uma maneira de o remetente mostrá-lo como "assinado" quando for gerado automaticamente. Como o PDF está incorporado ao arquivo XML, provavelmente não há extensão que decodifique automaticamente a seção do anexo que você acredita ser um PDF. Você pode tentar copiar a seção inteira e, em seguida, decodificá-la e salvar o texto decodificado com um editor de texto compatível com unicode e, em seguida, verificar se ele é aberto como um PDF legível.

Mas acho que você está desperdiçando seu tempo e esse anexo está na linha do que você veria se alguém incluísse um vCard que contivesse uma imagem quando o enviasse por e-mail de algum programa via CDO. Ou seja, não se pretende descodificá-lo, porque se você pudesse fazer isso, talvez pudesse falsificar a assinatura do remetente.

Você já tentou entrar em contato com o remetente para descobrir se o anexo tem algum significado? Parece bastante óbvio para mim que se destina apenas a ser um arquivo de assinatura de qualificação. O cabeçalho informa que o algoritmo usado para gerar a assinatura está em link - só isso deve dizer-lhe que não é um arquivo que você deve abrir como tal.

    
por 28.02.2014 / 07:08
0

Provavelmente, é tarde demais, mas se você recebeu esse arquivo do sistema judiciário israelense (נט המשפט), então aqui eles dão um link ( este link ) para um programa do Windows que o abre.

    
por 29.11.2015 / 23:49