From 5e7342e1bdb53779bbfc69f8fffb37de10b29464 Mon Sep 17 00:00:00 2001 From: antisnatchor Date: Fri, 1 Apr 2016 14:14:13 +0200 Subject: [PATCH] Added Brave browser detection. --- .../{ => enabled}/ff_tux_webrtc-internalip.json | 6 +++--- core/main/client/browser.js | 12 ++++++++++++ core/main/constants/browsers.rb | 3 +++ core/main/models/browserdetails.rb | 4 +++- core/main/models/hookedbrowser.rb | 6 +++--- extensions/admin_ui/constants/agents.rb | 2 ++ extensions/admin_ui/media/images/icons/brave.png | Bin 0 -> 4388 bytes 7 files changed, 26 insertions(+), 7 deletions(-) rename arerules/{ => enabled}/ff_tux_webrtc-internalip.json (91%) create mode 100644 extensions/admin_ui/media/images/icons/brave.png diff --git a/arerules/ff_tux_webrtc-internalip.json b/arerules/enabled/ff_tux_webrtc-internalip.json similarity index 91% rename from arerules/ff_tux_webrtc-internalip.json rename to arerules/enabled/ff_tux_webrtc-internalip.json index d429f03de..0059a07da 100644 --- a/arerules/ff_tux_webrtc-internalip.json +++ b/arerules/enabled/ff_tux_webrtc-internalip.json @@ -1,8 +1,8 @@ {"name": "Get Internal IP (WebRTC)", "author": "antisnatchor", - "browser": "FF", - "browser_version": ">= 31", - "os": "Linux", + "browser": "C", + "browser_version": "ALL", + "os": "OSX", "os_version": "ALL", "modules": [ {"name": "get_internal_ip_webrtc", diff --git a/core/main/client/browser.js b/core/main/client/browser.js index 94dd6f7f6..d0c26e99f 100644 --- a/core/main/client/browser.js +++ b/core/main/client/browser.js @@ -51,6 +51,14 @@ beef.browser = { return (window.navigator.userAgent.match(/Odyssey Web Browser/) != null && window.navigator.userAgent.match(/OWB\/\d+\.\d/) != null); }, + /** + * Returns true if Brave + * @example: beef.browser.isBrave() + */ + isBrave: function(){ + return (window.navigator.userAgent.match(/brave\/\d+\.\d/) != null && window.navigator.userAgent.match(/Brave\/\d+\.\d/) != null); + }, + /** * Returns true if IE6. * @example: beef.browser.isIE6() @@ -1979,6 +1987,10 @@ beef.browser = { return 'OD' } ; // Odyssey any version + if (this.isBrave()) { + return 'BR' + } + ; // Brave any version return 'UNKNOWN'; // Unknown UA }, diff --git a/core/main/constants/browsers.rb b/core/main/constants/browsers.rb index 11c828d65..9e00adea4 100644 --- a/core/main/constants/browsers.rb +++ b/core/main/constants/browsers.rb @@ -20,6 +20,7 @@ module Constants A = 'A' # Avant MI = 'MI' # Midori OD = 'OD' # Odyssey + BR = 'BR' # Brave ALL = 'ALL' # ALL UNKNOWN = 'UN' # Unknown @@ -33,6 +34,7 @@ module Constants FRIENDLY_A_NAME = 'Avant' FRIENDLY_MI_NAME = 'Midori' FRIENDLY_OD_NAME = 'Odyssey' + FRIENDLY_BR_NAME = 'Brave' FRIENDLY_UN_NAME = 'UNKNOWN' # Attempt to retrieve a browser's friendly name @@ -51,6 +53,7 @@ module Constants when A ; return FRIENDLY_A_NAME when MI ; return FRIENDLY_MI_NAME when OD ; return FRIENDLY_OD_NAME + when BR ; return FRIENDLY_BR_NAME when UNKNOWN; return FRIENDLY_UN_NAME end diff --git a/core/main/models/browserdetails.rb b/core/main/models/browserdetails.rb index 29401581f..a3ddd05d3 100644 --- a/core/main/models/browserdetails.rb +++ b/core/main/models/browserdetails.rb @@ -68,6 +68,8 @@ module Models return BeEF::Extension::AdminUI::Constants::Agents::AGENT_OPERA_IMG if browser.eql? 'O' # Opera return BeEF::Extension::AdminUI::Constants::Agents::AGENT_MIDORI_IMG if browser.eql? 'MI' # Midori return BeEF::Extension::AdminUI::Constants::Agents::AGENT_ODYSSEY_IMG if browser.eql? 'OD' # Odyssey + return BeEF::Extension::AdminUI::Constants::Agents::AGENT_BRAVE_IMG if browser.eql? 'BR' # Brave + BeEF::Extension::AdminUI::Constants::Agents::AGENT_UNKNOWN_IMG end @@ -123,7 +125,7 @@ module Models return BeEF::Core::Constants::Hardware::HW_MOTOROLA_IMG if ua_string.include? BeEF::Core::Constants::Hardware::HW_MOTOROLA_UA_STR return BeEF::Core::Constants::Hardware::HW_HTC_IMG if ua_string.include? BeEF::Core::Constants::Hardware::HW_HTC_UA_STR return BeEF::Core::Constants::Hardware::HW_GOOGLE_IMG if ua_string.include? BeEF::Core::Constants::Hardware::HW_GOOGLE_UA_STR - return BeEF::Core::Constants::Hardware::HW_ERICSSON_IMG if ua_string.include? BeEF::Core::Constants::Hardware::HW_ERICSSON_UA_STR + return BeEF::Core::Constants::Hardware::HW_ERICSSON_IMG if ua_string.include? BeEF::Core::Constants::Hardware::HW_ERICSSON_UA_STR BeEF::Core::Constants::Hardware::HW_UNKNOWN_IMG diff --git a/core/main/models/hookedbrowser.rb b/core/main/models/hookedbrowser.rb index 0297dc6df..b3b9116f4 100644 --- a/core/main/models/hookedbrowser.rb +++ b/core/main/models/hookedbrowser.rb @@ -43,8 +43,7 @@ module Models # @return [String] String constant containing browser icon path def browser_icon agent = JSON.parse(self.httpheaders)['user-agent'].to_s || nil -puts 'A'*100 - + return BeEF::Extension::AdminUI::Constants::Agents::AGENT_UNKNOWN_IMG if agent.nil? return BeEF::Extension::AdminUI::Constants::Agents::AGENT_IE_IMG if agent.include? BeEF::Extension::AdminUI::Constants::Agents::AGENT_IE_UA_STR return BeEF::Extension::AdminUI::Constants::Agents::AGENT_FIREFOX_IMG if agent.include? BeEF::Extension::AdminUI::Constants::Agents::AGENT_FIREFOX_UA_STR @@ -55,7 +54,8 @@ puts 'A'*100 return BeEF::Extension::AdminUI::Constants::Agents::AGENT_OPERA_IMG if agent.include? BeEF::Extension::AdminUI::Constants::Agents::AGENT_OPERA_UA_STR return BeEF::Extension::AdminUI::Constants::Agents::AGENT_MIDORI_IMG if agent.include? BeEF::Extension::AdminUI::Constants::Agents::AGENT_MIDORI_UA_STR return BeEF::Extension::AdminUI::Constants::Agents::AGENT_ODYSSEY_IMG if agent.include? BeEF::Extension::AdminUI::Constants::Agents::AGENT_ODYSSEY_UA_STR - + return BeEF::Extension::AdminUI::Constants::Agents::AGENT_BRAVE_IMG if agent.include? BeEF::Extension::AdminUI::Constants::Agents::AGENT_BRAVE_UA_STR + BeEF::Extension::AdminUI::Constants::Agents::AGENT_UNKNOWN_IMG end diff --git a/extensions/admin_ui/constants/agents.rb b/extensions/admin_ui/constants/agents.rb index 302af0072..d63e9ae8f 100644 --- a/extensions/admin_ui/constants/agents.rb +++ b/extensions/admin_ui/constants/agents.rb @@ -30,6 +30,8 @@ module Constants AGENT_MIDORI_IMG = 'midori.png' AGENT_ODYSSEY_UA_STR = 'Odyssey Web Browser' AGENT_ODYSSEY_IMG = 'odyssey.png' + AGENT_BRAVE_UA_STR = 'brave' + AGENT_BRAVE_IMG = 'brave.png' end diff --git a/extensions/admin_ui/media/images/icons/brave.png b/extensions/admin_ui/media/images/icons/brave.png new file mode 100644 index 0000000000000000000000000000000000000000..2782cc14ccd4c4a92447938ad40023aa56180b57 GIT binary patch literal 4388 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