Wie kann ich den Inhalt von PDF-E-Mail-Anhängen durchsuchen, die in Time Machine gesichert werden?

0

Ich habe also eine ganz bestimmte Situation, in der ich eine alte E-Mail ausgraben muss, die ich in Time Machine gesichert habe, aber ich kann mich nicht erinnern, wann ich sie erhalten habe. Kann zwischen 6 Monaten und 1 Jahr liegen.

Im Anschluss der Rat hier Im Terminal habe ich folgendes ausgeführt:

find "/Volumes/Time Machine" -name "*.emlx" -exec grep -l "search term" {} \;

Was mich zu mehreren tausend Ergebnissen gefunden hat, die mit "Suchbegriff" (der Betreffzeile) übereinstimmen.

Das Problem ist, dass der Inhalt des Hauptteils dieser Nachrichten alle identisch ist. Es ist der Inhalt des Anhangs, ein PDF-Dokument, nach dem ich nach einem bestimmten Begriff suchen muss.

Haben Sie eine Idee, wie ich ähnlich wie oben suchen kann, aber den Inhalt des PDF-Anhangs durchsuchen kann?

Jack
quelle
Sind Sie sicher, dass die PDF in Frage überhaupt durchsuchbar ist?
nohillside
@patrix Wenn ich einige dieser PDF-Dateien in einem Ordner speichern und Spotlight verwenden würde, könnte der Inhalt der PDF-Dateien problemlos durchsucht werden. Ich hoffe, dass das Gleiche möglich ist, wenn das PDF im Anhang gespeichert wird.
Jack

Antworten:

1

Um die in einer E-Mail eingebetteten PDF-Inhalte mit grep zu durchsuchen, stehen Sie vor mindestens einer, wenn nicht sogar zwei Herausforderungen.

Die erste ist, dass in eine E-Mail eingebettete Dateien nicht in ihrer Rohform erhalten bleiben und stattdessen für die Übertragung in der E-Mail-Nachricht in Klartext codiert werden. Das häufig verwendete MIME-Format ist Base64, dies ist jedoch nicht immer der Fall. Weitere Details zu base64, einschließlich der Codierungs- / Decodierungsmethoden, finden Sie hier: http://en.wikipedia.org/wiki/Base64

Angenommen, der Anhang wurde in base64 codiert, ist es immer noch nicht so einfach, die Suchzeichenfolge in eine Base64-Darstellung zu übernehmen, da die resultierende Codierung davon abhängt, wo in der Eingabezeichenfolge Ihre Zielzeichenfolge angezeigt wird. base64 nimmt alle 6 Bits des Eingabestroms und verwandelt ihn in ein Nur-Text-Zeichen. Wenn das PDF-Dokument eine einfache 8-Bit-Codierung für die Zeichenfolge verwendet, werden aus 3 Zeichen in der PDF-Datei 4 codierte Zeichen. Eine kurze Illustration, wie die Position des Charakters die Dinge verändern kann:

% echo "123456789" | base64
MTIzNDU2Nzg5Cg==
% echo "0123456789" | base64
MDEyMzQ1Njc4OQo=

Im ersten Beispiel 123, 456, und 789 einbiegen in MTIz. NDU2 und Nzg5 beziehungsweise. In der zweiten sind die codierten Tupel 012 = & gt; MDEy. 345 = & gt; MzQ1, ... usw.

Ihr Suchbegriff könnte am Anfang, in der Mitte oder am Ende eines dieser Tupel beginnen. Wenn Sie nach einer Zeichenfolge suchen, die lang genug ist, können Sie 3 suchbare Zeichenfolgen aus der Mitte herausarbeiten. Jede Zeichenfolge muss ein Vielfaches von 3 Zeichen lang sein. Zum Beispiel, wenn ich nach der Zeichenfolge suchen wollte 123456789Ich könnte base64 drei mögliche Suchkandidaten kodieren: 123456789, 234567 und 345678. Eine der Basiscodierungen sollte in der codierten PDF-Datei angezeigt werden, wenn es sich um eine reine Textzeichenfolge handelt 123456789 ist anwesend.

Nun kommen wir zum zweiten großen Problem. Dadurch haben wir angenommen, dass der nicht kodierte Inhalt der PDF-Datei in UTF-8 (Nur-Text-Kodierung) vorliegt. Wenn Sie sich den Inhalt einer tatsächlichen PDF-Datei ansehen, werden Sie feststellen, dass sie alle möglichen internen Kodierungen enthält, darunter Schriftzeichen, Text, der in UTF-16 oder UTF-32 kodiert ist usw. Es ist sehr wahrscheinlich, dass Ihre einfache Suchphrase nicht genau so in den PDF-Daten erscheint, wie Sie es erwarten. In der PDF-Datei kann zusätzlicher Inhalt zwischen Zeichen und Wörtern vorhanden sein. Außerdem gibt es Zeilenumbrüche. Wenn Sie also nach einem Satz suchen, der einen Zeilenumbruch durchbricht, ist die Erstellung Ihrer Zielsuchzeichenfolge komplizierter.

Es gibt noch ein paar andere Dinge, die Sie ausprobieren können, damit nicht alles verloren geht.

Wenn Sie den Namen der PDF kennen, können Sie stattdessen danach suchen. Der Dateiname sollte in UTF-8 im MIME-Text der E-Mail-Nachricht erscheinen und kann daher durchsucht werden.

Sie könnten auch Glück haben und anstatt die E-Mails zu durchsuchen, nach PDF-Dateien suchen. OSX Mail extrahiert Anhänge und speichert sie in einem E-Mail-Download-Verzeichnis. Ich verwende Mavericks and Mail v7.3 und meine Anhänge werden in die Unterverzeichnisse unter ~ / Library / Containers / com.apple.mail geschrieben

Übrigens sucht Ihr grep-Befehl nach einer exakten Übereinstimmung. Wenn Sie sich nicht sicher sind, ob Sie Groß- / Kleinschreibung verwenden, sollten Sie die Option '-i' für eine Suche ohne Berücksichtigung der Groß- und Kleinschreibung hinzufügen.

KenB
quelle
du bist legendär Danke mein Herr. Ich habe eines der anderen ähnlichen Anhänge überprüft, nämlich UTF-8. Nachdem ich einige Base64-Codierungen mit einem einfachen Wort aus vier Buchstaben ausgeführt hatte und nach den Varianten gesucht hatte, fand ich genau den Anhang, den ich suchte. Du bist ein Genie!
Jack
1
@jack - das ist großartig! Ich bin froh, dass es für dich funktioniert hat!
KenB