From 2d7cfd73f4091d228cc5148a076bdeaf6e34b522 Mon Sep 17 00:00:00 2001 From: Greg Molnar Date: Wed, 23 Aug 2017 13:37:38 +0200 Subject: [PATCH] detect microsoft edge --- core/main/client/browser.js | 49 ++++++++++++------ core/main/constants/browsers.rb | 3 ++ core/main/models/browserdetails.rb | 1 + core/main/models/hookedbrowser.rb | 1 + extensions/admin_ui/constants/agents.rb | 2 + .../admin_ui/media/images/icons/edge.png | Bin 0 -> 1053 bytes 6 files changed, 40 insertions(+), 16 deletions(-) create mode 100644 extensions/admin_ui/media/images/icons/edge.png diff --git a/core/main/client/browser.js b/core/main/client/browser.js index f294787ec..4220c4948 100644 --- a/core/main/client/browser.js +++ b/core/main/client/browser.js @@ -109,6 +109,15 @@ beef.browser = { return !!window.XMLHttpRequest && !window.chrome && !window.opera && !!document.documentMode && !!window.performance && typeof navigator.msMaxTouchPoints !== "undefined" && typeof document.selection === "undefined" && typeof document.createStyleSheet === "undefined" && typeof window.createPopup === "undefined" && typeof window.XDomainRequest === "undefined"; }, + /** + * + * Returns true if Edge. + * @example: beef.browser.isEdge() + */ + isEdge: function () { + return !beef.browser.isIE() && !!window.StyleMedia; + }, + /** * Returns true if IE. * @example: beef.browser.isIE() @@ -1261,7 +1270,7 @@ beef.browser = { isC51iOS: function () { return (!window.webkitPerformance && window.navigator.appVersion.match(/CriOS\/(\d+)\./)) && ((parseInt(window.navigator.appVersion.match(/CriOS\/(\d+)\./)[1], 10) == 51) ? true : false); }, - + /** * Returns true if Chrome 52. * @example: beef.browser.isC52() @@ -1269,15 +1278,15 @@ beef.browser = { isC52: function () { return (!!window.chrome && !!window.fetch && !window.webkitPerformance && window.navigator.appVersion.match(/Chrome\/(\d+)\./)) && ((parseInt(window.navigator.appVersion.match(/Chrome\/(\d+)\./)[1], 10) == 52) ? true : false); }, - + /** - * Returns true if Chrome for iOS 52. + * Returns true if Chrome for iOS 52. * @example: beef.browser.isC52iOS() */ isC52iOS: function () { return (!window.webkitPerformance && window.navigator.appVersion.match(/CriOS\/(\d+)\./)) && ((parseInt(window.navigator.appVersion.match(/CriOS\/(\d+)\./)[1], 10) == 52) ? true : false); }, - + /** * Returns true if Chrome 53. * @example: beef.browser.isC53() @@ -1285,7 +1294,7 @@ beef.browser = { isC53: function () { return (!!window.chrome && !!window.fetch && !window.webkitPerformance && window.navigator.appVersion.match(/Chrome\/(\d+)\./)) && ((parseInt(window.navigator.appVersion.match(/Chrome\/(\d+)\./)[1], 10) == 53) ? true : false); }, - + /** * Returns true if Chrome for iOS 53. * @example: beef.browser.isC53iOS() @@ -1293,7 +1302,7 @@ beef.browser = { isC53iOS: function () { return (!window.webkitPerformance && window.navigator.appVersion.match(/CriOS\/(\d+)\./)) && ((parseInt(window.navigator.appVersion.match(/CriOS\/(\d+)\./)[1], 10) == 53) ? true : false); }, - + /** * Returns true if Chrome 54. * @example: beef.browser.isC54() @@ -1301,15 +1310,15 @@ beef.browser = { isC54: function () { return (!!window.chrome && !!window.fetch && !window.webkitPerformance && window.navigator.appVersion.match(/Chrome\/(\d+)\./)) && ((parseInt(window.navigator.appVersion.match(/Chrome\/(\d+)\./)[1], 10) == 54) ? true : false); }, - + /** * Returns true if Chrome for iOS 54. * @example: beef.browser.isC54iOS() */ isC54iOS: function () { return (!window.webkitPerformance && window.navigator.appVersion.match(/CriOS\/(\d+)\./)) && ((parseInt(window.navigator.appVersion.match(/CriOS\/(\d+)\./)[1], 10) == 54) ? true : false); - }, - + }, + /** * Returns true if Chrome 55. * @example: beef.browser.isC55() @@ -1317,15 +1326,15 @@ beef.browser = { isC55: function () { return (!!window.chrome && !!window.fetch && !window.webkitPerformance && window.navigator.appVersion.match(/Chrome\/(\d+)\./)) && ((parseInt(window.navigator.appVersion.match(/Chrome\/(\d+)\./)[1], 10) == 55) ? true : false); }, - + /** * Returns true if Chrome for iOS 55. * @example: beef.browser.isC55iOS() */ isC55iOS: function () { return (!window.webkitPerformance && window.navigator.appVersion.match(/CriOS\/(\d+)\./)) && ((parseInt(window.navigator.appVersion.match(/CriOS\/(\d+)\./)[1], 10) == 55) ? true : false); - }, - + }, + /** * Returns true if Chrome 56. * @example: beef.browser.isC56() @@ -1333,7 +1342,7 @@ beef.browser = { isC56: function () { return (!!window.chrome && !!window.fetch && !window.webkitPerformance && window.navigator.appVersion.match(/Chrome\/(\d+)\./)) && ((parseInt(window.navigator.appVersion.match(/Chrome\/(\d+)\./)[1], 10) == 56) ? true : false); }, - + /** * Returns true if Chrome for iOS 56. * @example: beef.browser.isC56iOS() @@ -1341,7 +1350,7 @@ beef.browser = { isC56iOS: function () { return (!window.webkitPerformance && window.navigator.appVersion.match(/CriOS\/(\d+)\./)) && ((parseInt(window.navigator.appVersion.match(/CriOS\/(\d+)\./)[1], 10) == 56) ? true : false); }, - + /** * Returns true if Chrome 57. * @example: beef.browser.isC57() @@ -1546,7 +1555,6 @@ beef.browser = { C57iOS: this.isC57iOS(), // Chrome 57 on iOS C58: this.isC58(), // Chrome 58 C58iOS: this.isC58iOS(), // Chrome 58 on iOS - C: this.isC(), // Chrome any version FF2: this.isFF2(), // Firefox 2 @@ -2016,7 +2024,7 @@ beef.browser = { } ; // Chrome 58 for iOS - + if (this.isFF2()) { return '2' } @@ -2267,6 +2275,11 @@ beef.browser = { } ; // Internet Explorer 11 + if (this.isEdge()) { + return '1' + } + ; // Microsoft Edge + if (this.isS4()) { return '4' } @@ -2333,6 +2346,10 @@ beef.browser = { return 'IE' } ; // Internet Explorer any version + if (this.isEdge()) { + return 'E' + } + ; // Microsoft Edge any version if (this.isO()) { return 'O' } diff --git a/core/main/constants/browsers.rb b/core/main/constants/browsers.rb index 6e649dec0..628c6d3c2 100644 --- a/core/main/constants/browsers.rb +++ b/core/main/constants/browsers.rb @@ -13,6 +13,7 @@ module Constants FF = 'FF' # Firefox M = 'M' # Mozilla IE = 'IE' # Internet Explorer + E = 'E' # Microsoft Edge S = 'S' # Safari K = 'K' # Konqueror C = 'C' # Chrome @@ -27,6 +28,7 @@ module Constants FRIENDLY_FF_NAME = 'Firefox' FRIENDLY_M_NAME = 'Mozilla' FRIENDLY_IE_NAME = 'Internet Explorer' + FRIENDLY_E_NAME = 'Microsoft Edge' FRIENDLY_S_NAME = 'Safari' FRIENDLY_K_NAME = 'Konqueror' FRIENDLY_C_NAME = 'Chrome' @@ -46,6 +48,7 @@ module Constants when FF; return FRIENDLY_FF_NAME when M ; return FRIENDLY_M_NAME when IE; return FRIENDLY_IE_NAME + when E ; return FRIENDLY_E_NAME when S ; return FRIENDLY_S_NAME when K ; return FRIENDLY_K_NAME when C ; return FRIENDLY_C_NAME diff --git a/core/main/models/browserdetails.rb b/core/main/models/browserdetails.rb index 5f290862e..34fb73ae2 100644 --- a/core/main/models/browserdetails.rb +++ b/core/main/models/browserdetails.rb @@ -67,6 +67,7 @@ module Models browser = get(session_id, 'BrowserName') return BeEF::Extension::AdminUI::Constants::Agents::AGENT_IE_IMG if browser.eql? 'IE' # Internet Explorer + return BeEF::Extension::AdminUI::Constants::Agents::AGENT_EDGE_IMG if browser.eql? 'E' # Microsoft Edge return BeEF::Extension::AdminUI::Constants::Agents::AGENT_FIREFOX_IMG if browser.eql? 'FF' # Firefox return BeEF::Extension::AdminUI::Constants::Agents::AGENT_SAFARI_IMG if browser.eql? 'S' # Safari return BeEF::Extension::AdminUI::Constants::Agents::AGENT_CHROME_IMG if browser.eql? 'C' # Chrome diff --git a/core/main/models/hookedbrowser.rb b/core/main/models/hookedbrowser.rb index c1b26a06c..7f3d3488a 100644 --- a/core/main/models/hookedbrowser.rb +++ b/core/main/models/hookedbrowser.rb @@ -46,6 +46,7 @@ module Models 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_EDGE_IMG if agent.include? BeEF::Extension::AdminUI::Constants::Agents::AGENT_EDGE_UA_STR return BeEF::Extension::AdminUI::Constants::Agents::AGENT_FIREFOX_IMG if agent.include? BeEF::Extension::AdminUI::Constants::Agents::AGENT_FIREFOX_UA_STR return BeEF::Extension::AdminUI::Constants::Agents::AGENT_MOZILLA_IMG if agent.include? BeEF::Extension::AdminUI::Constants::Agents::AGENT_MOZILLA_UA_STR return BeEF::Extension::AdminUI::Constants::Agents::AGENT_SAFARI_IMG if agent.include? BeEF::Extension::AdminUI::Constants::Agents::AGENT_SAFARI_UA_STR diff --git a/extensions/admin_ui/constants/agents.rb b/extensions/admin_ui/constants/agents.rb index 1f9ee133e..cb8dce5cd 100644 --- a/extensions/admin_ui/constants/agents.rb +++ b/extensions/admin_ui/constants/agents.rb @@ -18,6 +18,8 @@ module Constants AGENT_MOZILLA_IMG = 'mozilla.png' AGENT_IE_UA_STR = 'MSIE' AGENT_IE_IMG = 'msie.png' + AGENT_EDGE_UA_STR = 'Edge' + AGENT_EDGE_IMG = 'edge.png' AGENT_SAFARI_UA_STR = 'Safari' AGENT_SAFARI_IMG = 'safari.png' AGENT_KONQ_UA_STR = 'Konqueror' diff --git a/extensions/admin_ui/media/images/icons/edge.png b/extensions/admin_ui/media/images/icons/edge.png new file mode 100644 index 0000000000000000000000000000000000000000..4f0383268835fd062f1901e507b913dd712a5659 GIT binary patch literal 1053 zcmV+&1mgRNP)Wyp6vzLMw2fp{ZCX&P*vlY@B%h%23F@4n>J4n56tc6t3*-V(PGI!}aZX_M1Quxo zU0Pj9NEcC77EF<^7)DAcnjeo8Y1e?c<#6Wzd!I8y!UKQkf$PU3z)mL<5(#5C5LL7#88ZwLM_`e%S=^5fPMd`NKSA(t5L- z`MYUvcPjsIb!2XUAI*=A4a`qhtei*10%X#Cd7S6-TmVM<@`%8lJPXEs!;As+&EF<( zo{zH3n;F0`?NcJOvMeGV%RHT9V=qg7hyhfRKHb#L*AAI98WmEky_)>-a*#Guy%z(N zYWc9z44x1HRNK}8KyOnlVu5+!5)Cwurb`Q|WY^iNK;sqxze=p?k6|8OJKkPeg-Qi5 zUjMyK?#%^=Dz^*;{z8mC>sviZ^7(Ul&KZEZ2!#3F_@sW2G&UWeZTG{LWAGOMz1fY| zTUtn2n#kS$)U7Fjv5(*IHnkxUJ(EDNwz-pJoJ4?y#jaKsVtlxE+*Z)Fs;q)}Z*o!- zH8a)xNaJ%60PyFeTZ^rF$p8WCE312;R?xybRN2??CH4-^3^&Vi)*&mQebPf$gO4$e^s00jH?qJ=N#69WYHMz^&v zPp=(sC++l9280+uu=zS0cWbZ85ScWm7(h*8nARxiB*l#W%yAFb^~B;J^;Tk#Yygt2 zgt`M|?J!SLE8%b*bxrA?z$Dcz6TspEcSN8c(n3X@qyVk2ZYpMuYejiwA@~`Hn#A6I zc$-oc~bu})#8WD<(8de%WmQY$lfAKjG6yx8x(R?7uhrAG_ zd0;7M(Hr_@g;VJOOOT=yTOA?6)RC0pOl34F6#SCtIURua^Mn;M|3kpp92@;o{tsk{ zWBX8S literal 0 HcmV?d00001