Merge pull request #1667 from bcoles/system_info
Add getCpuCores getCpuDetails getMemory getBatteryDetails to beef.hardware API
This commit is contained in:
@@ -3972,17 +3972,6 @@ beef.browser = {
|
|||||||
return results;
|
return results;
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns zombie screen size and color depth.
|
|
||||||
*/
|
|
||||||
getScreenSize: function () {
|
|
||||||
return {
|
|
||||||
width: window.screen.width,
|
|
||||||
height: window.screen.height,
|
|
||||||
colordepth: window.screen.colorDepth
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns zombie browser window size.
|
* Returns zombie browser window size.
|
||||||
* @from: http://www.howtocreate.co.uk/tutorials/javascript/browserwindow
|
* @from: http://www.howtocreate.co.uk/tutorials/javascript/browserwindow
|
||||||
@@ -4039,7 +4028,8 @@ beef.browser = {
|
|||||||
var os_version = beef.os.getVersion();
|
var os_version = beef.os.getVersion();
|
||||||
var default_browser = beef.os.getDefaultBrowser();
|
var default_browser = beef.os.getDefaultBrowser();
|
||||||
var hw_name = beef.hardware.getName();
|
var hw_name = beef.hardware.getName();
|
||||||
var cpu_type = beef.hardware.cpuType();
|
var cpu_arch = beef.hardware.getCpuArch();
|
||||||
|
var cpu_cores = beef.hardware.getCpuCores();
|
||||||
var touch_enabled = (beef.hardware.isTouchEnabled()) ? "Yes" : "No";
|
var touch_enabled = (beef.hardware.isTouchEnabled()) ? "Yes" : "No";
|
||||||
var browser_platform = (typeof(navigator.platform) != "undefined" && navigator.platform != "") ? navigator.platform : 'Unknown';
|
var browser_platform = (typeof(navigator.platform) != "undefined" && navigator.platform != "") ? navigator.platform : 'Unknown';
|
||||||
var browser_type = JSON.stringify(beef.browser.type(), function (key, value) {
|
var browser_type = JSON.stringify(beef.browser.type(), function (key, value) {
|
||||||
@@ -4047,7 +4037,7 @@ beef.browser = {
|
|||||||
else if (typeof value == 'object') return value;
|
else if (typeof value == 'object') return value;
|
||||||
else return undefined;
|
else return undefined;
|
||||||
});
|
});
|
||||||
var screen_size = beef.browser.getScreenSize();
|
var screen_size = beef.hardware.getScreenSize();
|
||||||
var window_size = beef.browser.getWindowSize();
|
var window_size = beef.browser.getWindowSize();
|
||||||
var vbscript_enabled = (beef.browser.hasVBScript()) ? "Yes" : "No";
|
var vbscript_enabled = (beef.browser.hasVBScript()) ? "Yes" : "No";
|
||||||
var has_flash = (beef.browser.hasFlash()) ? "Yes" : "No";
|
var has_flash = (beef.browser.hasFlash()) ? "Yes" : "No";
|
||||||
@@ -4085,7 +4075,8 @@ beef.browser = {
|
|||||||
if (os_version) details['OsVersion'] = os_version;
|
if (os_version) details['OsVersion'] = os_version;
|
||||||
if (default_browser) details['DefaultBrowser'] = default_browser;
|
if (default_browser) details['DefaultBrowser'] = default_browser;
|
||||||
if (hw_name) details['Hardware'] = hw_name;
|
if (hw_name) details['Hardware'] = hw_name;
|
||||||
if (cpu_type) details['CPU'] = cpu_type;
|
if (cpu_arch) details['CpuArch'] = cpu_arch;
|
||||||
|
if (cpu_cores) details['CpuCores'] = cpu_cores;
|
||||||
if (touch_enabled) details['TouchEnabled'] = touch_enabled;
|
if (touch_enabled) details['TouchEnabled'] = touch_enabled;
|
||||||
if (date_stamp) details['DateStamp'] = date_stamp;
|
if (date_stamp) details['DateStamp'] = date_stamp;
|
||||||
if (browser_platform) details['BrowserPlatform'] = browser_platform;
|
if (browser_platform) details['BrowserPlatform'] = browser_platform;
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ beef.browser.popup = {
|
|||||||
|
|
||||||
blocker_enabled: function ()
|
blocker_enabled: function ()
|
||||||
{
|
{
|
||||||
screenParams = beef.browser.getScreenSize();
|
screenParams = beef.hardware.getScreenSize();
|
||||||
var popUp = window.open('/', 'windowName0', 'width=1, height=1, left='+screenParams.width+', top='+screenParams.height+', scrollbars, resizable');
|
var popUp = window.open('/', 'windowName0', 'width=1, height=1, left='+screenParams.width+', top='+screenParams.height+', scrollbars, resizable');
|
||||||
if (popUp == null || typeof(popUp)=='undefined') {
|
if (popUp == null || typeof(popUp)=='undefined') {
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ beef.hardware = {
|
|||||||
/*
|
/*
|
||||||
* @return: {String} CPU type
|
* @return: {String} CPU type
|
||||||
**/
|
**/
|
||||||
cpuType: function() {
|
getCpuArch: function() {
|
||||||
var arch = 'UNKNOWN';
|
var arch = 'UNKNOWN';
|
||||||
// note that actually WOW64 means IE 32bit and Windows 64 bit. we are more interested
|
// note that actually WOW64 means IE 32bit and Windows 64 bit. we are more interested
|
||||||
// in detecting the OS arch rather than the browser build
|
// in detecting the OS arch rather than the browser build
|
||||||
@@ -37,6 +37,80 @@ beef.hardware = {
|
|||||||
return arch;
|
return arch;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns number of CPU cores
|
||||||
|
**/
|
||||||
|
getCpuCores: function() {
|
||||||
|
var cores = 'unknown';
|
||||||
|
try {
|
||||||
|
if(typeof navigator.hardwareConcurrency != 'undefined') {
|
||||||
|
cores = navigator.hardwareConcurrency;
|
||||||
|
}
|
||||||
|
} catch(e) {
|
||||||
|
cores = 'unknown';
|
||||||
|
}
|
||||||
|
return cores;
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns CPU details
|
||||||
|
**/
|
||||||
|
getCpuDetails: function() {
|
||||||
|
return {
|
||||||
|
arch: beef.hardware.getCpuArch(),
|
||||||
|
cores: beef.hardware.getCpuCores()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns RAM (GiB)
|
||||||
|
**/
|
||||||
|
getMemory: function() {
|
||||||
|
var memory = 'unknown';
|
||||||
|
try {
|
||||||
|
if(typeof navigator.deviceMemory != 'undefined') {
|
||||||
|
memory = navigator.deviceMemory;
|
||||||
|
}
|
||||||
|
} catch(e) {
|
||||||
|
memory = 'unknown';
|
||||||
|
}
|
||||||
|
return memory;
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns battery details
|
||||||
|
**/
|
||||||
|
getBatteryDetails: function() {
|
||||||
|
var battery = navigator.battery || navigator.webkitBattery || navigator.mozBattery;
|
||||||
|
|
||||||
|
if (!!battery) {
|
||||||
|
return {
|
||||||
|
chargingStatus: battery.charging,
|
||||||
|
batteryLevel: battery.level * 100 + "%",
|
||||||
|
chargingTime: battery.chargingTime,
|
||||||
|
dischargingTime: battery.dischargingTime
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return {
|
||||||
|
chargingStatus: 'unknown',
|
||||||
|
batteryLevel: 'unknown',
|
||||||
|
chargingTime: 'unknown',
|
||||||
|
dischargingTime: 'unknown'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns zombie screen size and color depth.
|
||||||
|
*/
|
||||||
|
getScreenSize: function () {
|
||||||
|
return {
|
||||||
|
width: window.screen.width,
|
||||||
|
height: window.screen.height,
|
||||||
|
colordepth: window.screen.colorDepth
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @return: {Boolean} true or false.
|
* @return: {Boolean} true or false.
|
||||||
**/
|
**/
|
||||||
|
|||||||
@@ -333,12 +333,20 @@ module BeEF
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# get and store the value for CPU
|
# get and store the value for CpuArch
|
||||||
cpu_type = get_param(@data['results'], 'CPU')
|
cpu_arch = get_param(@data['results'], 'CpuArch')
|
||||||
if BeEF::Filters.is_valid_cpu?(cpu_type)
|
if BeEF::Filters.is_valid_cpu?(cpu_arch)
|
||||||
BD.set(session_id, 'CPU', cpu_type)
|
BD.set(session_id, 'CpuArch', cpu_arch)
|
||||||
else
|
else
|
||||||
self.err_msg "Invalid value for CPU returned from the hook browser's initial connection."
|
self.err_msg "Invalid value for CpuArch returned from the hook browser's initial connection."
|
||||||
|
end
|
||||||
|
|
||||||
|
# get and store the value for CpuCores
|
||||||
|
cpu_cores = get_param(@data['results'], 'CpuCores')
|
||||||
|
if BeEF::Filters.alphanums_only?(cpu_cores)
|
||||||
|
BD.set(session_id, 'CpuCores', cpu_cores)
|
||||||
|
else
|
||||||
|
self.err_msg "Invalid value for CpuCores returned from the hook browser's initial connection."
|
||||||
end
|
end
|
||||||
|
|
||||||
# get and store the value for TouchEnabled
|
# get and store the value for TouchEnabled
|
||||||
|
|||||||
@@ -123,7 +123,8 @@ class Modules < BeEF::Extension::AdminUI::HttpController
|
|||||||
['Host', 'Date', 'DateStamp'],
|
['Host', 'Date', 'DateStamp'],
|
||||||
['Host', 'Operating System', 'OsName'],
|
['Host', 'Operating System', 'OsName'],
|
||||||
['Host', 'Hardware', 'Hardware'],
|
['Host', 'Hardware', 'Hardware'],
|
||||||
['Host', 'CPU', 'CPU'],
|
['Host', 'CPU Arch', 'CpuArch'],
|
||||||
|
['Host', 'CPU Cores', 'CpuCores'],
|
||||||
['Host', 'Default Browser', 'DefaultBrowser'],
|
['Host', 'Default Browser', 'DefaultBrowser'],
|
||||||
['Host', 'Screen Size', 'ScreenSize'],
|
['Host', 'Screen Size', 'ScreenSize'],
|
||||||
['Host', 'Touch Screen', 'TouchEnabled']
|
['Host', 'Touch Screen', 'TouchEnabled']
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ var ZombiesMgr = function(zombies_tree_lists) {
|
|||||||
text+= ip;
|
text+= ip;
|
||||||
|
|
||||||
balloon_text = "IP: " + ip;
|
balloon_text = "IP: " + ip;
|
||||||
balloon_text+= "<br/>Origin: " + domain + ":" + port;
|
balloon_text+= "<br/>Origin: " + domain + ":" + port;
|
||||||
balloon_text+= "<hr/>Browser: " + browser_name + " " + browser_version;
|
balloon_text+= "<hr/>Browser: " + browser_name + " " + browser_version;
|
||||||
balloon_text+= "<br/>System: " + os_name;
|
balloon_text+= "<br/>System: " + os_name;
|
||||||
balloon_text+= "<br/>Hardware: " + hw_name;
|
balloon_text+= "<br/>Hardware: " + hw_name;
|
||||||
|
|||||||
Reference in New Issue
Block a user