Det finns ett öppet verktyg för att göra fuzzy (dvs inexakt) hashning av data kallat sssdeep. Syftet med verktyget är att kunna göra forensisk analys av data, ex på hårddiskar. Det finns även en artikel av Jesse Kornblum, Identifying almost identical files using context triggered piecewise hashing, som beskriver vad fuzzy hashing är, hur den algoritm som används i ssdeep fungerar och hur ssdeep används för att jämföra ett par jpeg-bilder.
Värt att notera är att ssdeep inte bara kan jämföra bilder och binärformat, utan kan även användas för att exempelvis hitta återanvänd kod i källkod.
För den som är intresserad av forensik kan det vara bra att veta att det (tydligen – jag kände inte till den innan) finns en Wiki kallad forensicswiki om forensik (forensicswiki). Förutom en sida om ssdeep med bra användningsexempel finns här en massa info om verktyg och metoder för forensik.
Jag testade att tanka ner och programmet byggde snällt och ser ut att fungera. Har dock inga bra exempelfiler att köra pÃ¥. Jag testade att ta en PDF och peta in “AA” slumpmässigt pÃ¥ 10 olika ställen i en kopia av filen och sedan jämföra:
js@stajlis:ssdeep-2.4>./ssdeep original.pdf moddad.pdf
ssdeep,1.0--blocksize:hash:hash,filename
6144:mYKtFZX3SIv7aSxwEsLfoBKfCQPGjPZsQAxbbC3S+hbQgQEs:
mPhHSIv7aSx2owfCVZhCXySkbjQb,'original.pdf'
6144:xYKtqZX3SMv7aSxwE+LfoBMfCQPGjPZqQAxbbC3S+hbQgQEs:
xPWHSMv7aSxIoCfCVZPCXySkbjQb,'moddad.pdf'
js@stajlis:ssdeep-2.4>md5 original.pdf
MD5 (original.pdf) = a7ca4d650f7e8f6d073fc9d800f343ea
js@stajlis:ssdeep-2.4>md5 moddad.pdf
MD5 (moddad.pdf) = 459e7a8aa23272c2291d32ccd1286e53
Som man kan se ovan verkar ssdeep detektera att filen är modifierad, men att döma av hasharna är dom väldigt lika. MD5 som jämförelse ger att filerna skiljer, men inte hur mycket. Hur man sedan skall tolka och använda resultatet från ssdeep behöver jag läsa på bättre för att förstå. Det verkar funka i alla fall.