Wie öffne ich Dateien, die mir in einem "Dokumentenumschlag" gesendet wurden?

7

Ich habe gerade eine E-Mail erhalten, deren X-Mailer "X-Mailer: Microsoft CDO für Windows 2000" lautet. Als Anhang enthält es eine .sgn-Datei, deren Inhalt eine XML-Datei ist, wobei ein Feld anscheinend eine Base64-codierte PDF-Datei ist:

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

(... usw. usw. ...)

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

Wenn ich nur den DocumentContent-Teil kopiere und base64-decodiere, wird ein PDF 1.3-Header angezeigt, aber einige Decoder ersticken daran, und trotzdem kann ich von diesem Ding kein funktionierendes PDF erhalten. Damit:

  • Wie kann ich die PDF-Datei von dort manuell extrahieren?
  • Gibt es ein eigenständiges Tool zum Extrahieren von Dateien aus solchen E-Mail-Nachrichten oder aus .sgn-Dateien?
  • Gibt es eine Thunderbird-Erweiterung, die diese behandelt und das PDF als regulären Anhang präsentiert?

Anmerkungen :

  • Die Datei wurde automatisch von der "Net Ha-Mishpat" -Plattform der israelischen Gerichte gesendet. Ich kann mich an die Gerichte wenden, aber sie haben keine technisch versierten Personen, und ich kann mich nicht an den von ihnen verwendeten Software-Auftragnehmer wenden.
  • Ich kenne Leute, die es in der Vergangenheit geschafft haben, dekodierte Dateien aus diesen .sgns zu extrahieren. Ich weiß nur nicht genau, wie.
einpoklum
quelle

Antworten:

2

Ich habe heute selbst eines dieser Dokumente bekommen.

Da es wahrscheinlich länger dauerte, dem technischen Support zu erklären, was falsch ist, als zu versuchen, es selbst zu extrahieren, habe ich ein kleines Python-Skript erstellt, um das in die SIG- Datei eingebettete PDF- Dokument zu extrahieren und zu dekodieren .

Das heißt, vorausgesetzt, es gibt eine einzelne angehängte PDF- Datei und das SIG- Dateiformat ist das gleiche wie meines.

Ich hoffe, dass jemand es nützlich finden würde.

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

Ich habe einen Kern für dieses Skript erstellt.

Sie müssen Python 3.x installiert haben, die Sig- Datei und das Python-Skript in demselben Ordner ablegen (oder den Dateipfad zum Skript angeben) und wie folgt ausführen:

python unpack.py <sig_filename>

Dadurch wird eine Datei mit dem Namen out.pdf im selben Ordner erstellt.

MasterAM
quelle
Sollten Sie nicht standardmäßig von stdin nach stdout dekodieren? Oder zumindest nur aus einer Datei dekodieren, wenn eine Datei angegeben ist?
Einpoklum
Die Verwendung eines Dateinamens als Argument erscheint vernünftig genug. Stdin / stdout muss nicht verwendet werden. Es ist meiner Meinung nach auch robuster, da Sie mehr Argumente bereitstellen und das Extrahieren mehrerer Dateien vereinfachen können. Ich hoffe, dass Sie es nicht so oft benötigen.
MasterAM
Nicht, dass es so wichtig wäre, aber - auf diese Weise kann diese Dekodierung nicht weitergeleitet werden (außer durch Erstellen von Named Pipes). Nicht sehr freundlich ...
einpoklum
Das ist richtig, aber andererseits ist es ein 20-LoC-Dienstprogramm, das leicht angepasst werden kann :) Sie sollten wahrscheinlich überprüfen, ob es funktioniert, und mich wissen lassen, wenn es ein Problem gibt.
MasterAM
Ich werde, wenn ich das nächste Mal einen von ihnen bekomme. Ich glaube nicht, dass ich einen gerettet habe.
Einpoklum
1

Hier ist ein rudimentäres Skript, das Sie auf Unix-ähnlichen Systemen (und wahrscheinlich auch unter Windows mit einer kleinen Änderung) verwenden können, um die PDF-Datei aus dem Dokumentumschlag zu extrahieren. Ich nenne es sgn2pdf(da die Dokumentumschlagdatei eine sgn-Erweiterung hat). Die Befehlszeilenschnittstelle ist

sgn2pdf [INPUT_FILENAME] [OUTPUT_FILENAME]

Wenn Sie also ein erstes Argument hinzufügen, wird es aus dieser Datei und nicht aus der Standardeingabe gelesen. Wenn Sie ein zweites Argument hinzufügen, wird die Ausgabe in die zweite angegebene Datei umgeleitet.

Quelle:

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

Der base64Decoder ist Teil des GNU- coreutilsPakets und sollte auf jeder Linux-Distribution verfügbar sein.

einpoklum
quelle
0

Die Verwendung von CDO 200 und des Dokumentenumschlags zeigt an, dass die E-Mail wahrscheinlich automatisch oder programmgesteuert gesendet wurde, dh über ein Skript, außerhalb von Access oder auf andere Weise über SMTP und ein CDO-kompatibles Programm (kein normaler E-Mail-Client).

Es ist unwahrscheinlich, dass es sich bei der SGN-Datei um eine echte SGN-Datei handelt, bei der es sich um eine "Sierra Print Artist" -Datei handelt. Es ist wahrscheinlicher, dass jemand die Erweiterung manuell für eine Signaturdatei verwendet hat.

Ich glaube nicht, dass diese Datei die Art von Anhang sein sollte, die Sie voraussichtlich öffnen würden. Es ist weitaus wahrscheinlicher, dass die angezeigte Datei in der E-Mail enthalten ist, damit der Absender sie bei der automatischen Generierung als "signiert" anzeigen kann. Da die PDF-Datei in die XML-Datei eingebettet ist, gibt es wahrscheinlich keine Erweiterung, die den Abschnitt des Anhangs, von dem Sie glauben, dass er eine PDF-Datei ist, automatisch entschlüsselt. Sie können versuchen, den gesamten Abschnitt zu kopieren und dann zu dekodieren und den dekodierten Text mit einem Unicode-kompatiblen Texteditor zu speichern. Überprüfen Sie dann, ob dieser als lesbares PDF geöffnet wird.

Aber ich denke, Sie verschwenden Ihre Zeit und dieser Anhang entspricht dem, was Sie sehen würden, wenn jemand eine vCard mit einem Bild enthalten würde, als er Ihnen eine E-Mail aus einem Programm über CDO gesendet hat. Das heißt, es soll nicht dekodiert werden, denn wenn Sie dies tun könnten, könnten Sie möglicherweise die Unterschrift des Absenders fälschen.

Haben Sie versucht, den Absender zu kontaktieren, um herauszufinden, ob der Anhang eine Bedeutung hat? Es scheint mir ziemlich offensichtlich, dass es sich nur um eine qualifizierende Signaturdatei handelt. Der Header sagt Ihnen , dass der Algorithmus verwendet , um die Signatur zu erzeugen an ist http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/xmldsig-core-schema.xsd#rsa-sha1 - das allein sollte Ihnen sagen, dass es keine Datei ist, die Sie als solche öffnen sollen.

Debra
quelle
Wie gesagt, ich habe den Inhaltsbereich kopiert und mit teilweisem Erfolg dekodiert. Es ist ein 3-seitiges PDF - aber ich kann den Inhalt nicht richtig verstehen. Es muss etwas über den Zeichensatz der sgn-Dateien oder einen Überschriften- / Nachlauf-Junk oder etwas anderes sein.
Einpoklum
Wenn es sich um eine Datei handelt, die Sie öffnen können sollen, lassen Sie sie vom Absender erneut senden. Aber alles, was Sie beschreiben, scheint auf eine Datei hinzuweisen, die Teil einer Signatur ist und nicht auf diese Weise geöffnet werden soll. Die Art und Weise, wie es gesendet wurde, bestimmt, ob es als Standardanhang geöffnet werden kann. Der "Dokumentenumschlag" bezieht sich nur darauf, wie eine Nachricht zum Senden mit CDO über SMTP verpackt wird.
Debra
Kennen Sie Software-Tools, die diese Art von "Umschlägen" handhaben?
Einpoklum
0

Wahrscheinlich zu spät, aber wenn Sie diese Datei vom israelischen Gerichtssystem (נט המשפט) erhalten haben, geben sie hier einen Link ( diesen Link ) zu einem Windows-Programm, das sie öffnet.

yohbs
quelle
1
Hmph. Zuerst senden sie E-Mails, für die MS Outlook erforderlich ist, und bieten dann an, Ihnen zu "helfen" - vorausgesetzt, Sie verwenden Windows. Wunderbar. Wie auch immer - nicht deine Schuld, danke.
Einpoklum
@einpoklum Ich stimme zu (ich verwende Ubuntu und musste den Laptop meiner Frau benutzen). Aber hey - zumindest benutzen sie keine Tauben ...
yohbs