Module: CMSScanner::Finders::Finder::Fingerprinter

Includes:
Enumerator
Defined in:
lib/cms_scanner/finders/finder/fingerprinter.rb

Overview

Module to provide an easy way to fingerprint things such as versions

Instance Method Summary collapse

Methods included from Enumerator

#enumerate, #full_request_params, #head_or_get_request_params, #maybe_get_full_response, #valid_response_codes

Instance Method Details

#fingerprint(fingerprints, opts = {}) {|Mixed, String, String| ... } ⇒ Object

Format should be like the following: {

file_path_1: {
  md5_hash_1: version_1,
  md5_hash_2: [version_2]
},
file_path_2: {
  md5_hash_3: [version_1, version_2],
  md5_hash_4: version_3
}

} Note that the version can either be an array or a string

Parameters:

  • fingerprints (Hash)

    The fingerprints

  • opts (Hash) (defaults to: {})

Options Hash (opts):

  • :show_progression (Boolean)

    Wether or not to display the progress bar

Yields:

  • (Mixed, String, String)

    version/s, url, hash The version associated to the fingerprint of the url



29
30
31
32
33
34
35
36
37
38
39
# File 'lib/cms_scanner/finders/finder/fingerprinter.rb', line 29

def fingerprint(fingerprints, opts = {})
  enum_opts = opts.merge(check_full_response: 200)

  enumerate(fingerprints.transform_keys { |k| target.url(k) }, enum_opts) do |res, fingerprint|
    md5sum = hexdigest(res.body)

    next unless fingerprint.key?(md5sum)

    yield fingerprint[md5sum], res.effective_url, md5sum
  end
end

#hexdigest(body) ⇒ String

Returns The hashed value for the given body.

Returns:

  • (String)

    The hashed value for the given body



42
43
44
# File 'lib/cms_scanner/finders/finder/fingerprinter.rb', line 42

def hexdigest(body)
  Digest::MD5.hexdigest(body)
end