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
-
#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.
-
#hexdigest(body) ⇒ String
The hashed value for the given body.
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
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.
42 43 44 |
# File 'lib/cms_scanner/finders/finder/fingerprinter.rb', line 42 def hexdigest(body) Digest::MD5.hexdigest(body) end |