Um die Tabellen unterschiedlicher JPEG-Dateien besser vergleichen zu können, erstellte ich in Perl ein kleines Skript namens dqtmd5. Es analysiert den Header einer JPEG-Datei und filtert die DQT-Segmente heraus. Hierzu bedient es sich des Moduls Image::MetaData::JPEG. Dann analysiert es die Segmente, extrahiert die Quantisierungstabellen und bringt diese in eine kanonische Anordnung. Das Verfahren wird dadurch robust gegen Manipulationen an der Anordnung der Tabellen. Abschließend berechnet das Skript eine MD5-Prüfsumme über die gewonnenen Daten:
$ ./dqtmd5.pl sample.jpg 41e8fb65ebb533a82f392bed8988eb47 sample.jpg
In gleicher Weise lassen sich Werte aus den (unbearbeiteten!) Aufnahmen bekannter Digitalkameras bestimmen. Als Beispiel nenne ich hier die Hashes für einige Digitalkameras des Herstellers Canon. Die Angaben zu Hersteller und Modell stammen aus den EXIF-Daten der Vergleichsaufnahmen.
8ba82c6f0fe031d5b7234126b9521d34 Canon Canon DIGITAL IXUS 75 bc610f3b20f21ed06ce1f72b0ba0aeb1 Canon Canon DIGITAL IXUS 75 41e8fb65ebb533a82f392bed8988eb47 Canon Canon EOS 10D 71377799fea3469984b1a3fb2f0943c6 Canon Canon EOS 10D d2c2c9f7b759bd6ffa62f57a28381ac4 Canon Canon EOS 10D 55efbe121f05f17cde4ef656d8c9f4f3 Canon Canon PowerShot A410 981c174a64918a338d4b8ea3c59068bb Canon Canon PowerShot A410
Übrigens verwenden nicht alle Hersteller derart uniforme Quantisierungstabellen. Als Gegenbeispiel habe ich einige Prüfsummen für die FUJI FineFix F455 zusammengestellt.
Für JPEG-Dateien unbekannter Herkunft lassen sich nun DQT-Prüfsummen berechnen und mit einer Referenzdatenbank vergleichen. Auf diese Weise ergeben sich Hinweise auf die erzeugende Digitalkamera oder aber das Grafikprogramm, mit dem die Datei zuletzt bearbeitet wurde.
