Skip to content

Instantly share code, notes, and snippets.

@leng-yue
Last active October 10, 2018 03:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save leng-yue/424bb6d8877fc82625d6aa6b8b8298c7 to your computer and use it in GitHub Desktop.
Save leng-yue/424bb6d8877fc82625d6aa6b8b8298c7 to your computer and use it in GitHub Desktop.
Transavia JS
//https://www.transavia.com/cczkbrpmtnvieywa.js
var CryptoJS=CryptoJS||(function(Math,undefined){var C={};var C_lib=C.lib={};var Base=C_lib.Base=(function(){function F(){}
return{extend:function(overrides){F.prototype=this;var subtype=new F();if(overrides){subtype.mixIn(overrides);}
if(!subtype.hasOwnProperty('init')){subtype.init=function(){subtype.$super.init.apply(this,arguments);};}
subtype.init.prototype=subtype;subtype.$super=this;return subtype;},create:function(){var instance=this.extend();instance.init.apply(instance,arguments);return instance;},init:function(){},mixIn:function(properties){for(var propertyName in properties){if(properties.hasOwnProperty(propertyName)){this[propertyName]=properties[propertyName];}}
if(properties.hasOwnProperty('toString')){this.toString=properties.toString;}},clone:function(){return this.init.prototype.extend(this);}};}());var WordArray=C_lib.WordArray=Base.extend({init:function(words,sigBytes){words=this.words=words||[];if(sigBytes!=undefined){this.sigBytes=sigBytes;}else{this.sigBytes=words.length*4;}},toString:function(encoder){return(encoder||Hex).stringify(this);},concat:function(wordArray){var thisWords=this.words;var thatWords=wordArray.words;var thisSigBytes=this.sigBytes;var thatSigBytes=wordArray.sigBytes;this.clamp();if(thisSigBytes%4){for(var i=0;i<thatSigBytes;i++){var thatByte=(thatWords[i>>>2]>>>(24-(i%4)*8))&0xff;thisWords[(thisSigBytes+i)>>>2]|=thatByte<<(24-((thisSigBytes+i)%4)*8);}}else if(thatWords.length>0xffff){for(var i=0;i<thatSigBytes;i+=4){thisWords[(thisSigBytes+i)>>>2]=thatWords[i>>>2];}}else{thisWords.push.apply(thisWords,thatWords);}
this.sigBytes+=thatSigBytes;return this;},clamp:function(){var words=this.words;var sigBytes=this.sigBytes;words[sigBytes>>>2]&=0xffffffff<<(32-(sigBytes%4)*8);words.length=Math.ceil(sigBytes/4);},clone:function(){var clone=Base.clone.call(this);clone.words=this.words.slice(0);return clone;},random:function(nBytes){var words=[];for(var i=0;i<nBytes;i+=4){words.push((Math.random()*0x100000000)|0);}
return new WordArray.init(words,nBytes);}});var C_enc=C.enc={};var Hex=C_enc.Hex={stringify:function(wordArray){var words=wordArray.words;var sigBytes=wordArray.sigBytes;var hexChars=[];for(var i=0;i<sigBytes;i++){var bite=(words[i>>>2]>>>(24-(i%4)*8))&0xff;hexChars.push((bite>>>4).toString(16));hexChars.push((bite&0x0f).toString(16));}
return hexChars.join('');},parse:function(hexStr){var hexStrLength=hexStr.length;var words=[];for(var i=0;i<hexStrLength;i+=2){words[i>>>3]|=parseInt(hexStr.substr(i,2),16)<<(24-(i%8)*4);}
return new WordArray.init(words,hexStrLength/2);}};var Latin1=C_enc.Latin1={stringify:function(wordArray){var words=wordArray.words;var sigBytes=wordArray.sigBytes;var latin1Chars=[];for(var i=0;i<sigBytes;i++){var bite=(words[i>>>2]>>>(24-(i%4)*8))&0xff;latin1Chars.push(String.fromCharCode(bite));}
return latin1Chars.join('');},parse:function(latin1Str){var latin1StrLength=latin1Str.length;var words=[];for(var i=0;i<latin1StrLength;i++){words[i>>>2]|=(latin1Str.charCodeAt(i)&0xff)<<(24-(i%4)*8);}
return new WordArray.init(words,latin1StrLength);}};var Utf8=C_enc.Utf8={stringify:function(wordArray){try{return decodeURIComponent(escape(Latin1.stringify(wordArray)));}catch(e){throw new Error('Malformed UTF-8 data');}},parse:function(utf8Str){return Latin1.parse(unescape(encodeURIComponent(utf8Str)));}};var BufferedBlockAlgorithm=C_lib.BufferedBlockAlgorithm=Base.extend({reset:function(){this._data=new WordArray.init();this._nDataBytes=0;},_append:function(data){if(typeof data=='string'){data=Utf8.parse(data);}
this._data.concat(data);this._nDataBytes+=data.sigBytes;},_process:function(doFlush){var data=this._data;var dataWords=data.words;var dataSigBytes=data.sigBytes;var blockSize=this.blockSize;var blockSizeBytes=blockSize*4;var nBlocksReady=dataSigBytes/blockSizeBytes;if(doFlush){nBlocksReady=Math.ceil(nBlocksReady);}else{nBlocksReady=Math.max((nBlocksReady|0)-this._minBufferSize,0);}
var nWordsReady=nBlocksReady*blockSize;var nBytesReady=Math.min(nWordsReady*4,dataSigBytes);if(nWordsReady){for(var offset=0;offset<nWordsReady;offset+=blockSize){this._doProcessBlock(dataWords,offset);}
var processedWords=dataWords.splice(0,nWordsReady);data.sigBytes-=nBytesReady;}
return new WordArray.init(processedWords,nBytesReady);},clone:function(){var clone=Base.clone.call(this);clone._data=this._data.clone();return clone;},_minBufferSize:0});var Hasher=C_lib.Hasher=BufferedBlockAlgorithm.extend({cfg:Base.extend(),init:function(cfg){this.cfg=this.cfg.extend(cfg);this.reset();},reset:function(){BufferedBlockAlgorithm.reset.call(this);this._doReset();},update:function(messageUpdate){this._append(messageUpdate);this._process();return this;},finalize:function(messageUpdate){if(messageUpdate){this._append(messageUpdate);}
var hash=this._doFinalize();return hash;},blockSize:512/32,_createHelper:function(hasher){return function(message,cfg){return new hasher.init(cfg).finalize(message);};},_createHmacHelper:function(hasher){return function(message,key){return new C_algo.HMAC.init(hasher,key).finalize(message);};}});var C_algo=C.algo={};return C;}(Math));(function(){var C=CryptoJS;var C_lib=C.lib;var WordArray=C_lib.WordArray;var Hasher=C_lib.Hasher;var C_algo=C.algo;var W=[];var SHA1=C_algo.SHA1=Hasher.extend({_doReset:function(){this._hash=new WordArray.init([0x67452301,0xefcdab89,0x98badcfe,0x10325476,0xc3d2e1f0]);},_doProcessBlock:function(M,offset){var H=this._hash.words;var a=H[0];var b=H[1];var c=H[2];var d=H[3];var e=H[4];for(var i=0;i<80;i++){if(i<16){W[i]=M[offset+i]|0;}else{var n=W[i-3]^W[i-8]^W[i-14]^W[i-16];W[i]=(n<<1)|(n>>>31);}
var t=((a<<5)|(a>>>27))+e+W[i];if(i<20){t+=((b&c)|(~b&d))+0x5a827999;}else if(i<40){t+=(b^c^d)+0x6ed9eba1;}else if(i<60){t+=((b&c)|(b&d)|(c&d))-0x70e44324;}else{t+=(b^c^d)-0x359d3e2a;}
e=d;d=c;c=(b<<30)|(b>>>2);b=a;a=t;}
H[0]=(H[0]+a)|0;H[1]=(H[1]+b)|0;H[2]=(H[2]+c)|0;H[3]=(H[3]+d)|0;H[4]=(H[4]+e)|0;},_doFinalize:function(){var data=this._data;var dataWords=data.words;var nBitsTotal=this._nDataBytes*8;var nBitsLeft=data.sigBytes*8;dataWords[nBitsLeft>>>5]|=0x80<<(24-nBitsLeft%32);dataWords[(((nBitsLeft+64)>>>9)<<4)+14]=Math.floor(nBitsTotal/0x100000000);dataWords[(((nBitsLeft+64)>>>9)<<4)+15]=nBitsTotal;data.sigBytes=dataWords.length*4;this._process();return this._hash;},clone:function(){var clone=Hasher.clone.call(this);clone._hash=this._hash.clone();return clone;}});C.SHA1=Hasher._createHelper(SHA1);C.HmacSHA1=Hasher._createHmacHelper(SHA1);}());
function getProof(){
function t(e) {
for (var t = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz", n = "", r = 0; e > r; ++r)
n += t.substr(Math.floor(Math.random() * t.length), 1);
return n
}
var e = (new Date).getTime() + ":" + t(20),
t = 8;
for (var i = 0, a = Math.pow(2, 32 - t); ; ) {
var o = i.toString(16) + ":" + e;
i++;
var s = CryptoJS.SHA1(o).toString();
if (parseInt(s.substr(0, 8), 16) < a)
return o
}
}
//console.info(getProof());
function generateFingerprint() {
var data = {"proof":"14d:1539126642869:Ue8c4bnHUp9D76ZeW6S3","fp2":{"userAgent":"Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/69.0.3497.81Safari/537.36","language":"zh-CN","screen":{"width":1536,"height":864,"availHeight":824,"availWidth":1536,"pixelDepth":24,"innerWidth":584,"innerHeight":754,"outerWidth":1536,"outerHeight":824,"devicePixelRatio":1.25},"timezone":8,"indexedDb":true,"addBehavior":false,"openDatabase":true,"cpuClass":"unknown","platform":"Win32","doNotTrack":"unknown","plugins":"ChromePDFPlugin::PortableDocumentFormat::application/x-google-chrome-pdf~pdf;ChromePDFViewer::::application/pdf~pdf;NativeClient::::application/x-nacl~,application/x-pnacl~","canvas":{"winding":"yes","towebp":true,"blending":true,"img":"b643d8fcaa9007173be066b61e9f8bb742f4a035"},"webGL":{"img":"bd6549c125f67b18985a8c509803f4b883ff810c","extensions":"ANGLE_instanced_arrays;EXT_blend_minmax;EXT_color_buffer_half_float;EXT_frag_depth;EXT_shader_texture_lod;EXT_texture_filter_anisotropic;WEBKIT_EXT_texture_filter_anisotropic;EXT_sRGB;OES_element_index_uint;OES_standard_derivatives;OES_texture_float;OES_texture_float_linear;OES_texture_half_float;OES_texture_half_float_linear;OES_vertex_array_object;WEBGL_color_buffer_float;WEBGL_compressed_texture_s3tc;WEBKIT_WEBGL_compressed_texture_s3tc;WEBGL_compressed_texture_s3tc_srgb;WEBGL_debug_renderer_info;WEBGL_debug_shaders;WEBGL_depth_texture;WEBKIT_WEBGL_depth_texture;WEBGL_draw_buffers;WEBGL_lose_context;WEBKIT_WEBGL_lose_context","aliasedlinewidthrange":"[1,1]","aliasedpointsizerange":"[1,1024]","alphabits":8,"antialiasing":"yes","bluebits":8,"depthbits":24,"greenbits":8,"maxanisotropy":16,"maxcombinedtextureimageunits":32,"maxcubemaptexturesize":16384,"maxfragmentuniformvectors":1024,"maxrenderbuffersize":16384,"maxtextureimageunits":16,"maxtexturesize":16384,"maxvaryingvectors":30,"maxvertexattribs":16,"maxvertextextureimageunits":16,"maxvertexuniformvectors":4096,"maxviewportdims":"[16384,16384]","redbits":8,"renderer":"WebKitWebGL","shadinglanguageversion":"WebGLGLSLES1.0(OpenGLESGLSLES1.0Chromium)","stencilbits":0,"vendor":"WebKit","version":"WebGL1.0(OpenGLES2.0Chromium)","vertexshaderhighfloatprecision":23,"vertexshaderhighfloatprecisionrangeMin":127,"vertexshaderhighfloatprecisionrangeMax":127,"vertexshadermediumfloatprecision":23,"vertexshadermediumfloatprecisionrangeMin":127,"vertexshadermediumfloatprecisionrangeMax":127,"vertexshaderlowfloatprecision":23,"vertexshaderlowfloatprecisionrangeMin":127,"vertexshaderlowfloatprecisionrangeMax":127,"fragmentshaderhighfloatprecision":23,"fragmentshaderhighfloatprecisionrangeMin":127,"fragmentshaderhighfloatprecisionrangeMax":127,"fragmentshadermediumfloatprecision":23,"fragmentshadermediumfloatprecisionrangeMin":127,"fragmentshadermediumfloatprecisionrangeMax":127,"fragmentshaderlowfloatprecision":23,"fragmentshaderlowfloatprecisionrangeMin":127,"fragmentshaderlowfloatprecisionrangeMax":127,"vertexshaderhighintprecision":0,"vertexshaderhighintprecisionrangeMin":31,"vertexshaderhighintprecisionrangeMax":30,"vertexshadermediumintprecision":0,"vertexshadermediumintprecisionrangeMin":31,"vertexshadermediumintprecisionrangeMax":30,"vertexshaderlowintprecision":0,"vertexshaderlowintprecisionrangeMin":31,"vertexshaderlowintprecisionrangeMax":30,"fragmentshaderhighintprecision":0,"fragmentshaderhighintprecisionrangeMin":31,"fragmentshaderhighintprecisionrangeMax":30,"fragmentshadermediumintprecision":0,"fragmentshadermediumintprecisionrangeMin":31,"fragmentshadermediumintprecisionrangeMax":30,"fragmentshaderlowintprecision":0,"fragmentshaderlowintprecisionrangeMin":31,"fragmentshaderlowintprecisionrangeMax":30},"touch":{"maxTouchPoints":0,"touchEvent":false,"touchStart":false},"video":{"ogg":"probably","h264":"probably","webm":"probably"},"audio":{"ogg":"probably","mp3":"probably","wav":"probably","m4a":"maybe"},"vendor":"GoogleInc.","product":"Gecko","productSub":"20030107","browser":{"ie":false,"chrome":true,"webdriver":false},"window":{"historyLength":7,"hardwareConcurrency":8,"iframe":false},"fonts":"Calibri;Century;Haettenschweiler;Marlett;Pristina;SimHei"},"cookies":1,"setTimeout":1,"setInterval":1,"appName":"Netscape","platform":"Win32","syslang":"zh-CN","userlang":"zh-CN","cpu":"","productSub":"20030107","plugins":{"0":"ChromePDFPlugin","1":"ChromePDFViewer","2":"NativeClient"},"mimeTypes":{"0":"application/pdf","1":"PortableDocumentFormatapplication/x-google-chrome-pdf","2":"NativeClientExecutableapplication/x-nacl","3":"PortableNativeClientExecutableapplication/x-pnacl"},"screen":{"width":1536,"height":864,"colorDepth":24},"fonts":{"0":"Calibri","1":"Cambria","2":"Times","3":"Constantia","4":"LucidaBright","5":"Georgia","6":"SegoeUI","7":"Candara","8":"TrebuchetMS","9":"Verdana","10":"Consolas","11":"LucidaConsole","12":"LucidaSansTypewriter","13":"DejaVuSansMono","14":"CourierNew","15":"Courier"}};
data.proof = getProof();
data.fp2.userAgent = "Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/"+ 59 + Math.round(Math.random() * 10)+".0.3497."+Math.round(Math.random() * 100)+"Safari/537.36"
data.fp2.canvas.img = CryptoJS.SHA1(Math.random() + "").toString();
data.fp2.webGL.img = CryptoJS.SHA1(Math.random() + "").toString();
return encodeURIComponent(JSON.stringify(data))
}
//console.info(generateFingerprint());
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment