diff --git a/lib/loader.rb b/lib/loader.rb index ea8d23e69..0757d7258 100644 --- a/lib/loader.rb +++ b/lib/loader.rb @@ -38,6 +38,9 @@ require 'lib/model/http' require 'lib/model/browserdetails' require 'lib/model/distributedenginerules' require 'lib/model/dynamiccommandinfo' +require 'lib/model/dynamicpayloadinfo.rb' +require 'lib/model/dynamicpayloads.rb' + require 'lib/crypto' diff --git a/lib/migration.rb b/lib/migration.rb index 1247e2a75..5887154a8 100644 --- a/lib/migration.rb +++ b/lib/migration.rb @@ -1,3 +1,4 @@ +require 'pp' module BeEF # @@ -57,6 +58,22 @@ class Migration end end end + + payloads = msf.payloads() + payloads.each do |payload| + if not BeEF::Models::DynamicPayloads.first( :name => payload) + pl = BeEF::Models::DynamicPayloads.new( :name => payload) + pl.save + opts = msf.payload_options(payload) + opts.keys.each do |opt| + next if opts[opt]['advanced'] or opts[opt]['evasion'] + pl.dynamic_payload_info.new(:name => opt, :description => opts[opt]['desc'], :required => opts[opt]['required'], :value => opts[opt]['default']) + end + pl.save + + end + end + end end diff --git a/lib/modules/msfclient.rb b/lib/modules/msfclient.rb index 8234b473c..6f3bfec20 100644 --- a/lib/modules/msfclient.rb +++ b/lib/modules/msfclient.rb @@ -77,6 +77,15 @@ module BeEF res = self.call('module.options','exploit',name) res end + def payloads() + res = self.call('module.payloads') + res['modules'] + end + def payload_options(name) + res = self.call('module.options','payload',name) + res + end + end end