AA_PO-26876_BrandonSeidel-123RF.jpg

© Brandon Seidel, 123RF

Ähnliche Dateien mit Ssdeep finden

Ziemlich ähnlich

Prüfsummen dienen im Normalfall dazu, identische Dateien zu identifizieren. Geht es darum, lediglich ähnliche Inhalte zu finden, kommt Ssdeep ins Spiel.

Checksummen erlauben es, bereits die geringsten Veränderungen an den "gehashten" Dateien aufzudecken. Üblicherweise kommt dieses Verfahren sowohl bei Systemüberprüfungen zum Einsatz als auch bei der Installation neuer Pakete. Dabei vergleicht ein entsprechendes Tool die aktuell aus einer Datei errechnete Checksumme mit der gespeicherten.

Nun gibt es aber im Alltag eine Vielzahl von Fällen, wo es gar nicht auf die exakte Gleichheit von Dateien ankommt, sondern lediglich auf deren Ähnlichkeit: Denken Sie etwa an die unterschiedlichen Versionen eines Dokuments, Bilds, Quelltexts oder kompilierten Programms. In diesen Fällen bleiben die meisten Teile der Daten identisch, Unterschiede treten nur an wenigen Stellen auf.

Hierbei zeigt die Ähnlichkeit das Maß der Veränderungen, die an den Dateien vorgenommen wurden. Unterschiedliche Versionen einer Datei unterscheiden sich dabei oft nur in wenigen Bytes. Bei Klartextdokumenten können Sie das noch mit Hausmitteln herausfinden, indem Sie den Text etwa mit Tr in die enthaltenen Wörter zerlegen und diese dann via Sort ordnen, um sich anschließend mit Uniq die Häufigkeit der einzelnen Wörter anzeigen zu lassen.

In Listing 1 wandelt der Befehl tr die Eingabedatei in einzelne Wörter um, sort sortiert sie, uniq -c zählt sie und sort -n erzeugt eine aufsteigende Liste. Mittels Wc lassen sich die Wörter, Zeilen und Buchstaben im Dokument zählen – im Normalfall kommt es anstelle des zweiten Sort-Befehls zum Einsatz. Bei formatierten Dokumenten wie PDF-Dateien oder bei Bildern versagt dieses Verfahren freilich.

Listing 1

$ tr < Datei ',.: ' '\n'| sort | uniq -c | sort -n

Der IT-Entwickler Jesse Kornblum [1] nahm sich dieser Problematik an. Basierend auf einem zur Spam-Erkennung entwickelten Algorithmus namens Spamsum von Andrew Tridgell entwickelte er zunächst das Programm Md5deep [2] und später Ssdeep [3]. Md5deep erzeugt analog zum bekannten Md5sum "normale" Prüfsummen, allerdings mit einigen zusätzlichen Merkmalen. Der wichtigste Unterschied besteht in den stückweisen Hash-Werten ("piecewise hashing"): Diese Funktion erlaubt es, identische Dateiteile separat von veränderten zu bewerten, was auch ein wesentliches Feature von Ssdeep darstellt.

Die Software steht in den Repositories der gängigen Distributionen zur Installation bereit. Das primäre Anwenden der Software gestaltet sich im Wesentlichen aber ganz einfach. Im Beispiel aus Listing 2 erzeugt die Software aus der Klartextdatei pakete9.4.2015 vier durch Doppelpunkte getrennte Angaben: die Blockgröße, einen ersten und zweiten Hash sowie – durch ein Komma abgetrennt – den absoluten Pfad zur Datei. Bei den zwei Hash-Werten handelt es sich um ein Erbe aus der Spam-Erkennung [4].

Listing 2

# ssdeep pakete9.4.2015
ssdeep,1.1--blocksize:hash:hash,filename
96:edryStcu92HHU/1sVKr6HTbToA63YCvsFFnm9Ux/cKCLyOLke2Dv:GryrKsVKr6HTQA6ImsXmeNcPngeqv,"/root/pakete9.4.2015"

Ssdeep und das Prinzip der kontextgetriggerten stückweisen Prüfsummen wurden ursprünglich für forensische Zwecke zum Bearbeiten großer Datenmengen konzipiert [5]. Um die Rechenzeit möglichst effektiv zu nutzen, erstellt das Programm möglichst selten Checksummen, im Idealfall nur einmal. Anschließend speichert es die Ergebnisse zur weiteren Nutzung in einer Datenbank. So können Sie beliebige andere Dateien gegen diese bekannten Prüfsummen testen. Grundsätzlich teilt Ssdeep ein Problem aller Checksummen-Tools, den mit wachsender Dateigröße proportional ansteigenden Rechenzeitaufwand.

Durch die intrinsische Fehlerfreundlichkeit der von Ssdeep genutzten Methode – denn genau dafür sorgen die "fuzzy hashes" – erhalten Sie Aussagen in der Form Datei**A entspricht zu 78**Prozent der Datei**B und zu 98**Prozent der Datei**C. Die Schalter -m und -k repräsentieren diese Funktion, die Sie aber normalerweise nicht benötigen: Bei kleineren Datenbeständen genügt in aller Regel eine On-the-fly-Berechnung. Die Tabelle "Wichtige Optionen von Ssdeep" fasst die wichtigsten Schalter der Software zusammen.

Wichtige Optionen von Ssdeep

Schalter Wirkung
-m Hashfile prüft eine oder mehrere Dateien gegen ein hinterlegtes Hashfile
-d berechnet die Hashes und vergleicht sie mit bekannten (aus den Hashfiles oder von anderen bearbeiteten Dateien)
-p formatiert die Ausgaben strukturierter und führt alle Vergleiche auf
-r bearbeitet die in dem angegebenen Verzeichnis enthaltenen Dateien rekursiv
-l verwendet relative anstelle von absoluten Pfaden bei den Dateien
-g gruppiert die Ausgabe von identischen Dateien
-a berücksichtigt bei den Ausgaben alle Vergleiche, auch solche ohne Übereinstimmungen
-x vergleicht Hashfiles (funktioniert nicht mit -m, -d oder -p)
-t Schwelle definiert die minimale Ähnlichkeit, ab der Ssdeep Ergebnisse ausgibt
-s unterdrückt die Ausgabe von Warnungen und Fehlermeldungen
-v gibt erweiterte Warnungen und Fehlermeldungen aus

Einfache Anwendungen

Beim Überprüfen weniger Dateien lässt sich Ssdeep auch ohne den Einsatz von Hashfiles nutzen. Um etwa die Ähnlichkeiten beziehungsweise Unterschiede zwischen mehreren Varianten von .timeline-Dateien festzustellen, genügt es, diese wie in Listing 3 direkt miteinander zu vergleichen. Das Beispiel verdeutlicht das Vorgehen der Software: Zunächst vergleicht sie 1.timeline mit den anderen Dateien, dann 2.timeline, und so weiter. Die jeweilige Ähnlichkeit in Prozent zeigt das Programm jeweils am Ende der Zeile zwischen den runden Klammern an.

Listing 3

$ ssdeep -dl *.timeline
2015.timeline matches 1.timeline (90)
2.timeline matches 1.timeline (85)
timeline matches 2015.timeline (79)
timeline matches 1.timeline (82)
[...]

Ssdeep sortiert die Ergebnisse nicht nach dem Grad der Ähnlichkeit – das müssen Sie gegebenenfalls selbst erledigen. Durch den Schalter -l erfolgt die Ausgaben der Dateinamen mit relativen Pfaden, was die Übersicht verbessert. Übereinstimmungen, die unterhalb der durch -t Schwellwert> eingestellten Grenze liegen, ignoriert das Programm.

Beim Vergleich vieler Dateien erweist es sich häufig als sinnvoller, die Anzeige statt mit -d durch -p ("print grouped") in Gruppen zusammengefasst auszugeben. In diesem Fall zeigt die Software stets alle Vergleiche an, trennt diese aber durch Leerzeilen. Noch strukturierter erfolgt die Ausgabe mit der Option -g ("grouped"): In diesem Fall erfolgt die Zuordnung in zwei Schritten. Für jede Datei bestimmt Ssdeep zunächst die gleichen Files, anschließend zu diesen wieder die entsprechend ähnlichen. Die Ausgabe erfolgt in Clustern, wobei Clustern size angibt, wie viele Elemente das Cluster umfasst (Listing 4).

Listing 4

[...]
** Cluster size 2
a/248_1000.png
a/f19036816.png
** Cluster size 3
a/f19075000.png
a/1706.png
a/f148203488.png
[...]

Fehlermeldungen und Warnungen schreibt Ssdeep immer in den Kanal STDERR. Das macht es einfach, die Warnungen bezüglich zu kurzer oder fehlender Dateien aus der Ausgabe umzuleiten, ohne sie zu verlieren.

Grenzen

Wer nun hofft, mit dieser Methode auf die Schnelle seine bei der Datenrettung zurückgewonnen Bilder oder MP3-Dateien zu sortieren, stößt allerdings bald an die Grenzen von Ssdeep: Selbst wenn die Bilder gleichen Dateityps aus derselben Kamera stammen, die alle auf die gleiche Weise entstanden, stehen die Chancen nicht allzu gut, zusammengehörige Dateien zu finden. Verwenden Sie in diesen Fällen lieber die auf P-Hashes basierende Methode, wie sie etwa Digikam mitbringt [6].

Noch schlechter sieht es aus, wenn es beispielsweise gilt, RAW-Fotos oder MP3-Dateien zu vergleichen: Hier spielen die intern verwendeten Komprimierungen eine entscheidende Rolle, was schnell dazu führt, dass die Ähnlichkeit gegen null tendiert. Im Beispiel aus Listing 5 tragen beide Dateien einen ähnlichen Namen, stammen aus der gleichen Kamera und weisen dieselbe Blockgröße auf. Dessen ungeachtet fallen die internen Unterschiede so groß aus, dass Ssdeep die Ähnlichkeit der Files mit null bewertet. Hier hilft die zuvor erwähnte P-Hash-Funktion von Digikam weiter, die für die beiden Bilder eine Übereinstimmung von 98 Prozent diagnostiziert.

Listing 5

$ ssdeep -gl Bilder/raw/_114013*
ssdeep,1.1--blocksize:hash:hash,filename
393216:i3MV51QTkmVuTcgNeMaxkKtV2ZQ6IRGiCrQOU2yA4nEzlzxPKRzE:i3w51QTgtoXKNIRGiC6Nn0cE,"Bilder/raw/_1140131.dng"
393216:OPdRgHYuDRqObkyj9cq5BBv40xVcrwSTQJP:2SfLjSV0xWIP,"Bilder/raw/_1140135.dng"

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 3 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Auf der Zeitschiene
    Timeline verwaltet und visualisiert Zeitabläufe auf eine einfache und intuitive Weise. Das auf den ersten Blick unscheinbare Programm gibt sich dabei überraschend vielseitig.
  • Sicher hinterlegt
    Das auf schnelle Transfers hin optimierte Programm Tarsnap hilft beim Backup wichtiger Daten. Die verschlüsselten Dateien legt es in Amazon S3 Cloud ab – zu moderaten Preisen.
  • Zwanglos zwitschern
    In 140 Zeichen um die Welt – im "Twitterversum" tummeln sich Firmen, Politiker, Schauspieler, Musiker und natürlich zahlreiche Privatanwender. Wer nicht über den Webbrowser zwitschern möchte, greift zu einem Twitter-Client. Wir haben vier Vertreter dieser Gattung getestet.
  • Scharfes Werkzeug
    Das Profi-Videoschnittprogramm Lightworks, das schon Filme wie "Mission Impossible" oder "Pulp Fiction" in Form brachte, läuft mittlerweile auch unter Linux. Seine vielen Möglichkeiten lassen sich aber nur auf satt ausgestatteten Rechnern wirklich ausreizen.
  • Im Gleichklang
    Fossil vereint Versionskontrolle, Wiki und Bugtracker zum Rundum-Wohlfühl-Paket für Software-Entwickler.
Kommentare

Infos zur Publikation

LU 12/2017: Perfekte Videos

Digitale Ausgabe: Preis € 5,95
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

HINWEIS ZU PAYPAL: Die Zahlung ist ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!

Stellenmarkt

Aktuelle Fragen

Huawei
Pit Hampelmann, 13.12.2017 11:35, 2 Antworten
Welches Smartphone ist für euch momentan das beste? Sehe ja die Huawei gerade ganz weit vorne. Bi...
Fernstudium Informatik
Joe Cole, 12.12.2017 10:36, 2 Antworten
Hallo! habe früher als ich 13 Jahre angefangen mit HTML und später Java zu programmieren. Weit...
Installation Linux mint auf stick
Reiner Schulz, 10.12.2017 17:34, 3 Antworten
Hallo, ich hab ein ISO-image mit Linux Mint auf einem Stick untergebracht Jetzt kann ich auch...
Canon Maxify 2750 oder ähnlicher Drucker
Hannes Richert, 05.12.2017 20:14, 4 Antworten
Hallo, leider hat Canon mich weiterverwiesen, weil sie Linux nicht supporten.. deshalb hier die...
Ubuntu Server
Steffen Seidler, 05.12.2017 12:10, 1 Antworten
Hallo! Hat jemand eine gute Anleitung für mich, wie ich Ubuntu Server einrichte? Habe bisher...