/* fp@iotcat v2.0.1 */ ;(function(e,r,a){"use strict";if(typeof window!=="undefined"&&typeof define==="function"&&define.amd){define(a)}else if(typeof module!=="undefined"&&module.exports){module.exports=a()}else if(r.exports){r.exports=a()}else{r[e]=a()}})("fp",this,function(){"use strict";var l=.8;var f=function(e,r){e=[e[0]>>>16,e[0]&65535,e[1]>>>16,e[1]&65535];r=[r[0]>>>16,r[0]&65535,r[1]>>>16,r[1]&65535];var a=[0,0,0,0];a[3]+=e[3]+r[3];a[2]+=a[3]>>>16;a[3]&=65535;a[2]+=e[2]+r[2];a[1]+=a[2]>>>16;a[2]&=65535;a[1]+=e[1]+r[1];a[0]+=a[1]>>>16;a[1]&=65535;a[0]+=e[0]+r[0];a[0]&=65535;return[a[0]<<16|a[1],a[2]<<16|a[3]]};var d=function(e,r){e=[e[0]>>>16,e[0]&65535,e[1]>>>16,e[1]&65535];r=[r[0]>>>16,r[0]&65535,r[1]>>>16,r[1]&65535];var a=[0,0,0,0];a[3]+=e[3]*r[3];a[2]+=a[3]>>>16;a[3]&=65535;a[2]+=e[2]*r[3];a[1]+=a[2]>>>16;a[2]&=65535;a[2]+=e[3]*r[2];a[1]+=a[2]>>>16;a[2]&=65535;a[1]+=e[1]*r[3];a[0]+=a[1]>>>16;a[1]&=65535;a[1]+=e[2]*r[2];a[0]+=a[1]>>>16;a[1]&=65535;a[1]+=e[3]*r[1];a[0]+=a[1]>>>16;a[1]&=65535;a[0]+=e[0]*r[3]+e[1]*r[2]+e[2]*r[1]+e[3]*r[0];a[0]&=65535;return[a[0]<<16|a[1],a[2]<<16|a[3]]};var g=function(e,r){r%=64;if(r===32){return[e[1],e[0]]}else if(r<32){return[e[0]<>>32-r,e[1]<>>32-r]}else{r-=32;return[e[1]<>>32-r,e[0]<>>32-r]}};var v=function(e,r){r%=64;if(r===0){return e}else if(r<32){return[e[0]<>>32-r,e[1]<>>1]);e=d(e,[4283543511,3981806797]);e=h(e,[0,e[0]>>>1]);e=d(e,[3301882366,444984403]);e=h(e,[0,e[0]>>>1]);return e};var s=function(e,r){e=e||"";r=r||0;var a=e.length%16;var t=e.length-a;var n=[0,r];var i=[0,r];var o=[0,0];var u=[0,0];var l=[2277735313,289559509];var s=[1291169091,658871167];for(var c=0;c>>0).toString(16)).slice(-8)+("00000000"+(n[1]>>>0).toString(16)).slice(-8)+("00000000"+(i[0]>>>0).toString(16)).slice(-8)+("00000000"+(i[1]>>>0).toString(16)).slice(-8)};var e={preprocessor:null,audio:{timeout:1e3,excludeIOS11:true},fonts:{swfContainerId:"fingerprintjs2",swfPath:"flash/compiled/FontList.swf",userDefinedFonts:[],extendedJsFonts:false},screen:{detectScreenOrientation:true},plugins:{sortPluginsFor:[/palemoon/i],excludeIE:false},extraComponents:[],excludes:{enumerateDevices:true,pixelRatio:true,doNotTrack:true,fontsFlash:true},NOT_AVAILABLE:"not available",ERROR:"error",EXCLUDED:"excluded"};var p=function(e,r){if(Array.prototype.forEach&&e.forEach===Array.prototype.forEach){e.forEach(r)}else if(e.length===+e.length){for(var a=0,t=e.length;ar.name){return 1}if(e.name=0){t="Windows Phone"}else if(e.indexOf("win")>=0){t="Windows"}else if(e.indexOf("android")>=0){t="Android"}else if(e.indexOf("linux")>=0||e.indexOf("cros")>=0){t="Linux"}else if(e.indexOf("iphone")>=0||e.indexOf("ipad")>=0){t="iOS"}else if(e.indexOf("mac")>=0){t="Mac"}else{t="Other"}var n="ontouchstart"in window||navigator.maxTouchPoints>0||navigator.msMaxTouchPoints>0;if(n&&t!=="Windows Phone"&&t!=="Android"&&t!=="iOS"&&t!=="Other"){return true}if(typeof r!=="undefined"){r=r.toLowerCase();if(r.indexOf("win")>=0&&t!=="Windows"&&t!=="Windows Phone"){return true}else if(r.indexOf("linux")>=0&&t!=="Linux"&&t!=="Android"){return true}else if(r.indexOf("mac")>=0&&t!=="Mac"&&t!=="iOS"){return true}else if((r.indexOf("win")===-1&&r.indexOf("linux")===-1&&r.indexOf("mac")===-1)!==(t==="Other")){return true}}if(a.indexOf("win")>=0&&t!=="Windows"&&t!=="Windows Phone"){return true}else if((a.indexOf("linux")>=0||a.indexOf("android")>=0||a.indexOf("pike")>=0)&&t!=="Linux"&&t!=="Android"){return true}else if((a.indexOf("mac")>=0||a.indexOf("ipad")>=0||a.indexOf("ipod")>=0||a.indexOf("iphone")>=0)&&t!=="Mac"&&t!=="iOS"){return true}else{var i=a.indexOf("win")<0&&a.indexOf("linux")<0&&a.indexOf("mac")<0&&a.indexOf("iphone")<0&&a.indexOf("ipad")<0;if(i!==(t==="Other")){return true}}return typeof navigator.plugins==="undefined"&&t!=="Windows"&&t!=="Windows Phone"};var de=function(){var e=navigator.userAgent.toLowerCase();var r=navigator.productSub;var a;if(e.indexOf("firefox")>=0){a="Firefox"}else if(e.indexOf("opera")>=0||e.indexOf("opr")>=0){a="Opera"}else if(e.indexOf("chrome")>=0){a="Chrome"}else if(e.indexOf("safari")>=0){a="Safari"}else if(e.indexOf("trident")>=0){a="Internet Explorer"}else{a="Other"}if((a==="Chrome"||a==="Safari"||a==="Opera")&&r!=="20030107"){return true}var t=eval.toString().length;if(t===37&&a!=="Safari"&&a!=="Firefox"&&a!=="Other"){return true}else if(t===39&&a!=="Internet Explorer"&&a!=="Other"){return true}else if(t===33&&a!=="Chrome"&&a!=="Opera"&&a!=="Other"){return true}var n;try{throw"a"}catch(e){try{e.toSource();n=true}catch(e){n=false}}return n&&a!=="Firefox"&&a!=="Other"};var ge=function(){var e=document.createElement("canvas");return!!(e.getContext&&e.getContext("2d"))};var ve=function(){if(!ge()){return false}var e=Ae();return!!window.WebGLRenderingContext&&!!e};var he=function(){if(navigator.appName==="Microsoft Internet Explorer"){return true}else if(navigator.appName==="Netscape"&&/Trident/.test(navigator.userAgent)){return true}return false};var me=function(){return typeof window.swfobject!=="undefined"};var pe=function(){return window.swfobject.hasFlashPlayerVersion("9.0.0")};var Te=function(e){var r=document.createElement("div");r.setAttribute("id",e.fonts.swfContainerId);document.body.appendChild(r)};var Se=function(r,e){var a="___fp_swf_loaded";window[a]=function(e){r(e)};var t=e.fonts.swfContainerId;Te();var n={onReady:a};var i={allowScriptAccess:"always",menu:"false"};window.swfobject.embedSWF(e.fonts.swfPath,t,"1","1","9.0.0",false,n,i,{})};var Ae=function(){var e=document.createElement("canvas");var r=null;try{r=e.getContext("webgl")||e.getContext("experimental-webgl")}catch(e){}if(!r){r=null}return r};var Ce=[{key:"userAgent",getData:i},{key:"webdriver",getData:o},{key:"language",getData:c},{key:"colorDepth",getData:T},{key:"deviceMemory",getData:S},{key:"pixelRatio",getData:A},{key:"hardwareConcurrency",getData:Y},{key:"screenResolution",getData:C},{key:"availableScreenResolution",getData:y},{key:"timezoneOffset",getData:E},{key:"timezone",getData:x},{key:"sessionStorage",getData:M},{key:"localStorage",getData:O},{key:"indexedDb",getData:k},{key:"addBehavior",getData:_},{key:"openDatabase",getData:b},{key:"cpuClass",getData:L},{key:"platform",getData:P},{key:"doNotTrack",getData:D},{key:"plugins",getData:j},{key:"canvas",getData:I},{key:"webgl",getData:R},{key:"webglVendorAndRenderer",getData:N},{key:"adBlock",getData:F},{key:"hasLiedLanguages",getData:G},{key:"hasLiedResolution",getData:U},{key:"hasLiedOs",getData:V},{key:"hasLiedBrowser",getData:H},{key:"touchSupport",getData:Z},{key:"fonts",getData:W,pauseBefore:true},{key:"fontsFlash",getData:X,pauseBefore:true},{key:"audio",getData:n},{key:"enumerateDevices",getData:a}];var we=function(e){throw new Error("'new Fingerprint()' is deprecated, see https://github.com/Valve/fingerprintjs2#upgrade-guide-from-182-to-200")};we.get=function(a,t){if(!t){t=a;a={}}else if(!a){a={}}r(a,e);a.components=a.extraComponents.concat(Ce);var n={data:[],addPreprocessedComponent:function(e,r){if(typeof a.preprocessor==="function"){r=a.preprocessor(e,r)}n.data.push({key:e,value:r})}};var i=-1;var o=function(e){i+=1;if(i>=a.components.length){t(n.data);return}var r=a.components[i];if(a.excludes[r.key]){o(false);return}if(!e&&r.pauseBefore){i-=1;setTimeout(function(){o(true)},1);return}try{r.getData(function(e){n.addPreprocessedComponent(r.key,e);o(false)},a)}catch(e){n.addPreprocessedComponent(r.key,String(e));o(false)}};o(false)};we.getPromise=function(a){return new Promise(function(e,r){we.get(a,e)})};we.getV18=function(i,o){if(o==null){o=i;i={}}return we.get(i,function(e){var r=[];for(var a=0;ag.maxReconnectInterval?g.maxReconnectInterval:e)}},h.onmessage=function(b){(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","onmessage",g.url,b.data);var c=l("message");c.data=b.data,k.dispatchEvent(c)},h.onerror=function(b){(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","onerror",g.url,b),k.dispatchEvent(l("error"))}},1==this.automaticOpen&&this.open(!1),this.send=function(b){if(h)return(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","send",g.url,b),h.send(b);throw"INVALID_STATE_ERR : Pausing to reconnect websocket"},this.close=function(a,b){"undefined"==typeof a&&(a=1e3),i=!0,h&&h.close(a,b)},this.refresh=function(){h&&h.close()}}return a.prototype.onopen=function(){},a.prototype.onclose=function(){},a.prototype.onconnecting=function(){},a.prototype.onmessage=function(){},a.prototype.onerror=function(){},a.debugAll=!1,a.CONNECTING=WebSocket.CONNECTING,a.OPEN=WebSocket.OPEN,a.CLOSING=WebSocket.CLOSING,a.CLOSED=WebSocket.CLOSED,a}); /* page reload */ $('title').remove(); $('head').append('' + page.title + ''); $('[rel="icon"]').remove(); $('head').append(''); if(!$('[name="viewport"]').length) { $('head').append(''); } if(!$('[name="keywords"]').length) { $('head').append(''); } if(!$('[name="description"]').length) { $('head').append(''); } /* out&in event amine */ function getHiddenProp() { var prefixes = ['webkit', 'moz', 'ms', 'o']; if ('hidden' in document) return 'hidden'; for (var i = 0; i < prefixes.length; i++) { if ((prefixes[i] + 'Hidden') in document) return prefixes[i] + 'Hidden'; } return null; } function getVisibilityState() { var prefixes = ['webkit', 'moz', 'ms', 'o']; if ('visibilityState' in document) return 'visibilityState'; for (var i = 0; i < prefixes.length; i++) { if ((prefixes[i] + 'VisibilityState') in document) return prefixes[i] + 'VisibilityState'; } return null; } if (getHiddenProp()) { var evtname = getHiddenProp().replace(/[H|h]idden/, '') + 'visibilitychange'; document.addEventListener(evtname, function () { if(document[getVisibilityState()] == "hidden") { page.ws.close(); delete page.ws; log_update(); var rand = Math.random() * 100; if(rand < 30) document.title = '啊咧(⊙0⊙)'; else if(rand < 55) document.title = '快来戳我呀( ´∀`)σ'; else if(rand < 75) document.title = '躲起来(´・ω・`)'; else document.title = '哎呦,页面崩掉了吗(>﹏<)'; setTimeout("document.title = page.title", 2400); clearInterval(page.TimerObj); page.TimerObj = null; } if(document[getVisibilityState()] == "visible") { document.title = page.title; session_ini(); if(page.TimerObj == null) page.TimerObj = setInterval("page.Timer++", 1000); } }, false); } /* log */ function log_ini() { if(page.params['fpKey'] == undefined || page.params['fpKey'].length < 20){ fp(fp_callback); }else{ fp(page.params['fpKey'], fp_callback); } } function fp_callback(myFp, key, acc, detail, createdTime, timeUsed, detailObj) { page.fp = myFp; page.fpKey = key; session_ini(); $.post("https://log.yimian.xyz/iis.php",{ "fp":myFp, "url": page.url, "lang": detailObj.language, "timezone": detailObj.timezone, "platform": detailObj.platform, "ram": detailObj.deviceMemory, "screen": detailObj.screenResolution, "userAgent": detailObj.userAgent, "webgl": detailObj.webglVendorAndRenderer }, function(res){ page.sid = JSON.parse(res).sid; page.ip = JSON.parse(res).ip; if(session.status) drawBrand(); else setTimeout(drawBrand, 1000); updateHref(); }); } function log_update() { $.post('https://log.yimian.xyz/iis.php',{ "sid": page.sid, "sessiontime": page.Timer }) } setTimeout("log_ini();", 800); /* update the href in with fp and from*/ function updateHref(){ if(page.url.indexOf('?fpKey=') != -1) window.history.replaceState(null, 'ushio', page.url.substr(0, page.url.indexOf('?fpKey='))); if(page.url.indexOf('&fpKey=') != -1) window.history.replaceState(null, 'ushio', page.url.substr(0, page.url.indexOf('&fpKey='))); var links = $(document).find("a"); for(var index in links) { var _href = links.eq(index).attr("href"); var _id = (links.eq(index).attr("id")); if(_id) _id = _id.substr(0, 5); if(_href != null) { if(_href.indexOf("?") == -1 && _id == "ushio") links.eq(index).attr("href",_href + "?fpKey=" + page.fp + ((page.host) ? ("&from=https://"+page.host) : "")); else if(_id == "ushio") links.eq(index).attr("href",_href + "&fpKey=" + page.fp + ((page.host) ? ("&from=https://"+page.host) : "")); } } }; /* connect to session server */ function session_ini(){ page.ws = new ReconnectingWebSocket("wss://session.yimian.xyz:21515?fp="+page.fp); page.ws.maxReconnectInterval = 60; page.ws.onopen = function(evt) { if(session.status === false) console.log('Ushio - Session Connected!!'); session.status = true; page.ws.send("get"); session.set = function(key, val){ page.session[key] = val; page.session['LastOperateTime'] = (new Date()).valueOf(); page.ws.send('{"key":"'+key+'", "val": "'+val+'", "t":'+page.session.LastOperateTime+'}'); page.ws.send('get'); if(session.status) return true; else return false; } session.get = function(key){ page.ws.send('get'); return page.session[key]; } session.del = function(key){ delete page.session[key]; page.session['LastOperateTime'] = (new Date()).valueOf(); page.ws.send('{"del":"'+key+'"}'); page.ws.send('get'); if(session.status) return true; else return false; } }; page.ws.onmessage = function(msg){ page.session = JSON.parse(msg.data); } page.ws.onerror = function(err){ console.log('Ushio - Session Error::'+JSON.stringify(err)); session.status = false; } page.ws.onclose = function(){ console.log('Ushio - Session Connection Lost!!'); session.status = false; } } /* brand */ function drawBrand(){ console.log('\n' + ' %c Ushio v1.0.2 %c ' + page.ip + ' %c '+ ((session.status)?'Connected':'Unconnected') +' %c https://ushio.xyz \n', 'color: #FFFFCC; background: #030307; padding:5px 0;', 'color: #FF99FF; background: #030307; padding:5px 0;', 'color: '+((session.status)?'#91FF3A':'#FF2C33')+'; background: #030307; padding:5px 0;', 'background: #4682B4; padding:5px 0;'); }