Created
April 5, 2019 02:32
-
-
Save nicoandmee/1c869fa95b1ea207cd6f7383524c3d44 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| function activeXDetect(e) { | |
| return componentVersion = document.body.getComponentVersion("{" + e + "}", "ComponentID"), | |
| null != componentVersion ? componentVersion : !1 | |
| } | |
| function stripIllegalChars(e) { | |
| for (t = "", | |
| e = e.toLowerCase(), | |
| i = 0; i < e.length; i++) | |
| "\n" != e.charAt(i) && "/" != e.charAt(i) && "\\" != e.charAt(i) ? t += e.charAt(i) : "\n" == e.charAt(i) && (t += "n"); | |
| return t | |
| } | |
| function stripFullPath(e, n, t) { | |
| var i = n | |
| , r = t | |
| , a = e | |
| , o = a.lastIndexOf(i); | |
| o >= 0 && (filenameLen = a.length, | |
| a = a.substring(o + i.length, filenameLen)); | |
| var p = a.indexOf(r); | |
| return p >= 0 && (a = a.slice(0, p)), | |
| a | |
| } | |
| function Hashtable() { | |
| function e(e) { | |
| for (var a = null, o = 0; "number" == typeof t[o]; ) | |
| o += 1; | |
| t[o] = 0, | |
| this.hasNext = this.hasMoreElements = function() { | |
| return t[o] < i ? !0 : ("number" == typeof t[o] && (t[o] = null), | |
| !1) | |
| } | |
| , | |
| this.next = this.nextElement = function() { | |
| return this.hasNext ? (a = t[o], | |
| n[e][t[o]++]) : null | |
| } | |
| , | |
| this.remove = function() { | |
| "number" == typeof a && (r.remove(n.__indexToKeys[a]), | |
| a = null) | |
| } | |
| } | |
| var n = { | |
| __indexToValue: [], | |
| __indexToKeys: [] | |
| } | |
| , t = [] | |
| , i = 0 | |
| , r = this; | |
| this.get = function(e) { | |
| return "number" == typeof n[e] ? n.__indexToValue[n[e]] : null | |
| } | |
| , | |
| this.put = function(e, t) { | |
| "number" == typeof n[e] ? n.__indexToValue[n[e]] = t : (n[e] = i, | |
| n.__indexToValue[i] = t, | |
| n.__indexToKeys[i++] = e) | |
| } | |
| , | |
| this.remove = function(e) { | |
| var r = n[e]; | |
| if ("number" == typeof r) { | |
| delete n[e], | |
| i -= 1; | |
| for (var a = r; i > a; a++) | |
| n.__indexToValue[a] = n.__indexToValue[a + 1], | |
| n[n.__indexToKeys[a] = n.__indexToKeys[a + 1]] = a; | |
| for (var a = 0; a < t.length; a++) | |
| t[a] && r < t[a] && (t[a] -= 1) | |
| } | |
| } | |
| , | |
| this.size = function() { | |
| return i | |
| } | |
| , | |
| this.__enumerate = function(n) { | |
| return new e(n) | |
| } | |
| , | |
| Hashtable.prototype.elements = function() { | |
| return this.__enumerate("__indexToValue") | |
| } | |
| , | |
| Hashtable.prototype.keys = function() { | |
| return this.__enumerate("__indexToKeys") | |
| } | |
| , | |
| Hashtable.prototype.clear = function() { | |
| for (var e = this.keys(); e.hasNext(); ) | |
| this.remove(e.next()) | |
| } | |
| , | |
| Hashtable.prototype.toString = function() { | |
| for (var e, n = this.keys(), t = ""; n.hasNext(); ) | |
| e = n.next(), | |
| t += e + " => " + this.get(e) + "\r\n"; | |
| return t | |
| } | |
| , | |
| Hashtable.prototype.contains = function(e) { | |
| for (var n = this.elements(); n.hasNext(); ) | |
| if (n.next() == e) | |
| return !0; | |
| return !1 | |
| } | |
| , | |
| Hashtable.prototype.containsValue = Hashtable.prototype.contains, | |
| Hashtable.prototype.containsKey = function(e) { | |
| return null != this.get(e) | |
| } | |
| , | |
| Hashtable.prototype.isEmpty = function() { | |
| return 0 == this.size() | |
| } | |
| , | |
| Hashtable.prototype.putAll = function(e) { | |
| if (e.constructor == Hashtable) | |
| for (var n, t = e.keys(); t.hasNext(); ) | |
| n = t.next(), | |
| this.put(n, e.get(n)) | |
| } | |
| , | |
| Hashtable.prototype.clone = function() { | |
| var e = new Hashtable; | |
| return e.putAll(this), | |
| e | |
| } | |
| , | |
| Hashtable.prototype.equals = function(e) { | |
| return e == this | |
| } | |
| } | |
| function IE_FingerPrint() { | |
| this.deviceprint_browser = function() { | |
| var e = navigator.userAgent.toLowerCase(); | |
| return t = e + SEP + navigator.appVersion + SEP + navigator.platform, | |
| t += SEP + navigator.appMinorVersion + SEP + navigator.cpuClass + SEP + navigator.browserLanguage, | |
| t += SEP + ScriptEngineBuildVersion(), | |
| t | |
| } | |
| , | |
| this.deviceprint_software = function() { | |
| var t = "" | |
| , r = !0; | |
| document.body.addBehavior("#default#clientCaps"); | |
| var a; | |
| for (i = 0; i < n.length; i++) { | |
| a = activeXDetect(n[i]); | |
| var o = e[i]; | |
| a ? 1 == r ? (t += o + PAIR + a, | |
| r = !1) : t += SEP + o + PAIR + a : (t += "", | |
| r = !1) | |
| } | |
| return t | |
| } | |
| ; | |
| var e = new Array("abk","wnt","aol","arb","chs","cht","dht","dhj","dan","dsh","heb","ie5","icw","ibe","iec","ieh","iee","jap","krn","lan","swf","shw","msn","wmp","obp","oex","net","pan","thi","tks","uni","vtc","vnm","mvm","vbs","wfd") | |
| , n = new Array("7790769C-0471-11D2-AF11-00C04FA35D02","89820200-ECBD-11CF-8B85-00AA005B4340","47F67D00-9E55-11D1-BAEF-00C04FC2D130","76C19B38-F0C8-11CF-87CC-0020AFEECF20","76C19B34-F0C8-11CF-87CC-0020AFEECF20","76C19B33-F0C8-11CF-87CC-0020AFEECF20","9381D8F2-0288-11D0-9501-00AA00B911A5","4F216970-C90C-11D1-B5C7-0000F8051515","283807B5-2C60-11D0-A31D-00AA00B92C03","44BBA848-CC51-11CF-AAFA-00AA00B6015C","76C19B36-F0C8-11CF-87CC-0020AFEECF20","89820200-ECBD-11CF-8B85-00AA005B4383","5A8D6EE0-3E18-11D0-821E-444553540000","630B1DA0-B465-11D1-9948-00C04F98BBC9","08B0E5C0-4FCB-11CF-AAA5-00401C608555","45EA75A0-A269-11D1-B5BF-0000F8051515","DE5AED00-A4BF-11D1-9948-00C04F98BBC9","76C19B30-F0C8-11CF-87CC-0020AFEECF20","76C19B31-F0C8-11CF-87CC-0020AFEECF20","76C19B50-F0C8-11CF-87CC-0020AFEECF20","D27CDB6E-AE6D-11CF-96B8-444553540000","2A202491-F00D-11CF-87CC-0020AFEECF20","5945C046-LE7D-LLDL-BC44-00C04FD912BE","22D6F312-B0F6-11D0-94AB-0080C74C7E95","3AF36230-A269-11D1-B5BF-0000F8051515","44BBA840-CC51-11CF-AAFA-00AA00B6015C","44BBA842-CC51-11CF-AAFA-00AA00B6015B","76C19B32-F0C8-11CF-87CC-0020AFEECF20","76C19B35-F0C8-11CF-87CC-0020AFEECF20","CC2A9BA0-3BDD-11D0-821E-444553540000","3BF42070-B3B1-11D1-B5C5-0000F8051515","10072CEC-8CC1-11D1-986E-00A0C955B42F","76C19B37-F0C8-11CF-87CC-0020AFEECF20","08B0E5C0-4FCB-11CF-AAA5-00401C608500","4F645220-306D-11D2-995D-00C04F98BBC9","73FA19D0-2D75-11D2-995D-00C04F98BBC9") | |
| } | |
| function Mozilla_FingerPrint() {} | |
| function Opera_FingerPrint() {} | |
| function detectFields() { | |
| var e, n, t = "form", i = "input", r = document.getElementsByTagName("form"), a = r.length, o = []; | |
| o.push("url=" + window.location.href); | |
| for (var p = 0; a > p; p++) { | |
| o.push(t + "=" + r[p].name), | |
| e = r[p].getElementsByTagName("input"), | |
| n = e.length; | |
| for (var s = 0; n > s; s++) | |
| "hidden" != e[s].type && o.push(i + "=" + e[s].name) | |
| } | |
| var u = o.join("|"); | |
| return u | |
| } | |
| function FingerPrint() { | |
| var e = 2 | |
| , n = new Hashtable; | |
| n.put("npnul32", "def"), | |
| n.put("npqtplugin6", "qt6"), | |
| n.put("npqtplugin5", "qt5"), | |
| n.put("npqtplugin4", "qt4"), | |
| n.put("npqtplugin3", "qt3"), | |
| n.put("npqtplugin2", "qt2"), | |
| n.put("npqtplugin", "qt1"), | |
| n.put("nppdf32", "pdf"), | |
| n.put("NPSWF32", "swf"), | |
| n.put("NPJava11", "j11"), | |
| n.put("NPJava12", "j12"), | |
| n.put("NPJava13", "j13"), | |
| n.put("NPJava32", "j32"), | |
| n.put("NPJava14", "j14"), | |
| n.put("npoji600", "j61"), | |
| n.put("NPJava131_16", "j16"), | |
| n.put("NPOFFICE", "mso"), | |
| n.put("npdsplay", "wpm"), | |
| n.put("npwmsdrm", "drm"), | |
| n.put("npdrmv2", "drn"), | |
| n.put("nprjplug", "rjl"), | |
| n.put("nppl3260", "rpl"), | |
| n.put("nprpjplug", "rpv"), | |
| n.put("npchime", "chm"), | |
| n.put("npCortona", "cor"), | |
| n.put("np32dsw", "dsw"), | |
| n.put("np32asw", "asw"), | |
| this.deviceprint_version = function() { | |
| return e | |
| } | |
| , | |
| this.deviceprint_browser = function() { | |
| var e = navigator.userAgent | |
| , n = e.toLowerCase() | |
| , t = n + SEP + navigator.appVersion + SEP + navigator.platform; | |
| return t | |
| } | |
| , | |
| this.deviceprint_software = function() { | |
| var e = "" | |
| , t = !0; | |
| if (navigator.plugins.length > 0) { | |
| var r = "" | |
| , a = "" | |
| , o = "" | |
| , p = "Plugins"; | |
| for (i = 0; i < navigator.plugins.length; i++) | |
| plugin = navigator.plugins[i], | |
| a = stripFullPath(plugin.filename, p, "."), | |
| 1 == t ? (o = n.containsKey(a), | |
| o ? (r += n.get(a), | |
| t = !1) : (r = "", | |
| t = !1)) : (o = n.containsKey(a), | |
| r += o ? SEP + n.get(a) : ""); | |
| e = stripIllegalChars(r) | |
| } else if (navigator.mimeTypes.length > 0) | |
| for (o = "", | |
| i = 0; i < navigator.mimeTypes.length; i++) | |
| mimeType = navigator.mimeTypes[i], | |
| 1 == t ? (o = n.containsKey(mimeType), | |
| o ? (e += n.get(mimeType) + PAIR + mimeType, | |
| t = !1) : (e += "unknown" + PAIR + mimeType, | |
| t = !1)) : (o = n.containsKey(mimeType), | |
| o ? e += SEP + n.get(mimeType) + PAIR + mimeType : r += ""); | |
| return e | |
| } | |
| , | |
| this.deviceprint_display = function() { | |
| var e = ""; | |
| return self.screen && (e += screen.colorDepth + SEP + screen.width + SEP + screen.height + SEP + screen.availHeight), | |
| e | |
| } | |
| , | |
| this.deviceprint_all_software = function() { | |
| var e = "" | |
| , n = !0; | |
| if (navigator.plugins.length > 0) { | |
| var t = "" | |
| , r = ""; | |
| for (i = 0; i < navigator.plugins.length; i++) { | |
| var a = navigator.plugins[i]; | |
| r = a.filename, | |
| r = stripFullPath(r, "Plugins", "."), | |
| 1 == n ? (t += r, | |
| n = !1) : t += SEP + r | |
| } | |
| e = stripIllegalChars(t) | |
| } | |
| return e | |
| } | |
| , | |
| this.deviceprint_timezone = function() { | |
| var e = (new Date).getTimezoneOffset() / 60 * -1; | |
| return e | |
| } | |
| , | |
| this.deviceprint_language = function() { | |
| var e; | |
| return e = "undefined" != typeof navigator.language ? "lang" + PAIR + navigator.language + SEP : "undefined" != typeof navigator.browserLanguage ? "lang" + PAIR + navigator.browserLanguage + SEP : "lang" + PAIR + SEP, | |
| e += "undefined" != typeof navigator.systemLanguage ? "syslang" + PAIR + navigator.systemLanguage + SEP : "syslang" + PAIR + SEP, | |
| e += "undefined" != typeof navigator.userLanguage ? "userlang" + PAIR + navigator.userLanguage : "userlang" + PAIR | |
| } | |
| , | |
| this.deviceprint_java = function() { | |
| var e = navigator.javaEnabled() ? 1 : 0; | |
| return e | |
| } | |
| , | |
| this.deviceprint_cookie = function() { | |
| var e = navigator.cookieEnabled ? 1 : 0; | |
| return "undefined" != typeof navigator.cookieEnabled || e || (document.cookie = "testcookie", | |
| e = -1 !== document.cookie.indexOf("testcookie") ? 1 : 0), | |
| e | |
| } | |
| , | |
| this.deviceprint_appName = function() { | |
| return "undefined" != typeof navigator.appName ? navigator.appName : "" | |
| } | |
| , | |
| this.deviceprint_appCodeName = function() { | |
| return "undefined" != typeof navigator.appCodeName ? navigator.appCodeName : "" | |
| } | |
| , | |
| this.deviceprint_online = function() { | |
| return "undefined" != typeof navigator.onLine ? navigator.onLine : "" | |
| } | |
| , | |
| this.deviceprint_opsProfile = function() { | |
| return "undefined" != typeof navigator.opsProfile && null != navigator.opsProfile ? navigator.opsProfile : "" | |
| } | |
| , | |
| this.deviceprint_userProfile = function() { | |
| return "undefined" != typeof navigator.userProfile && null != navigator.userProfile ? navigator.userProfile : "" | |
| } | |
| , | |
| this.deviceprint_screen_availWidth = function() { | |
| return "undefined" != typeof screen.availWidth ? screen.availWidth : "" | |
| } | |
| , | |
| this.deviceprint_screen_pixelDepth = function() { | |
| return "undefined" != typeof screen.pixelDepth ? screen.pixelDepth : "" | |
| } | |
| , | |
| this.deviceprint_screen_bufferDepth = function() { | |
| return "undefined" != typeof screen.bufferDepth ? screen.bufferDepth : "" | |
| } | |
| , | |
| this.deviceprint_screen_deviceXDPI = function() { | |
| return "undefined" != typeof screen.deviceXDPI ? screen.deviceXDPI : "" | |
| } | |
| , | |
| this.deviceprint_screen_deviceYDPI = function() { | |
| return "undefined" != typeof screen.deviceYDPI ? screen.deviceYDPI : "" | |
| } | |
| , | |
| this.deviceprint_screen_logicalXDPI = function() { | |
| return "undefined" != typeof screen.logicalXDPI ? screen.logicalXDPI : "" | |
| } | |
| , | |
| this.deviceprint_screen_logicalYDPI = function() { | |
| return "undefined" != typeof screen.logicalYDPI ? screen.logicalYDPI : "" | |
| } | |
| , | |
| this.deviceprint_screen_fontSmoothingEnabled = function() { | |
| return "undefined" != typeof screen.fontSmoothingEnabled ? screen.fontSmoothingEnabled : "" | |
| } | |
| , | |
| this.deviceprint_screen_updateInterval = function() { | |
| return "undefined" != typeof screen.updateInterval ? screen.updateInterval : "" | |
| } | |
| , | |
| this.deviceprint_timezone = function() { | |
| var e = (new Date).getTimezoneOffset() / 60 * -1; | |
| return e | |
| } | |
| } | |
| function urlEncode(e) { | |
| var n = escape(e).replace(/\*/g, "%2A").replace(/\+/g, "%2B").replace(/-/g, "%2D").replace(/\./g, "%2E").replace(/\//g, "%2F").replace(/_/g, "%5F").replace(/@/g, "%40"); | |
| return n | |
| } | |
| function encode_deviceprint() { | |
| var e = add_deviceprint(); | |
| return urlEncode(e) | |
| } | |
| function decode_deviceprint() { | |
| return unescape(encode_deviceprint()) | |
| } | |
| function post_deviceprint() { | |
| return document.forms[0].pm_fp.value = encode_deviceprint(), | |
| !0 | |
| } | |
| function post_fingerprints(e) { | |
| e.deviceprint.value = encode_deviceprint() | |
| } | |
| function add_deviceprint() { | |
| BrowserDetect.init(); | |
| var e; | |
| switch (BrowserDetect.browser) { | |
| case "Explorer": | |
| e = new IE_FingerPrint; | |
| break; | |
| case "Firefox": | |
| e = new Mozilla_FingerPrint; | |
| break; | |
| case "Opera": | |
| e = new Opera_FingerPrint; | |
| break; | |
| default: | |
| e = new FingerPrint | |
| } | |
| var n = "version=" + e.deviceprint_version() + "&pm_fpua=" + e.deviceprint_browser() + "&pm_fpsc=" + e.deviceprint_display() + "&pm_fpsw=" + e.deviceprint_software() + "&pm_fptz=" + e.deviceprint_timezone() + "&pm_fpln=" + e.deviceprint_language() + "&pm_fpjv=" + e.deviceprint_java() + "&pm_fpco=" + e.deviceprint_cookie(); | |
| return n = n + "&pm_fpasw=" + e.deviceprint_all_software(), | |
| n = n + "&pm_fpan=" + e.deviceprint_appName() + "&pm_fpacn=" + e.deviceprint_appCodeName() + "&pm_fpol=" + e.deviceprint_online() + "&pm_fposp=" + e.deviceprint_opsProfile() + "&pm_fpup=" + e.deviceprint_userProfile() + "&pm_fpsaw=" + e.deviceprint_screen_availWidth() + "&pm_fpspd=" + e.deviceprint_screen_pixelDepth() + "&pm_fpsbd=" + e.deviceprint_screen_bufferDepth() + "&pm_fpsdx=" + e.deviceprint_screen_deviceXDPI() + "&pm_fpsdy=" + e.deviceprint_screen_deviceYDPI() + "&pm_fpslx=" + e.deviceprint_screen_logicalXDPI() + "&pm_fpsly=" + e.deviceprint_screen_logicalYDPI() + "&pm_fpsfse=" + e.deviceprint_screen_fontSmoothingEnabled() + "&pm_fpsui=" + e.deviceprint_screen_updateInterval() | |
| } | |
| function form_add_data(e, n, t) { | |
| return e && e.length > 0 ? e += "&" : e = "", | |
| e += n + "=" + escape(t.toString()) | |
| } | |
| function form_add_deviceprint(e, n, t) { | |
| return e = form_add_data(e, n + "d", t) | |
| } | |
| function asyncpost_deviceprint(e) { | |
| var n = !1; | |
| if (n || "undefined" == typeof XMLHttpRequest || (n = new XMLHttpRequest), | |
| !n) | |
| return !1; | |
| n.open("POST", e, !0), | |
| n.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"), | |
| BrowserDetect.init(); | |
| var t; | |
| switch (BrowserDetect.browser) { | |
| case "Explorer": | |
| t = new IE_FingerPrint; | |
| break; | |
| case "Firefox": | |
| t = new Mozilla_FingerPrint; | |
| break; | |
| case "Opera": | |
| t = new Opera_FingerPrint; | |
| break; | |
| default: | |
| t = new FingerPrint | |
| } | |
| var i; | |
| return i = form_add_deviceprint(i, "fp_browser", t.deviceprint_browser()), | |
| i = form_add_deviceprint(i, "fp_display", t.deviceprint_display()), | |
| i = form_add_deviceprint(i, "fp_software", t.deviceprint_software()), | |
| i = form_add_deviceprint(i, "fp_timezone", t.deviceprint_timezone()), | |
| i = form_add_deviceprint(i, "fp_language", t.deviceprint_language()), | |
| i = form_add_deviceprint(i, "fp_java", t.deviceprint_java()), | |
| i = form_add_deviceprint(i, "fp_cookie", t.deviceprint_cookie()), | |
| n.send(i), | |
| !0 | |
| } | |
| var BrowserDetect = { | |
| init: function() { | |
| this.browser = this.searchString(this.dataBrowser) || "An unknown browser", | |
| this.version = this.searchVersion(navigator.userAgent) || this.searchVersion(navigator.appVersion) || "an unknown version", | |
| this.OS = this.searchString(this.dataOS) || "an unknown OS" | |
| }, | |
| searchString: function(e) { | |
| for (var n = 0; n < e.length; n++) { | |
| var t = e[n].string | |
| , i = e[n].prop; | |
| if (this.versionSearchString = e[n].versionSearch || e[n].identity, | |
| t) { | |
| if (-1 != t.indexOf(e[n].subString)) | |
| return e[n].identity | |
| } else if (i) | |
| return e[n].identity | |
| } | |
| }, | |
| searchVersion: function(e) { | |
| var n = e.indexOf(this.versionSearchString); | |
| if (-1 != n) | |
| return parseFloat(e.substring(n + this.versionSearchString.length + 1)) | |
| }, | |
| dataBrowser: [{ | |
| string: navigator.userAgent, | |
| subString: "Chrome", | |
| identity: "Chrome" | |
| }, { | |
| string: navigator.userAgent, | |
| subString: "OmniWeb", | |
| versionSearch: "OmniWeb/", | |
| identity: "OmniWeb" | |
| }, { | |
| string: navigator.vendor, | |
| subString: "Apple", | |
| identity: "Safari", | |
| versionSearch: "Version" | |
| }, { | |
| prop: window.opera, | |
| identity: "Opera" | |
| }, { | |
| string: navigator.vendor, | |
| subString: "iCab", | |
| identity: "iCab" | |
| }, { | |
| string: navigator.vendor, | |
| subString: "KDE", | |
| identity: "Konqueror" | |
| }, { | |
| string: navigator.userAgent, | |
| subString: "Firefox", | |
| identity: "Firefox" | |
| }, { | |
| string: navigator.vendor, | |
| subString: "Camino", | |
| identity: "Camino" | |
| }, { | |
| string: navigator.userAgent, | |
| subString: "Netscape", | |
| identity: "Netscape" | |
| }, { | |
| string: navigator.userAgent, | |
| subString: "MSIE", | |
| identity: "Explorer", | |
| versionSearch: "MSIE" | |
| }, { | |
| string: navigator.userAgent, | |
| subString: "Gecko", | |
| identity: "Mozilla", | |
| versionSearch: "rv" | |
| }, { | |
| string: navigator.userAgent, | |
| subString: "Mozilla", | |
| identity: "Netscape", | |
| versionSearch: "Mozilla" | |
| }], | |
| dataOS: [{ | |
| string: navigator.platform, | |
| subString: "Win", | |
| identity: "Windows" | |
| }, { | |
| string: navigator.platform, | |
| subString: "Mac", | |
| identity: "Mac" | |
| }, { | |
| string: navigator.userAgent, | |
| subString: "iPhone", | |
| identity: "iPhone/iPod" | |
| }, { | |
| string: navigator.platform, | |
| subString: "Linux", | |
| identity: "Linux" | |
| }] | |
| }; | |
| IE_FingerPrint.prototype = new FingerPrint, | |
| Mozilla_FingerPrint.prototype = new FingerPrint, | |
| Opera_FingerPrint.prototype = new FingerPrint; | |
| var SEP = "|" | |
| , PAIR = "=" | |
| , DEV = "~" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment