From 7686d55b4bddabdf7ff44bcf981c74b49687f09a Mon Sep 17 00:00:00 2001 From: bcoles Date: Tue, 26 Jun 2012 18:52:03 +0930 Subject: [PATCH] Added hardware detection for HTC, Motorola, Google Nexus, Nokia, Sony Ericsson --- core/main/client/hardware.js | 37 +++++++++++++----- core/main/constants/hardware.rb | 26 +++++++++--- core/main/models/browserdetails.rb | 7 ++++ .../admin_ui/media/images/icons/htc.ico | Bin 0 -> 1150 bytes .../admin_ui/media/images/icons/motorola.png | Bin 0 -> 3686 bytes .../admin_ui/media/images/icons/nexus.png | Bin 0 -> 7504 bytes .../admin_ui/media/images/icons/nokia.ico | Bin 0 -> 1150 bytes .../media/images/icons/sony_ericsson.png | Bin 0 -> 4643 bytes 8 files changed, 55 insertions(+), 15 deletions(-) create mode 100644 extensions/admin_ui/media/images/icons/htc.ico create mode 100644 extensions/admin_ui/media/images/icons/motorola.png create mode 100644 extensions/admin_ui/media/images/icons/nexus.png create mode 100644 extensions/admin_ui/media/images/icons/nokia.ico create mode 100644 extensions/admin_ui/media/images/icons/sony_ericsson.png diff --git a/core/main/client/hardware.js b/core/main/client/hardware.js index f498c53ac..3376aceea 100644 --- a/core/main/client/hardware.js +++ b/core/main/client/hardware.js @@ -49,25 +49,42 @@ beef.hardware = { return (this.ua.match('Kindle')) ? true : false; }, + isHtc: function() { + return (this.ua.match('HTC')) ? true : false; + }, + + isEricsson: function() { + return (this.ua.match('Ericsson')) ? true : false; + }, + + isNokia: function() { + return (this.ua.match('Nokia')) ? true : false; + }, + + isMotorola: function() { + return (this.ua.match('Motorola')) ? true : false; + }, + + isGoogle: function() { + return (this.ua.match('Nexus One')) ? true : false; + }, + getName: function() { - if(this.isNokia()) { - - if (this.ua.indexOf('Maemo Browser') != -1) return 'Maemo'; - if (this.ua.match('(SymbianOS)|(Symbian OS)')) return 'SymbianOS'; - if (this.ua.indexOf('Symbian') != -1) return 'Symbian'; - - //return 'Nokia'; - } - + if (this.isNokia()) return 'Nokia'; if (this.isWinPhone()) return 'Windows Phone'; if (this.isBlackBerry()) return 'BlackBerry'; if (this.isIphone()) return 'iPhone'; if (this.isIpad()) return 'iPad'; if (this.isIpod()) return 'iPod'; if (this.isKindle()) return 'Kindle'; + if (this.isHtc()) return 'HTC'; + if (this.isMotorola()) return 'Motorola'; + if (this.isZune()) return 'Zune'; + if (this.isGoogle()) return 'Google'; + if (this.isEricsson()) return 'Ericsson'; - return 'unknown'; + return 'Unknown'; } }; diff --git a/core/main/constants/hardware.rb b/core/main/constants/hardware.rb index 63958a210..12386ef78 100644 --- a/core/main/constants/hardware.rb +++ b/core/main/constants/hardware.rb @@ -30,15 +30,23 @@ module Constants HW_IPOD_IMG = 'ipod.jpg' HW_BLACKBERRY_UA_STR = 'BlackBerry' HW_BLACKBERRY_IMG = 'blackberry.png' - HW_ANDROID_UA_STR = 'Android' - HW_ANDROID_IMG = 'android.png' HW_WINPHONE_UA_STR = 'Windows Phone' HW_WINPHONE_IMG = 'win.png' HW_ZUNE_UA_STR = 'ZuneWP7' HW_ZUNE_IMG = 'zune.gif' HW_KINDLE_UA_STR = 'Kindle' HW_KINDLE_IMG = 'kindle.png' - HW_ALL_UA_STR = 'All' + HW_NOKIA_UA_STR = 'Nokia' + HW_NOKIA_IMG = 'nokia.ico' + HW_HTC_UA_STR = 'HTC' + HW_HTC_IMG = 'htc.ico' + HW_MOTOROLA_UA_STR = 'motorola' + HW_MOTOROLA_IMG = 'motorola.png' + HW_GOOGLE_UA_STR = 'Nexus One' + HE_GOOGLE_IM = 'nexus.png' + HW_ERICSSON_UA_STR = 'Ericsson' + HW_ERICSSON_IMG = 'sony_ericsson.png' + HW_ALL_UA_STR = 'All' # Attempt to match operating system string to constant # @param [String] name Name of operating system @@ -53,14 +61,22 @@ module Constants HW_IPOD_UA_STR when /blackberry/ HW_BLACKBERRY_UA_STR - when /android/ - HW_ANDROID_UA_STR when /windows phone/ HW_WINPHONE_UA_STR when /zune/ HW_ZUNE_UA_STR when /kindle/ HW_KINDLE_UA_STR + when /nokia/ + HW_NOKIA_UA_STR + when /motorola/ + HW_MOTOROLA_UA_STR + when /htc/ + HW_HTC_UA_STR + when /google/ + HW_GOOGLE_UA_STR + when /ericsson/ + HW_ERICSSON_UA_STR else 'ALL' end diff --git a/core/main/models/browserdetails.rb b/core/main/models/browserdetails.rb index ae3868691..3ac2cd2af 100644 --- a/core/main/models/browserdetails.rb +++ b/core/main/models/browserdetails.rb @@ -118,9 +118,16 @@ module Models return BeEF::Core::Constants::Hardware::HW_WINPHONE_IMG if ua_string.include? BeEF::Core::Constants::Hardware::HW_WINPHONE_UA_STR return BeEF::Core::Constants::Hardware::HW_ZUNE_IMG if ua_string.include? BeEF::Core::Constants::Hardware::HW_ZUNE_UA_STR + return BeEF::Core::Constants::Hardware::HW_BLACKBERRY_IMG if ua_string.include? BeEF::Core::Constants::Hardware::HW_BLACKBERRY_UA_STR return BeEF::Core::Constants::Hardware::HW_IPHONE_IMG if ua_string.include? BeEF::Core::Constants::Hardware::HW_IPHONE_UA_STR return BeEF::Core::Constants::Hardware::HW_IPAD_IMG if ua_string.include? BeEF::Core::Constants::Hardware::HW_IPAD_UA_STR return BeEF::Core::Constants::Hardware::HW_IPOD_IMG if ua_string.include? BeEF::Core::Constants::Hardware::HW_IPOD_UA_STR + return BeEF::Core::Constants::Hardware::HW_KINDLE_IMG if ua_string.include? BeEF::Core::Constants::Hardware::HW_KINDLE_UA_STR + return BeEF::Core::Constants::Hardware::HW_NOKIA_IMG if ua_string.include? BeEF::Core::Constants::Hardware::HW_NOKIA_UA_STR + 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 BeEF::Core::Constants::Hardware::HW_UNKNOWN_IMG diff --git a/extensions/admin_ui/media/images/icons/htc.ico b/extensions/admin_ui/media/images/icons/htc.ico new file mode 100644 index 0000000000000000000000000000000000000000..a4b722423faa4adf28197043c67f50455ca650ab GIT binary patch literal 1150 zcmZQzU<5(|0R|wcz>vYhz#zuJz@P!dKp~(AL>x%r1UK$I_)iW78Ay)4Q9YR9ZN8@w z9tXJCpl}1p!7y?-;?jdl99b{ST$mUxJ;>rPwJ;ha2g5M)V0;*jE)LTR6G!Hg$_Cj% Ys-EGXo{~HW(%Zne#*u-6JPgtc06@2SQ~&?~ literal 0 HcmV?d00001 diff --git a/extensions/admin_ui/media/images/icons/motorola.png b/extensions/admin_ui/media/images/icons/motorola.png new file mode 100644 index 0000000000000000000000000000000000000000..fee6d6e654c6a3aa9afd27a2482037521835c958 GIT binary patch literal 3686 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 r>t!xJIHWR|5u3GA8^ZkD8oY~zo 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 literal 0 HcmV?d00001 diff --git a/extensions/admin_ui/media/images/icons/sony_ericsson.png b/extensions/admin_ui/media/images/icons/sony_ericsson.png new file mode 100644 index 0000000000000000000000000000000000000000..1dab4a8d22933dfd98c9440fe9913949378da4e9 GIT binary patch literal 4643 zcmV+;65Q>HP)LM|wW1NM3@H|Z)dAeguZ@TZEbN19f z&bja2N5YK%bg#A7KIabS{yyjX`~CKB?{ft&Q`@s=&r%_RR|vsbNU=x=u>dbRg`k8K zLLzEjFb-ljf+wY5lUM5DzRu1aFURkTm-6K&pM0{{IQOPdMQ;eB;7loH6(JCLhkO(Q zA&&QRe!_e4GvIb#4DT3dYdiE}ZFx~3zy9^F=Xs&t9|qyuqbL}NqKGgE2~6gXoq*i;;Dbv-A+L*~!Ue@bfzE0>RyejE*v5~4`%@m+@i03^_fe})fJvKQQ~~q5 zhWN|ZT*+l;{4sT%%z*feq5%N;=)FgHw;@pSecj#NdtWw?yEkq;PpR-5g)kiIsJ4R= z+`D}fH$L$1Y~A??I15n;lmekzt}L?AB#0p7hgW@r^H-k5v`)wgW(=PV0t`BUu>)wl<6F&^38fq`MvGu?L*oIfxyu=#lQ9ydmAyX^;kqTn}Gip9l+ zLc~Aa`6cdt=ng1Wp`!yT6>tumV`2Y7ZhH5pdF;q`HXOK*a%UAC32NRlX*82ob10dn z>Wkce-e>5qbYZiki*s&vw>FQBJVu(a(m38OygPGfXz0lEQpAv4UzCN#Q5bRkT{m#| z#_z(ME*KhwQZWl|>o}pmhu5FAp0y{fpgI=vc=$Mp^-SsnV;!l3#DcJft5#jayh=B9 zXJ!<6p-sRt>-Ylj_UBaOYq#9?#xMxK)7jR^JzMVPi{H8idV65`B8Va|hA0YosoE?&I&htH_U_1Ay9>Rj>xT!?MziXV%=(d6oIvLb#?I9uR51?gUcw$ zDq*oeY7>g_D2MBZ`0=j0m`LkXRDqgJX%EYM_{6s}ztl(FB+WDnS!!wk8C|DRH*sTP$Vv|}J1hl)Kq{mVcn{iYj4`u} z_cTix=d$jdTSE}M64*Ek#Ay50Kn0{}o$X=_mMlRQLL8nIogJ*}ol8w?%1V>in8|b! z=PWf{BXJ4ZX;QE8zyK%)mr4pr9gZrq14@!;DUip^yxA_R`Zf zhtz1|G|A&61G3g(ot;tArtVF%Kt6H(^;Ms8u6G`7G!sKT1XWK_C;}x}-`kCLmP8n8 zW}2~h6z4sWib!q3STe?VI*#*_^X8t*vg%S2o6xAW#EhqV3Nj>8A&-we#rL1MpSyp% zi6{5$VC={!YTD4>K9@f_^=$s^58lf1z6DIhSv(&z=QxLP`qdjZ?kt{r?xHvVP}6#q z57a#C9L1o(K<6MMYJ`%C7$`=xg_0?wQ9=>u7&yYTsT0Tm?KI=*I0aEcL2c$H98Rgsd92YD%zzpG0}+Bk}MEA%@=oW;0xRC;K1;1hy?^?PzjKNH(BKz z1t3d|PL6WbZGX?`)EFN)=TDio8H}+eA1%(gK>Kv<42ZMt#D-k4H!RWZyiPA+W7|_$ zkuYw-Bk;nLdPB`CN+P09^s+Qs!az8Hu##BE1VJ#Pg3MLeGP#RSZu>XxIrs>q9%K<* zniZACHw#P}H5Q-(C`Nqht{XU^bAUfQ@eJxF#u}R`l8@T>6K7(?dbiLzM_@h9I%1_+ zSL>tSSJ+qPLmc>{D$U|EjJC5w;&c`?LhLvYytif7?F}Zsg+tmVME5dm8 z6{q>%QjN36264(!mnj7cB@+>eh`=ixj#wmwCYVtGKnh7H6!kRbdxsw2)`R!6FB!ul z(cWORfwa+WHZ~xP&C;`!O^AHvrw~CgV&kq~alz6vFxsMx!5D)z7GrFA2E@25M|S~)Nix!V<5?U zD}=V0n`zs;sHB-Jq=YDhQi<&o2Nh357%fQh*W=AP9s+qZx5yJQ45b!Q=^^Oh-ta!+Sy9S*E=q(FS4-v4Pm;KsM`X zKDrh)Xi+3kPzb>ks9~9mYqSL=jLBWgShUr(7DdcaV-;aSCN++&g@ZgA46`t4=Trun zM<-QR1PgTx!)~0N$szW;qfGiZuahLH_ax2`JDZgniGg|!ljx>0jjnAjZw??uQ;|ZL zbseHTBwAAdr9pa6>MW1Cr+75ji&7CK5g;A7yq;3X ztiA%Q_h@g>-eHWzoBVDkEs7)t>Mh4fUQ>?k%he{cW5hMu}SwVS8l4iA-Hu-4X z?xrHfZP&t3NJ84D1CCUukq$f#5rY>F8)~Kki;w~-6;c4+0v0z@nfh#_AoS*W0L)~o%!i|{c61QnLq%IuCGwKg=otuO4A!}AEsFSG7-cA?0o{`!+bRa- zzzUBSWLrIvfq)hq33RQsv&KE#R79n}ktR5h24>)dqh)?J*JHfPE?x@ZP%SeiP+7D~IeU@Z z3SxZ@;_?iYXQ`ycwHgpo9P3s>fOAxb`YBe*=&2fM6tc27K$>Q1SYy!{%$|BNd<^o1 z)i5X-!9)zTBvWT9$$Q!|rclezYiah`S_;!Gy_V(> zGIuF?EDWG3CAyc)Cz1jg2nGw?ELUCB(mGmeQmxV2ppE&jkG$g@&8!8GTK64-76MR?rdYa7DFI7 zoB32sz?6-#*5$5can63LVgC$BlurIc`^wHZ6pNM}tg^Mg!oiLh=>_FVkzjEzW53)5 zp#qh!kQ=kFCo?kN8OUJr7%{e4M=3cwGqoNI0oG9(>Y-!lJe;+NKrp1*Sf30~Gcl>v zS@~`)TAOY4a(I8ke$_a5>(A~-*?f~pPK)nBJgDY}HBx2v7dI3{)-Y8HHr z?9>S8#LP~u#^&kucy1(TkIoUysnWB4B`S -M?%Po2PmdK-0{Zhz(Tl3z(-UGek1!SkEI0rgKNV^I-aq$3^Vv)VO4&vi{5!Kj#66As0;zo_TE@X>K z$(EY{s=t%!+9ib562f|{g1M%|1tas3sYg50EK97#T6e|YedI%%pAiJ0tL?R0s$EmB z^!P;>=sa8?>Je1C0@?^@lL03!8f3+i0Y)dLIXXI#Ta(95s|yL)1Um-6Loq}y>!En^ zQ07h!tb}$~;B^NU&{+?NU1Q#GSYt3&-}&jk{i}~X-R@&RcJIF5ty;V0LE+>j4p&A) zVI-i^9njTNpj`x%gye*txtzIrIYa%uOr`+G@Oi?Pst4#NEfU_ZdL|E`Im> zu8@c?Wv&1M$>54MR-e6qfqA`1r?R!PGZ+$LS7R(b%Hi51Bhz(`Br)SwGl6APz_7O* z&MMZdCi51AqvDGE{?Q@UkM^OgAjQsXXglYy&f%=P^xA*?)Hk2W)?-|&wLSXq=3lH@ zv-U8a3xvp`dVC~i-xK55SkOPWkKXPciiI+s=7Pt0jSMm+yb>4zv9rX^G35+SWB}zf zMlo2}0Z(ttU6&AROf&KE)yg%s%2 zu=mMBY}>kr!}}+YUJ->MK_v0gVP#6{H3^OwL)}|qEOqA*iKK75!rGC!oU?zBRij;m zDb$_DxaJOtu?DTpm~*`C%b&aY*5|VGSzW8Oz2&ki)=24Y6hgeB@tSiUYb=3MRNKn5 zcb6%32FS8S2PrX@nz6*GL)Sr0E6VkNavBhLfsr1Q=kCTM1)o1^aMu3JdH>$8f9Z2u zo{xRc8wB9OcfG5vA_^Zx@F9UHx4!3HV;5cKPi+-S3Z#%oA&^2KBzOT{Ha1YnAA>ai zFyNe@#Jg*!it_5)KmYmq^R?{-fi&7B@4WI97uY`s-tu&ynG5HC;b{C1C0j2&^Itd| zehSZby%5*j`qk?md!aVHD3C_Gcw2cd%r~p@dM%ft+#&tD^I*w zTV4`Kqg{IGr9~5#f6pP#0?xquB|?ZE@D)5IFK_}950e58dBirHe@F=bKUL)(x#5Nz z^h>qjWdUilH(!2vN95E=-uZ<{7JFnDo_4??m=ew(La@U~v8xbIK6cA3x71$F-~WHn Z{tv-P$)1TCTC4y7002ovPDHLkV1h#r*JJ