Add preserved_identifiers support

bug/bundler_fix
wchen-r7 2016-01-28 14:36:42 -06:00
parent 2fe40a0e04
commit 4bd2be5dfa
2 changed files with 18 additions and 4 deletions

View File

@ -8,7 +8,8 @@ module Msf
def initialize(info={})
super
register_advanced_options([
OptInt.new('JsObfuscate', [false, "Number of times to obfuscate JavaScript", 0])
OptInt.new('JsObfuscate', [false, "Number of times to obfuscate JavaScript", 0]),
OptString.new('Identifiers', [false, "Identifiers to preserve for JsObfu"])
], Exploit::JSObfu)
end
@ -18,14 +19,20 @@ module Msf
# @param js [String] JavaScript code
# @param opts [Hash] obfuscation options
# * :iterations [FixNum] Number of times to obfuscate
# * :preserved_identifiers [Array] An array of identifiers to preserve during obfuscation
# @return [::Rex::Exploitation::JSObfu]
#
def js_obfuscate(js, opts={})
iterations = (opts[:iterations] || datastore['JsObfuscate']).to_i
identifiers = (opts[:preserved_identifiers] || datastore['Identifiers'] || '').split(',')
obfu = ::Rex::Exploitation::JSObfu.new(js)
obfu.obfuscate(:iterations=>iterations)
obfu_opts = {}
obfu_opts.merge!(iterations: iterations)
obfu_opts.merge!(preserved_identifiers: identifiers)
obfu.obfuscate(obfu_opts)
obfu
end
end
end
end

View File

@ -32,6 +32,10 @@ module Jsobfu
options[:output] = v
end
opt.on('-p', '--preserved-identifiers id1,id2', 'The identifiers to preserve') do |v|
options[:preserved_identifiers] = v.split(',')
end
opt.on_tail('-h', '--help', 'Show this message') do
$stdout.puts opt
exit
@ -67,7 +71,10 @@ module Jsobfu
def run
original_js = read_js(@opts[:input])
js = ::Rex::Exploitation::JSObfu.new(original_js)
js.obfuscate(:iterations=>@opts[:iteration].to_i)
obfu_opts = {}
obfu_opts.merge!(iterations: @opts[:iteration].to_i)
obfu_opts.merge!(preserved_identifiers: @opts[:preserved_identifiers] || [])
js.obfuscate(obfu_opts)
js = js.to_s
output_stream = $stdout