diff --git a/lib/msf/core/db_manager/import.rb b/lib/msf/core/db_manager/import.rb index f37242ed31..01c7ccb7f7 100644 --- a/lib/msf/core/db_manager/import.rb +++ b/lib/msf/core/db_manager/import.rb @@ -12,7 +12,6 @@ require 'uri' # require 'packetfu' -require 'rex/parser/burp_session_nokogiri' require 'rex/parser/ci_nokogiri' require 'rex/parser/foundstone_nokogiri' require 'rex/parser/fusionvm_nokogiri' @@ -33,6 +32,7 @@ module Msf::DBManager::Import autoload :Acunetix, 'msf/core/db_manager/import/acunetix' autoload :Amap, 'msf/core/db_manager/import/amap' autoload :Appscan, 'msf/core/db_manager/import/appscan' + autoload :Burp, 'msf/core/db_manager/import/burp' autoload :IP360, 'msf/core/db_manager/import/ip360' autoload :MsfXml, 'msf/core/db_manager/import/msf_xml' autoload :Qualys, 'msf/core/db_manager/import/qualys' @@ -40,6 +40,7 @@ module Msf::DBManager::Import include Msf::DBManager::Import::Acunetix include Msf::DBManager::Import::Amap include Msf::DBManager::Import::Appscan + include Msf::DBManager::Import::Burp include Msf::DBManager::Import::IP360 include Msf::DBManager::Import::MsfXml include Msf::DBManager::Import::Qualys @@ -70,37 +71,6 @@ module Msf::DBManager::Import self.send "import_#{ftype}".to_sym, args, &block end - def import_burp_session_noko_stream(args={},&block) - if block - doc = Rex::Parser::BurpSessionDocument.new(args,framework.db) {|type, data| yield type,data } - else - doc = Rex::Parser::BurpSessionDocument.new(args,self) - end - parser = ::Nokogiri::XML::SAX::Parser.new(doc) - parser.parse(args[:data]) - end - - def import_burp_session_xml(args={}, &block) - bl = validate_ips(args[:blacklist]) ? args[:blacklist].split : [] - wspace = args[:wspace] || workspace - if Rex::Parser.nokogiri_loaded - # Rex::Parser.reload("burp_session_nokogiri.rb") - parser = "Nokogiri v#{::Nokogiri::VERSION}" - noko_args = args.dup - noko_args[:blacklist] = bl - noko_args[:wspace] = wspace - if block - yield(:parser, parser) - import_burp_session_noko_stream(noko_args) {|type, data| yield type,data} - else - import_burp_session_noko_stream(noko_args) - end - return true - else # Sorry - raise DBImportError.new("Could not import due to missing Nokogiri parser. Try 'gem install nokogiri'.") - end - end - def import_ci_noko_stream(args, &block) if block doc = Rex::Parser::CIDocument.new(args,framework.db) {|type, data| yield type,data } diff --git a/lib/msf/core/db_manager/import/burp.rb b/lib/msf/core/db_manager/import/burp.rb new file mode 100644 index 0000000000..b1ca9ed0b2 --- /dev/null +++ b/lib/msf/core/db_manager/import/burp.rb @@ -0,0 +1,34 @@ +require 'rex/parser/burp_session_nokogiri' + +module Msf::DBManager::Import::Burp + def import_burp_session_noko_stream(args={},&block) + if block + doc = Rex::Parser::BurpSessionDocument.new(args,framework.db) {|type, data| yield type,data } + else + doc = Rex::Parser::BurpSessionDocument.new(args,self) + end + parser = ::Nokogiri::XML::SAX::Parser.new(doc) + parser.parse(args[:data]) + end + + def import_burp_session_xml(args={}, &block) + bl = validate_ips(args[:blacklist]) ? args[:blacklist].split : [] + wspace = args[:wspace] || workspace + if Rex::Parser.nokogiri_loaded + # Rex::Parser.reload("burp_session_nokogiri.rb") + parser = "Nokogiri v#{::Nokogiri::VERSION}" + noko_args = args.dup + noko_args[:blacklist] = bl + noko_args[:wspace] = wspace + if block + yield(:parser, parser) + import_burp_session_noko_stream(noko_args) {|type, data| yield type,data} + else + import_burp_session_noko_stream(noko_args) + end + return true + else # Sorry + raise DBImportError.new("Could not import due to missing Nokogiri parser. Try 'gem install nokogiri'.") + end + end +end