# -*- coding: binary -*- module Msf class PersistentStorage ### # # This class persists the state of the framework to a flatfile in a human # readable format. At the moment, the level of information it conveys is # rather basic and ugly, but this is just a prototype, so it will be improved. # Oh yes, it will be improved. # ### class Flatfile < PersistentStorage # # Initializes the flatfile for storage based on the parameters specified. # The hash must contain a FilePath attribute. # def initialize(*params) raise ArgumentError, "You must specify a file path" if (params.length == 0) self.path = params[0] end # # This method stores the current state of the framework in human readable # form to a flatfile. This can be used as a reporting mechanism. # def store(framework) # Open the supplied file path for writing. self.fd = File.new(self.path, "w") begin store_general(framework) ensure self.fd.close end end protected attr_accessor :fd, :path # :nodoc: # # This method stores general information about the current state of the # framework instance. # def store_general(framework) fd.print( "\n" + "Metasploit Framework Report\n" + "===========================\n\n" + "Generated: #{Time.now}\n\n") end Msf::PersistentStorage.add_storage_class('flatfile', self) end end end