Class: Allsum::Client::Complicator
- Inherits:
-
Object
- Object
- Allsum::Client::Complicator
- Defined in:
- lib/allsum/client/complicator.rb
Class Method Summary collapse
- .calculate_checksums(file) ⇒ Object
- .file_size(path) ⇒ Object
- .file_type(path) ⇒ Object
- .filename(path) ⇒ Object
- .log_to_db(file) ⇒ Object
- .version_info(file) ⇒ Object
Class Method Details
.calculate_checksums(file) ⇒ Object
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/allsum/client/complicator.rb', line 32 def self.calculate_checksums(file) begin puts "Filename: #{@filename}" puts "[x]calculating checksums" if @debug || @verbose #md5 @md5digest = Digest::MD5.hexdigest(File.read(file)) puts " MD5 checksum: #{@md5digest}" if @debug || @verbose #sha1 @sha1digest = Digest::SHA1.hexdigest(File.read(file)) puts " SHA1 checksum: #{@sha1digest}" if @debug || @verbose #sha256 @sha256digest = Digest::SHA256.hexdigest(File.read(file)) puts " SHA256 checksum: #{@sha256digest}" if @debug || @verbose #fuzzy hash @fuzzyhash = Ssdeep::FuzzyHash.from_file(file) puts " Fuzzy hash: #{@fuzzyhash}" if @debug || @verbose rescue Errno::EACCESS puts "Perrmission denied when attempting to read #{@filename}" if @debug || @verbose end end |
.file_size(path) ⇒ Object
58 59 60 61 62 63 64 |
# File 'lib/allsum/client/complicator.rb', line 58 def self.file_size(path) puts "[x]checking file size" if @debug || @verbose @filesize = File.size?(path) puts "Filesize: #{@filesize}" if @debug || @verbose @filepath = path end |
.file_type(path) ⇒ Object
53 54 55 56 |
# File 'lib/allsum/client/complicator.rb', line 53 def self.file_type(path) puts "[x]checking file type" if @debug || @verbose @filetype = File.basename(path.downcase).split(".").last end |
.filename(path) ⇒ Object
13 14 15 |
# File 'lib/allsum/client/complicator.rb', line 13 def self.filename(path) @filename = Pathname.new(path).basename end |
.log_to_db(file) ⇒ Object
66 67 68 69 70 71 72 |
# File 'lib/allsum/client/complicator.rb', line 66 def self.log_to_db(file) # schema: uid | file name | size | file type | product | version info | modification date | ms bulletin | build | md5 | sha1 | sha256 | comment(?) puts "[x]logging to database" if @debug || @verbose Allsum::Client::Logger.paper(@filename, @filetype, @md5digest, @sha1digest, @sha256digest, @filepath, @fuzzyhash, @fileversion, @filesize) end |
.version_info(file) ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/allsum/client/complicator.rb', line 17 def self.version_info(file) vsize=Win32API.new('version.dll', 'GetFileVersionInfoSize', ['P', 'P'], 'L').call(file, "") # "" was s #p vsize if @debug if (vsize > 0) result = ' '*vsize Win32API.new('version.dll', 'GetFileVersionInfo', ['P', 'L', 'L', 'P'], 'L').call(file, 0, vsize, result) rstring = result.unpack('v*').map{|s| s.chr if s<256}*'' r = /FileVersion..(.*?)\000/.match(rstring) puts "FileVersion = #{r ? r[1] : '??' }" if @verbose || @debug @fileversion = r ? r[1] : '??' else puts "No Version Info" if @verbose || @debug end end |