module Msf module Scripts module Meterpreter module Common # # Commonly used methods and techniques for Meterpreter scripts # # # These methods should only print output in the case of an error. All code should be tab indented # All methods should follow the naming coventions below (separate words with "_", end queries with a ?, etc) # #Writes a given string to a file specified def file_local_write2file(file2wrt, data2wrt) if not ::File.exists?(file2wrt) ::FileUtils.mkdir_p(file2wrt) else output = ::File.open(file2wrt, "a") data2wrt.each_line do |d| output.puts(d) end output.close end end #Returns a MD5 checksum of a given local file def file_local_digestmd5(file2md5) if not ::File.exists?(file2md5) raise "File #{file2md5} does not exists!" else require 'digest/md5' chksum = nil chksum = Digest::MD5.hexdigest(::File.open(file2md5, "rb") { |f| f.read}) return chksum end end #Returns a SHA1 checksum of a given local file def file_local_digestsha1(file2sha1) if not ::File.exists?(file2sha1) raise "File #{file2sha1} does not exists!" else require 'digest/sha1' chksum = nil chksum = Digest::SHA1.hexdigest(::File.open(file2sha1, "rb") { |f| f.read}) return chksum end end #Returns a SHA256 checksum of a given local file def file_local_digestsha2(file2sha2) if not ::File.exists?(file2sha2) raise "File #{file2sha2} does not exists!" else require 'digest/sha2' chksum = nil chksum = Digest::SHA256.hexdigest(::File.open(file2sha2, "rb") { |f| f.read}) return chksum end end end end end end