lemonldap-ng/lemonldap-ng-portal/site/htdocs/static/bwr/fingerprintjs2/fingerprint2.min.js

20 lines
39 KiB
JavaScript
Raw Normal View History

2018-09-22 20:18:01 +02:00
/*
* Fingerprintjs2 1.8.0 - Modern & flexible browser fingerprint library v2
* https://github.com/Valve/fingerprintjs2
* Copyright (c) 2015 Valentin Vasilyev (valentin.vasilyev@outlook.com)
* Licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) license.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL VALENTIN VASILYEV BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
(function(name,context,definition){"use strict";if(typeof window.define==="function"&&window.define.amd){window.define(definition)}else if(typeof module!=="undefined"&&module.exports){module.exports=definition()}else if(context.exports){context.exports=definition()}else{context[name]=definition()}})("Fingerprint2",this,function(){"use strict";var Fingerprint2=function(options){if(!(this instanceof Fingerprint2)){return new Fingerprint2(options)}var defaultOptions={swfContainerId:"fingerprintjs2",swfPath:"flash/compiled/FontList.swf",detectScreenOrientation:true,sortPluginsFor:[/palemoon/i],userDefinedFonts:[],excludeDoNotTrack:true,excludePixelRatio:true};this.options=this.extend(options,defaultOptions);this.nativeForEach=Array.prototype.forEach;this.nativeMap=Array.prototype.map};Fingerprint2.prototype={extend:function(source,target){if(source==null){return target}for(var k in source){if(source[k]!=null&&target[k]!==source[k]){target[k]=source[k]}}return target},get:function(done){var that=this;var keys={data:[],addPreprocessedComponent:function(pair){var componentValue=pair.value;if(typeof that.options.preprocessor==="function"){componentValue=that.options.preprocessor(pair.key,componentValue)}keys.data.push({key:pair.key,value:componentValue})}};keys=this.userAgentKey(keys);keys=this.languageKey(keys);keys=this.colorDepthKey(keys);keys=this.deviceMemoryKey(keys);keys=this.pixelRatioKey(keys);keys=this.hardwareConcurrencyKey(keys);keys=this.screenResolutionKey(keys);keys=this.availableScreenResolutionKey(keys);keys=this.timezoneOffsetKey(keys);keys=this.sessionStorageKey(keys);keys=this.localStorageKey(keys);keys=this.indexedDbKey(keys);keys=this.addBehaviorKey(keys);keys=this.openDatabaseKey(keys);keys=this.cpuClassKey(keys);keys=this.platformKey(keys);keys=this.doNotTrackKey(keys);keys=this.pluginsKey(keys);keys=this.canvasKey(keys);keys=this.webglKey(keys);keys=this.webglVendorAndRendererKey(keys);keys=this.adBlockKey(keys);keys=this.hasLiedLanguagesKey(keys);keys=this.hasLiedResolutionKey(keys);keys=this.hasLiedOsKey(keys);keys=this.hasLiedBrowserKey(keys);keys=this.touchSupportKey(keys);keys=this.customEntropyFunction(keys);this.fontsKey(keys,function(keysWithFont){that.audioKey(keysWithFont,function(newKeys){var values=[];that.each(newKeys.data,function(pair){var value=pair.value;if(value&&typeof value.join==="function"){values.push(value.join(";"))}else{values.push(value)}});var murmur=that.x64hash128(values.join("~~~"),31);return done(murmur,newKeys.data)})})},audioKey:function(keys,done){if(this.options.excludeAudioFP){return done(keys)}var AudioContext=window.OfflineAudioContext||window.webkitOfflineAudioContext;var context=new AudioContext(1,44100,44100);var oscillator=context.createOscillator();oscillator.type="triangle";oscillator.frequency.setValueAtTime(1e4,context.currentTime);var compressor=context.createDynamicsCompressor();this.each([["threshold",-50],["knee",40],["ratio",12],["reduction",-20],["attack",0],["release",.25]],function(item){if(compressor[item[0]]!==undefined&&typeof compressor[item[0]].setValueAtTime==="function"){compressor[item[0]].setValueAtTime(item[1],context.currentTime)}});context.oncomplete=function(event){var fingerprint=event.renderedBuffer.getChannelData(0).slice(4500,5e3).reduce(function(acc,val){return acc+Math.abs(val)},0).toString();oscillator.disconnect();compressor.disconnect();keys.addPreprocessedComponent({key:"audio_fp",value:fingerprint});return done(keys)};oscillator.connect(compressor);compressor.connect(context.destination);oscillator.start(0);context.startRendering()},customEntropyFunction:function(keys){if(typeof this.options.customFunction==="function"){keys.addPreprocessedComponent({key:"custom",value:this.options.customFunction()})}return keys},userAgentKey:function(keys){if(!this.options.excludeUserAgent){keys.addPreprocessedComponent({key:"user_agent",value:this.getUserAgent()})}return keys},getUserAgent:function(){return navigator.userAgent},languageKey:function(keys){if(!this.options.excludeLanguage){keys.addPreprocessedComponent({key:"language",value:n
browser="Safari"}else if(userAgent.indexOf("trident")>=0){browser="Internet Explorer"}else{browser="Other"}if((browser==="Chrome"||browser==="Safari"||browser==="Opera")&&productSub!=="20030107"){return true}var tempRes=eval.toString().length;if(tempRes===37&&browser!=="Safari"&&browser!=="Firefox"&&browser!=="Other"){return true}else if(tempRes===39&&browser!=="Internet Explorer"&&browser!=="Other"){return true}else if(tempRes===33&&browser!=="Chrome"&&browser!=="Opera"&&browser!=="Other"){return true}var errFirefox;try{throw"a"}catch(err){try{err.toSource();errFirefox=true}catch(errOfErr){errFirefox=false}}if(errFirefox&&browser!=="Firefox"&&browser!=="Other"){return true}return false},isCanvasSupported:function(){var elem=document.createElement("canvas");return!!(elem.getContext&&elem.getContext("2d"))},isWebGlSupported:function(){if(!this.isCanvasSupported()){return false}var glContext=this.getWebglCanvas();return!!window.WebGLRenderingContext&&!!glContext},isIE:function(){if(navigator.appName==="Microsoft Internet Explorer"){return true}else if(navigator.appName==="Netscape"&&/Trident/.test(navigator.userAgent)){return true}return false},hasSwfObjectLoaded:function(){return typeof window.swfobject!=="undefined"},hasMinFlashInstalled:function(){return window.swfobject.hasFlashPlayerVersion("9.0.0")},addFlashDivNode:function(){var node=document.createElement("div");node.setAttribute("id",this.options.swfContainerId);document.body.appendChild(node)},loadSwfAndDetectFonts:function(done){var hiddenCallback="___fp_swf_loaded";window[hiddenCallback]=function(fonts){done(fonts)};var id=this.options.swfContainerId;this.addFlashDivNode();var flashvars={onReady:hiddenCallback};var flashparams={allowScriptAccess:"always",menu:"false"};window.swfobject.embedSWF(this.options.swfPath,id,"1","1","9.0.0",false,flashvars,flashparams,{})},getWebglCanvas:function(){var canvas=document.createElement("canvas");var gl=null;try{gl=canvas.getContext("webgl")||canvas.getContext("experimental-webgl")}catch(e){}if(!gl){gl=null}return gl},each:function(obj,iterator,context){if(obj===null){return}if(this.nativeForEach&&obj.forEach===this.nativeForEach){obj.forEach(iterator,context)}else if(obj.length===+obj.length){for(var i=0,l=obj.length;i<l;i++){if(iterator.call(context,obj[i],i,obj)==={}){return}}}else{for(var key in obj){if(obj.hasOwnProperty(key)){if(iterator.call(context,obj[key],key,obj)==={}){return}}}}},map:function(obj,iterator,context){var results=[];if(obj==null){return results}if(this.nativeMap&&obj.map===this.nativeMap){return obj.map(iterator,context)}this.each(obj,function(value,index,list){results[results.length]=iterator.call(context,value,index,list)});return results},x64Add:function(m,n){m=[m[0]>>>16,m[0]&65535,m[1]>>>16,m[1]&65535];n=[n[0]>>>16,n[0]&65535,n[1]>>>16,n[1]&65535];var o=[0,0,0,0];o[3]+=m[3]+n[3];o[2]+=o[3]>>>16;o[3]&=65535;o[2]+=m[2]+n[2];o[1]+=o[2]>>>16;o[2]&=65535;o[1]+=m[1]+n[1];o[0]+=o[1]>>>16;o[1]&=65535;o[0]+=m[0]+n[0];o[0]&=65535;return[o[0]<<16|o[1],o[2]<<16|o[3]]},x64Multiply:function(m,n){m=[m[0]>>>16,m[0]&65535,m[1]>>>16,m[1]&65535];n=[n[0]>>>16,n[0]&65535,n[1]>>>16,n[1]&65535];var o=[0,0,0,0];o[3]+=m[3]*n[3];o[2]+=o[3]>>>16;o[3]&=65535;o[2]+=m[2]*n[3];o[1]+=o[2]>>>16;o[2]&=65535;o[2]+=m[3]*n[2];o[1]+=o[2]>>>16;o[2]&=65535;o[1]+=m[1]*n[3];o[0]+=o[1]>>>16;o[1]&=65535;o[1]+=m[2]*n[2];o[0]+=o[1]>>>16;o[1]&=65535;o[1]+=m[3]*n[1];o[0]+=o[1]>>>16;o[1]&=65535;o[0]+=m[0]*n[3]+m[1]*n[2]+m[2]*n[1]+m[3]*n[0];o[0]&=65535;return[o[0]<<16|o[1],o[2]<<16|o[3]]},x64Rotl:function(m,n){n%=64;if(n===32){return[m[1],m[0]]}else if(n<32){return[m[0]<<n|m[1]>>>32-n,m[1]<<n|m[0]>>>32-n]}else{n-=32;return[m[1]<<n|m[0]>>>32-n,m[0]<<n|m[1]>>>32-n]}},x64LeftShift:function(m,n){n%=64;if(n===0){return m}else if(n<32){return[m[0]<<n|m[1]>>>32-n,m[1]<<n]}else{return[m[1]<<n-32,0]}},x64Xor:function(m,n){return[m[0]^n[0],m[1]^n[1]]},x64Fmix:function(h){h=this.x64Xor(h,[0,h[0]>>>1]);h=this.x64Multiply(h,[4283543511,3981806797]);h=this.x64Xor(h,[0,h[0]>>>1]);h=this.x64Multiply(h,[3301882366,444984403]);h=this.x64Xor(h,[0,h[0]>>>1]);ret