Class: Allsum::Client::Complicator

Inherits:
Object
  • Object
show all
Defined in:
lib/allsum/client/complicator.rb

Class Method Summary collapse

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