russdeep
Ruby language bindings for the ssdeep ‘libfuzzy’ library api. This API lets you do fuzzy hash comparisons between files and arbitrary string buffers. Fuzzy hashes are also known as context triggered piecewise hashes (CTPH).
See the ssdeep homepage for more information:
http://ssdeep.sourceforge.net
Requirements
-
ssdeep’s libfuzzy - ssdeep.sourceforge.net The latest version of ssdeep known to work with russdeep is 2.5.
Installation
First ensure you have installed the ssdeep package and that libfuzzy is in your libpath. Then…
Gem
(sudo)? gem install russdeep
rake
git clone https://github.com/emonti/russdeep.git
cd russdeep
rake compile
Example
require "ssdeep"
data1 =<<__EOM__
Ruby language bindings for the ssdeep 'libfuzzy' library api. This API lets you do
fuzzy hash comparisons between files and arbitrary string buffers. Fuzzy
hashes are also known as context triggered piecewise hashes (CTPH).
See the ssdeep homepage for more information:
http://ssdeep.sourceforge.net
__EOM__
hash1 = Ssdeep.from_string(data1)
hash2 = Ssdeep.from_string(data1 + "a little extra")
hash3 = Ssdeep.from_string(data1.gsub("ssdeep", "fuzzy"))
hash4 = Ssdeep.from_file("/etc/hosts")
hash5 = File.open("/etc/hosts"){|f| Ssdeep.from_fileno(f.fileno)}
Ssdeep.compare(hash1, hash1) # => 100
Ssdeep.compare(hash1, hash2) # => 97
Ssdeep.compare(hash1, hash3) # => 88
Ssdeep.compare(hash1, hash4) # => 0
Ssdeep.compare(hash4, hash5) # => 100
License
See LICENSE.txt
Copyright © 2011 Eric Monti. See LICENSE for details.