PageSourceSearch

https://www.pixmania.com/assets/js/fingerprint.js?v=1.2.3

js pixmania.com collected 2026-10-02 07:40:53 UTC 8,756 bytes, 122 lines download raw bytes

1$( document ).ready(function() {
2	var audio = document.createElement('audio');
3	var canvas = document.createElement("canvas");
4	var webgl = canvas.getContext("webgl") || canvas.getContext("experimental-webgl");
5	var debugInfo = webgl.getExtension("webgl_debug_renderer_info");
6	var gpu = webgl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL);
7	var gpu_vendor = webgl.getParameter(debugInfo.UNMASKED_VENDOR_WEBGL);
8	
9	var _nav = window.navigator;
10	var _plugins = [];
11	if(typeof _nav['plugins'] != 'undefined'){
12		for(var _idx in _nav['plugins']){
13			_plugins.push(_nav['plugins'][_idx]['name']);
14		}
15	}
16	
17	function getCanvasFingerprint() {
18	  const canvas = document.createElement("canvas");
19	  canvas.width = 300;
20	  canvas.height = 150;
21	  const ctx = canvas.getContext("2d");
22	
23	  // Forme simple
24	  ctx.fillStyle = "#ccc";
25	  ctx.fillRect(0, 0, canvas.width, canvas.height);
26	
27	  // Texte Unicode multilingue
28	  const testStrings = [
29		  "Hello, world!",              // Standard ASCII
30		  "Ça va bien ?",               // Accent aigu et cédille
31		  "München ist schön",          // Umlaut : ü, ö
32		  "Español: ¿cómo estás?",      // Inversé : ¿
33		  "Français: où est l'hôtel ?",// Apostrophes, accents
34		  "Straße und Fußball",         // Eszett (ß)
35		  "âêîôû äëïöü ß ç ñ",          // Latin étendu 1
36	  ];
37	
38	  // Rendu de chaque chaîne avec différentes polices et styles
39	  testStrings.forEach((str, i) => {
40		ctx.font = `${14 + i}px '${i % 2 === 0 ? "Arial" : "Times New Roman"}'`;
41		ctx.fillStyle = `rgb(${i * 30 % 255}, ${255 - i * 40 % 255}, ${i * 70 % 255})`;
42		ctx.fillText(str, 10, 20 + i * 16);
43	  });
44	
45	  // Extraire les données de pixels (échantillonnage partiel)
46	  const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height).data;
47	  let pixelSample = "";
48	  for (let i = 0; i < imageData.length; i += 12) {
49		pixelSample += String.fromCharCode(imageData[i]); // Utilise le canal rouge comme signal
50	  }
51	
52	  return _h(pixelSample);
53	}
54	
55	function getWebGLFingerprint() {
56	  const canvas = document.createElement("canvas");
57	  const gl = canvas.getContext("webgl") || canvas.getContext("experimental-webgl");
58	
59	  if (!gl) return "no-webgl";
60	
61	  const debugInfo = gl.getExtension("WEBGL_debug_renderer_info");
62	
63	  const vendor = debugInfo ? gl.getParameter(debugInfo.UNMASKED_VENDOR_WEBGL) : "unknown";
64	  const renderer = debugInfo ? gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL) : "unknown";
65	
66	  // Exemple de rendu WebGL simple
67	  const shaderPrecision = gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.HIGH_FLOAT).precision;
68	
69	  const combined = `vendor=${vendor};renderer=${renderer};precision=${shaderPrecision}`;
70	  return _h(combined);
71	}
72
73	var _datas = {
74				 	"languages":((typeof _nav['language'] == 'undefined')?_nav['language']:_nav['languages'][0])
75				  , "hardwareConcurrency":_nav['hardwareConcurrency']
76				  , "deviceMemory" : _nav['deviceMemory']
77				  , "plugins":_plugins
78				  , "userAgent":_nav['userAgent']
79				  , "userAgentBrands":((typeof _nav['userAgentData'] == 'undefined')?_nav['vendor']:_nav['userAgentData']['brands'])
80				  , "userAgentMobile":((typeof _nav['userAgentData'] == 'undefined')?((window.matchMedia("(max-width: 767px)").matches)?true:false):_nav['userAgentData']['mobile'])
81				  , "userAgentPlateform":((typeof _nav['userAgentData'] == 'undefined')?_nav['platform']:_nav['userAgentData']['platform'])
82				  , "platform":_nav['platform']
83				  , "connection":_nav['connection']
84				  , "screenheight": window.screen.height
85				  , "screenwidth": window.screen.width
86				  , "windowsheight": $(window).height()
87				  , "windowswidth": $(window).width()
88				  , "mobile":(window.matchMedia("(max-width: 767px)").matches)?true:false
89				  , "gpu" : gpu
90				  , "gpu_vendor" : gpu_vendor
91				  , "webgl" : webgl
92				  , "product" : ((typeof _nav['product'] != 'undefined')?_nav['product']:"")
93				  , "productSub" : ((typeof _nav['productSub'] != 'undefined')?_nav['productSub']:"")
94				  , "appCodeName" : ((typeof _nav['appCodeName'] != 'undefined')?_nav['appCodeName']:"")
95				  , "appName" : ((typeof _nav['appName'] != 'undefined')?_nav['appName']:"")
96				  , "appVersion" : ((typeof _nav['appVersion'] != 'undefined')?_nav['appVersion']:"")
97				  , "cookieEnabled" : ((typeof _nav['cookieEnabled'] != 'undefined')?_nav['cookieEnabled']:"")
98				  , "doNotTrack" : ((typeof _nav['doNotTrack'] != 'undefined')?_nav['doNotTrack']:"")
99				  , "canevasfp" : getCanvasFingerprint()
100				  , "webglfp" : getWebGLFingerprint()
101				  //, "dpi": getDpi()
102				};
103
104	var _visitorId = _h(JSON.stringify(_datas)).toLowerCase();
105
106	$.ajax({
107		   type: "POST",
108		   url: "/api/customer/security/?version=2",
109		   data: {fp:_visitorId,datas:JSON.stringify(_datas)}, 
110		   success: function(data){
111		   }
112	});
113});
114function _h(d){return rstr2hex(binl2rstr(binl_md5(rstr2binl(d),8*d.length)))}function rstr2hex(d){for(var _,m="0123456789ABCDEF",f="",r=0;r<d.length;r++)_=d.charCodeAt(r),f+=m.charAt(_>>>4&15)+m.charAt(15&_);return f}function rstr2binl(d){for(var _=Array(d.length>>2),m=0;m<_.length;m++)_[m]=0;for(m=0;m<8*d.length;m+=8)_[m>>5]|=(255&d.charCodeAt(m/8))<<m%32;return _}function binl2rstr(d){for(var _="",m=0;m<32*d.length;m+=8)_+=String.fromCharCode(d[m>>5]>>>m%32&255);return _}function binl_md5(d,_){d[_>>5]|=128<<_%32,d[14+(_+64>>>9<<4)]=_;for(var m=1732584193,f=-271733879,r=-1732584194,i=271733878,n=0;n<d.length;n+=16){var h=m,t=f,g=r,e=i;f=md5_ii(f=md5_ii(f=md5_ii(f=md5_ii(f=md5_hh(f=md5_hh(f=md5_hh(f=md5_hh(f=md5_gg(f=md5_gg(f=md5_gg(f=md5_gg(f=md5_ff(f=md5_ff(f=md5_ff(f=md5_ff(f,r=md5_ff(r,i=md5_ff(i,m=md5_ff(m,f,r,i,d[n+0],7,-680876936),f,r,d[n+1],12,-389564586),m,f,d[n+2],17,606105819),i,m,d[n+3],22,-1044525330),r=md5_ff(r,i=md5_ff(i,m=md5_ff(m,f,r,i,d[n+4],7,-176418897),f,r,d[n+5],12,1200080426),m,f,d[n+6],17,-1473231341),i,m,d[n+7],22,-45705983),r=md5_ff(r,i=md5_ff(i,m=md5_ff(m,f,r,i,d[n+8],7,1770035416),f,r,d[n+9],12,-1958414417),m,f,d[n+10],17,-42063),i,m,d[n+11],22,-1990404162),r=md5_ff(r,i=md5_ff(i,m=md5_ff(m,f,r,i,d[n+12],7,1804603682),f,r,d[n+13],12,-40341101),m,f,d[n+14],17,-1502002290),i,m,d[n+15],22,1236535329),r=md5_gg(r,i=md5_gg(i,m=md5_gg(m,f,r,i,d[n+1],5,-165796510),f,r,d[n+6],9,-1069501632),m,f,d[n+11],14,643717713),i,m,d[n+0],20,-373897302),r=md5_gg(r,i=md5_gg(i,m=md5_gg(m,f,r,i,d[n+5],5,-701558691),f,r,d[n+10],9,38016083),m,f,d[n+15],14,-660478335),i,m,d[n+4],20,-405537848),r=md5_gg(r,i=md5_gg(i,m=md5_gg(m,f,r,i,d[n+9],5,568446438),f,r,d[n+14],9,-1019803690),m,f,d[n+3],14,-187363961),i,m,d[n+8],20,1163531501),r=md5_gg(r,i=md5_gg(i,m=md5_gg(m,f,r,i,d[n+13],5,-1444681467),f,r,d[n+2],9,-51403784),m,f,d[n+7],14,1735328473),i,m,d[n+12],20,-1926607734),r=md5_hh(r,i=md5_hh(i,m=md5_hh(m,f,r,i,d[n+5],4,-378558),f,r,d[n+8],11,-2022574463),m,f,d[n+11],16,1839030562),i,m,d[n+14],23,-35309556),r=md5_hh(r,i=md5_hh(i,m=md5_hh(m,f,r,i,d[n+1],4,-1530992060),f,r,d[n+4],11,1272893353),m,f,d[n+7],16,-155497632),i,m,d[n+10],23,-1094730640),r=md5_hh(r,i=md5_hh(i,m=md5_hh(m,f,r,i,d[n+13],4,681279174),f,r,d[n+0],11,-358537222),m,f,d[n+3],16,-722521979),i,m,d[n+6],23,76029189),r=md5_hh(r,i=md5_hh(i,m=md5_hh(m,f,r,i,d[n+9],4,-640364487),f,r,d[n+12],11,-421815835),m,f,d[n+15],16,530742520),i,m,d[n+2],23,-995338651),r=md5_ii(r,i=md5_ii(i,m=md5_ii(m,f,r,i,d[n+0],6,-198630844),f,r,d[n+7],10,1126891415),m,f,d[n+14],15,-1416354905),i,m,d[n+5],21,-57434055),r=md5_ii(r,i=md5_ii(i,m=md5_ii(m,f,r,i,d[n+12],6,1700485571),f,r,d[n+3],10,-1894986606),m,f,d[n+10],15,-1051523),i,m,d[n+1],21,-2054922799),r=md5_ii(r,i=md5_ii(i,m=md5_ii(m,f,r,i,d[n+8],6,1873313359),f,r,d[n+15],10,-30611744),m,f,d[n+6],15,-1560198380),i,m,d[n+13],21,1309151649),r=md5_ii(r,i=md5_ii(i,m=md5_ii(m,f,r,i,d[n+4],6,-145523070),f,r,d[n+11],10,-1120210379),m,f,d[n+2],15,718787259),i,m,d[n+9],21,-343485551),m=safe_add(m,h),f=safe_add(f,t),r=safe_add(r,g),i=safe_add(i,e)}return Array(m,f,r,i)}function md5_cmn(d,_,m,f,r,i){return safe_add(bit_rol(safe_add(safe_add(_,d),safe_add(f,i)),r),m)}function md5_ff(d,_,m,f,r,i,n){return md5_cmn(_&m|~_&f,d,_,r,i,n)}function md5_gg(d,_,m,f,r,i,n){return md5_cmn(_&f|m&~f,d,_,r,i,n)}function md5_hh(d,_,m,f,r,i,n){return md5_cmn(_^m^f,d,_,r,i,n)}function md5_ii(d,_,m,f,r,i,n){return md5_cmn(m^(_|~f),d,_,r,i,n)}function safe_add(d,_){var m=(65535&d)+(65535&_);return(d>>16)+(_>>16)+(m>>16)<<16|65535&m}function bit_rol(d,_){return d<<_|d>>>32-_}
115
116/*function findFirstPositive (f,b=1,d=(e,g,c)=>g<e?-1:0<f(c=e+g>>>1)?c==e||0>=f(c-1)?c:d(e,c-1):d(c+1,g)) {
117  for (;0>=f(b);b<<=1);return d(b>>>1,b)|0
118}
119
120function getDpi() {
121	return findFirstPositive(x => matchMedia(`(max-resolution: ${x}dpi)`).matches);
122}*/

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.