// ==UserScript==
// @name Gateway Mods
// @namespace http://www.hacker-project.com/
// @version 2.4
// @description This script adds some functions to speed up HP operations
// @author Kevin Mitnick
// @match http://www.hacker-project.com/*
// @match http://hacker-project.com/*
// @grant none
// @require http://code.jquery.com/jquery-latest.js
// ==/UserScript==
function setup() {
// Setup jQuery
var jQueryScript = document.createElement("script");
jQueryScript.setAttribute("src", "http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js");
document.head.appendChild(jQueryScript);
// Add scripts
var hpjsScript = document.createElement("script");
hpjsScript.src = "https://rawgit.com/kbarnard2017/hp/master/hpjsy.js";
hpjsScript.id = "hpjss";
document.head.appendChild(hpjsScript);
$("#hpjss").load(function(){ postload(); });
// COURIER NEW FONT
var FONT = true;
// REMOVE DEFAULT TEXTS AND ANNOUNCEMENTS
removeDTA();
if (new String(window.location.href).indexOf("&a2=try_res") > -1) {
var hasGold = document.body.innerHTML.indexOf("20% Gold discount")>-1;
var inputTr;
var targ = document.createElement("span");
targ.setAttribute("class", "p");
targ.setAttribute("id", "targ");
var targWrap = document.createElement("tr");
targWrap.innerHTML = "<td></td>";
for (var i = 0; i < document.getElementsByTagName("tr").length; i++) if (document.getElementsByTagName("tr")[i].innerHTML.indexOf("Number of hours")>-1) inputTr = document.getElementsByTagName("tr")[i];
inputTr.parentNode.appendChild(targWrap);
targWrap.childNodes[0].appendChild(targ);
var nr_hours = document.getElementsByName("nr_hours")[0], x_times = document.getElementsByName("x_times")[0];
nr_hours.addEventListener("keyup", function(){calcCost(hasGold)}, false);
x_times.addEventListener("keyup", function(){calcCost(hasGold)}, false);
calcCost(hasGold);
}
if (new String(window.location.href).indexOf("&a2=run") > -1) {
// EXPERIMENTAL FEATURE. CAUSES EXTRA LOAD TIME FOR PROCESS PAGE. COMMENT OUT IF YOU WANT TO DISABLE
// addProcs();
$(document).ready(function() {
var table = document.getElementsByName("frm_files")[0].getElementsByTagName("table")[0];
for (var numberOfRows = table.rows.length, i = 3; i<numberOfRows-2; i++) {
var tr = table.getElementsByTagName("tbody")[0].getElementsByTagName("tr")[i];
var tds = tr.getElementsByTagName("td");
var content = tds[4].innerHTML;
var owned = (content.indexOf("Owned")>-1);
var complete = (content.indexOf("complete")>-1);
var virus = (content.indexOf("virii")>-1);
if (owned) tr.style.backgroundColor="#285166";
if (virus && !owned) tr.style.backgroundColor="#8A0000";
if (virus && owned) tr.style.backgroundColor="#511400";
if (owned && complete) tr.style.backgroundColor="#004400";
}
});
}
if (new String(window.location.href).indexOf("&a2=files") > -1) {
// Batch script
var batchScript = document.createElement("script");
batchScript.setAttribute("type", "text/javascript");
batchScript.innerHTML = "function runPWB(pid, times, rem) { for (var i = 0; i < times; i++) { var iframe = document.createElement('iframe'); iframe.src = 'index.php?action=gate&a2=run&pid='+pid+'&rem='+rem; iframe.style.display='none'; document.body.appendChild(iframe); } }";
document.body.appendChild(batchScript);
// Spec scan
var psWindow = document.createElement("iframe");
psWindow.src="/index.php?action=gate&a2=run";
if (new String(window.location.href).indexOf("&rem=1")>-1) psWindow.src += "&rem=1";
psWindow.style.display="none";
psWindow.id = "psWindow";
document.body.appendChild(psWindow);
$("#psWindow").load(function() {
var dc = psWindow.contentWindow.document || psWindow.contentDocument || psWindow.document;
var dctds = dc.getElementsByTagName("td");
var specTd;
for (var dci = 0; dci < dctds.length; dci++) if (dctds[dci].getElementsByTagName("span").length==10) specTd = dctds[dci];
var specSpans = specTd.getElementsByTagName("span");
var usedCpu = parseFloat(removeComma(specSpans[1].innerHTML));
var totalCpu = parseFloat(removeComma(specSpans[2].innerHTML));
var usedMem = parseFloat(removeComma(specSpans[4].innerHTML));
var totalMem = parseFloat(removeComma(specSpans[5].innerHTML));
var usedBand = parseFloat(removeComma(specSpans[7].innerHTML));
var totalBand = parseFloat(removeComma(specSpans[8].innerHTML));
var table = document.getElementsByName("frm_files")[0].getElementsByTagName("table")[0];
table.getElementsByTagName("tbody")[0].appendChild(specTd);
var itd = document.createElement("td");
itd.innerHTML = "Executable";
itd.width="100";
table.getElementsByTagName("tbody")[0].getElementsByTagName("tr")[2].appendChild(itd);
for (var numberOfRows = table.rows.length, i = 1; i<numberOfRows-3; i++) {
var itd2 = document.createElement("td");
itd.width="100";
var tr = table.getElementsByTagName("tbody")[0].getElementsByTagName("tr")[i*3];
var tds = tr.getElementsByTagName("td");
var versionPoint = 11;
if (tds[11].innerHTML=="Password Break") versionPoint = 13;
var content = tds[versionPoint].getElementsByTagName("small")[0].innerHTML;
var cpuNeed = parseFloat(content.substring(0, content.indexOf(" M")));
var memNeed = parseFloat(content.substring(content.indexOf("U, ")+3, content.indexOf(" k")));
var bandNeed = 0;
if (content.indexOf("Band")>-1) bandNeed = parseFloat(content.substring(content.indexOf("M, ")+3, content.length));
itd2.innerHTML = "<b><p style='color: red'>No</p></b>";
if (cpuNeed<=totalCpu-usedCpu+50 && memNeed<=totalMem-usedMem+3072 && bandNeed<=totalBand-usedBand+1) itd2.innerHTML = "<b><p style='color: green'>Yes</p></b>";
tr.appendChild(itd2);
}
if (FONT) for (var x = 0; x < document.getElementsByTagName("td").length; x++) document.getElementsByTagName("td")[x].style.fontFamily="Courier New";
});
var table = document.getElementsByName("frm_files")[0].getElementsByTagName("table")[0];
for (var numberOfRows = table.rows.length, i = 1; i<numberOfRows-3; i++) {
var tr = table.getElementsByTagName("tbody")[0].getElementsByTagName("tr")[i*3];
var tds = tr.getElementsByTagName("td");
var filename = tds[9].innerHTML;
var versionPoint = 11;
if (filename == "Password Break") versionPoint = 11;
var version = parseFloat(tds[versionPoint].innerHTML);
// File type testing and calculations
var usages = getUsages(filename, version);
var hd, cpu, mem, band;
hd = usages[0];
cpu = usages[1];
mem = usages[2];
band = usages[3];
// Values are exact for file version
if (band===0) tds[versionPoint].innerHTML += ("<br/><small class='pi'> "+Math.round(cpu)+" MHz CPU, "+Math.round(mem)+" kB RAM</small>");
else tds[versionPoint].innerHTML += ("<br/><small class='pi'> "+Math.round(cpu)+" MHz CPU, "+Math.round(mem)+" kB RAM, "+band+" kB/s Bandwidth</small>");
if (filename == "Password Break") {
var buttonBox = tds[0];
var buttonBody = buttonBox.getElementsByTagName("tbody")[0];
var tad1 = document.createElement("td");
buttonBody.getElementsByTagName("tr")[0].appendChild(tad1);
var tad2 = document.createElement("td");
buttonBody.getElementsByTagName("tr")[1].appendChild(tad2);
var bbutton = document.createElement("a");
bbutton.innerHTML = "Batch";
var bhref = buttonBody.getElementsByTagName("a")[0].getAttribute("href");
var pid = bhref.substring(bhref.indexOf("pid=")+4);
var rem = 0;
if (bhref.indexOf("rem=1") > -1) rem = 1;
var inputBox = document.createElement("input");
inputBox.setAttribute("type", "number");
inputBox.style.width = "50px";
inputBox.id = "mpwb"+pid;
tad1.appendChild(inputBox);
bbutton.setAttribute("href", "javascript: runPWB("+pid+", document.getElementById('mpwb"+pid+"').value, "+rem+")");
tad2.appendChild(bbutton);
}
}
}
if (new String(window.location.href).indexOf("?action=soft_type") > -1) {
var inputBox = document.createElement("input");
inputBox.type = "number";
inputBox.id = "stinp";
inputBox.placeholder = "Version";
inputBox.value = "0.1";
var tbodies = document.getElementsByTagName("tbody");
var tb;
for (var i = 0; i < tbodies.length; i++) if (tbodies[i].getElementsByTagName("td")[0].innerHTML.indexOf("Software")>-1) tb = tbodies[i];
tb.id = "tbik";
tb.insertBefore(inputBox, tb.getElementsByTagName("tr")[1]);
tb.setAttribute("onkeyup", "updateSoftware(document.getElementById('stinp').value, document.getElementById('tbik').getElementsByTagName('tr'))");
}
if (FONT) for (var x = 0; x < document.getElementsByTagName("td").length; x++) document.getElementsByTagName("td")[x].style.fontFamily="Courier New";
}
function updateSoftware(version, trs) {
for (var i = 3; i < trs.length-1; i++) {
var tds = trs[i].getElementsByTagName("td");
var filename = tds[0].innerHTML;
var usages = getUsages(filename, version);
tds[2].innerHTML = parseFloat(usages[1]).toFixed(0);
tds[3].innerHTML = parseFloat(usages[2]).toFixed(0);
tds[4].innerHTML = parseFloat(usages[3]).toFixed(0);
tds[5].innerHTML = parseFloat(usages[0]).toFixed(0);
}
}
function removeComma(str) {
while (str.indexOf(",") > -1) {
var index = str.indexOf(",");
var first = str.substring(0, index);
var last = str.substring(index + 1, str.length);
str = first + last;
}
return str;
}
function addProcs() {
var toAdd = [];
var parent = document;
recurAdd(parent, toAdd);
}
function recurAdd(parent, toAdd) {
var nextButton;
var as = parent.getElementsByTagName("a");
for (var i = 0; i < as.length; i++) if (as[i].childNodes[0].nodeValue == "Next") nextButton = as[i];
var nBHref = nextButton.href;
var table = parent.getElementsByName("frm_files")[0].getElementsByTagName("table")[0];
var numProcs = 0;
for (var numberOfRows = table.rows.length, i = 3; i<numberOfRows-2; i++) {
if (parent != document) toAdd.push(table.getElementsByTagName("tr")[i]);
numProcs++;
}
if (numProcs > 0) {
var nextFrame = parent.createElement("iframe");
nextFrame.src = nBHref+"&disable=1";
nextFrame.style.display="none";
nextFrame.onload = function() {
recurAdd(nextFrame.contentWindow.document, toAdd);
};
parent.body.appendChild(nextFrame);
}
else {
for (var i = 0; i < toAdd.length; i++) {
var newNode = document.importNode(toAdd[i], true);
var table = document.getElementsByName("frm_files")[0].getElementsByTagName("table")[0];
var trs = table.getElementsByTagName("tr");
var beforeNode;
for (var l = 0; l < trs.length; l++) if (trs[l].innerHTML.indexOf("Tasks")>-1) beforeNode = trs[l];
table.getElementsByTagName("tbody")[0].insertBefore(newNode, beforeNode);
}
}
}
function calcCost(gold) {
var nr_hours = document.getElementsByName("nr_hours")[0], x_times = document.getElementsByName("x_times")[0], targ = document.getElementById("targ");
var hours = nr_hours.value;
var times = x_times.value;
var mult = 100;
if (gold) mult = 80;
targ.innerHTML = "Estimated cost: "+hours*times*mult+" HPD";
}
function getUsages(filename, version) {
var hd = 0, cpu = 0, mem = 0, band = 0;
switch (filename) {
case "Firewall Protect":{ hd = 7.50; mem = 3000; cpu = 50; band = 0; break; }
case "Firewall Bypass":{ hd = 37.50; mem = 7000; cpu = 80; band = 0; break; }
case "Password Protect":{ hd = 8.50; mem = 5000; cpu = 100; band = 0; break; }
case "Password Break":{ hd = 84.96; mem = 12500; cpu = 200; band = 0; break; }
case "Hide Files":{ hd = 100.00; mem = 9000; cpu = 100; band = 0; break; }
case "Unhide Files":{ hd = 200.00; mem = 9000; cpu = 100; band = 0; break; }
case "Encryptor":{ hd = 341.80; mem = 30000; cpu = 600; band = 0; break; }
case "Decryptor":{ hd = 439.45; mem = 40000; cpu = 900; band = 0; break; }
case "SpyWare":{ hd = 50.00; mem = 900; cpu = 300; band = 0; break; }
case "Anti-SpyWare":{ hd = 100.00; mem = 22500; cpu = 150; band = 0; break; }
case "Malware Logic Bomb":{ hd = 585.94; mem = 5000; cpu = 300; band = 0; break; }
case "Malware Overload Bomb":{ hd = 976.56; mem = 7000; cpu = 550; band = 0; break; }
case "Malware Anti-Virus":{ hd = 200.00; mem = 1500; cpu = 300; band = 0; break; }
case "Adware Spam Daemon":{ hd = 100.00; mem = 5000; cpu = 50; band = 3; break; }
case "Adware Anti-Virus":{ hd = 174.22; mem = 10000; cpu = 250; band = 0; break; }
case "File Share Virus":{ hd = 3200.00; mem = 10000; cpu = 250; band = 50; break; }
case "File Share Anti-Virus":{ hd = 1000.00; mem = 20000; cpu = 500; band = 0; break; }
case "Sniffer Daemon":{ hd = 151.17; mem = 3000; cpu = 50; band = 0; break; }
case "IP Cloaker":{ hd = 151.17; mem = 6000; cpu = 100; band = 0; break; }
case "IP Scanner":{ hd = 369.53; mem = 10000; cpu = 200; band = 0; break; }
case "Scan Blocker":{ hd = 200.00; mem = 10000; cpu = 200; band = 0; break; }
case "Data uplink hijack":{ hd = 395.31; mem = 20000; cpu = 300; band = 0; break; }
case "Data hijack Anti-Virus":{ hd = 200.00; mem = 30000; cpu = 500; band = 0; break; }
case "Log Deleter":{ hd = 5.00; mem = 1000; cpu = 30; band = 0; break; }
case "Log UnDeleter":{ hd = 15.00; mem = 3000; cpu = 50; band = 0; break; }
case "Virus breaker":{ hd = 174.21; mem = 11500; cpu = 300; band = 0; break; }
case "Faith Anti-Virus":{ hd = 20000.00; mem = 1200000; cpu = 20000; band = 0; break; }
case "Virus Identifier":{ hd = 17.42; mem = 1150; cpu = 30; band = 0; break; }
case "Process Tracer":{ hd = 174.22; mem = 92000; cpu = 2400; band = 0; break; }
case "Revelation Virus":{ hd = 20000.00; mem = 600000; cpu = 10000; band = 400; break; }
case "Robber Baron Virus":{ hd = 96000.00; mem = 300000; cpu = 7500; band = 1500; break; }
case "Robber Baron Anti-Virus":{ hd = 30000.00; mem = 600000; cpu = 15000; band = 0; break; }
case "Remote Attack Disruptor":{ hd = 174.22; mem = 92000; cpu = 2400; band = 0; break; }
case "IP Leech":{ hd = 75.00; mem = 1350; cpu = 450; band = 0; break; }
case "IP Leech Anti-Virus":{ hd = 150.00; mem = 21600; cpu = 225; band = 0; break; }
case "Remote Virus Injector":{ hd = 4000.00; mem = 125000; cpu = 2500; band = 2; break; }
case "RV Injector Anti-Virus":{ hd = 4000.00; mem = 250000; cpu = 5000; band = 0; break; }
case "Overload Signer":{ hd = 174.21; mem = 92000; cpu = 2400; band = 0; break; }
case "Mutant Revelation Virus":{ hd = 96000.00; mem = 3000000; cpu = 50000; band = 2000; break; }
case "MutantR Accelerator":{ hd = 174.21; mem = 92000; cpu = 2400; band = 100; break; }
case "MutantR Decelerator":{ hd = 174.21; mem = 278000; cpu = 9600; band = 0; break; }
case "MutantR Acc Stopper":{ hd = 174.21; mem = 46000; cpu = 1200; band = 0; break; }
case "MutantR Dec Stopper":{ hd = 174.21; mem = 46000; cpu = 1200; band = 0; break; }
}
hd *= version/0.1;
mem *= version/0.1;
cpu *= version/0.1;
band *= version/0.1;
band = band.toFixed(2);
var usages = [hd, cpu, mem, band];
return usages;
}
function removeDTA() {
var as = document.getElementsByTagName("a");
var spls = [];
for (var i = 0; i < as.length; i++) if (as[i].getAttribute("href").indexOf("action=support")>-1 || as[i].getAttribute("href").indexOf("affiliate")>-1) spls.push(as[i]);
var cont = spls.length==3;
if (cont) {
spls[2].parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.removeChild(spls[2].parentNode.parentNode.parentNode.parentNode.parentNode.parentNode);
var fs = document.getElementsByTagName("fieldset")[0];
if (new String(document.location.href).indexOf("?action=gate")>-1) {
fs.removeChild(fs.childNodes[2]);
fs.removeChild(fs.childNodes[2]);
fs.removeChild(fs.childNodes[2]);
fs.removeChild(fs.childNodes[2]);
fs.removeChild(fs.childNodes[2]);
}
if (new String(document.location.href).indexOf("?action=ip_db")>-1) {
fs.removeChild(fs.childNodes[2]);
}
if (new String(document.location.href).indexOf("?action=manage_tr")>-1) {
fs.removeChild(fs.childNodes[2]);
}
if (new String(document.location.href).indexOf("?action=ability")>-1) {
fs.removeChild(fs.childNodes[2]);
fs.removeChild(fs.childNodes[2]);
fs.removeChild(fs.childNodes[2]);
fs.removeChild(fs.childNodes[2]);
fs.removeChild(fs.childNodes[2]);
}
if (new String(document.location.href).indexOf("?action=software")>-1) {
fs.removeChild(fs.childNodes[2]);
fs.removeChild(fs.childNodes[2]);
fs.removeChild(fs.childNodes[2]);
}
if (new String(document.location.href).indexOf("?action=hardware")>-1) {
fs.removeChild(fs.childNodes[2]);
fs.removeChild(fs.childNodes[2]);
fs.removeChild(fs.childNodes[2]);
}
if (new String(document.location.href).indexOf("&action=pvp_board")>-1) {
fs.removeChild(fs.childNodes[2]);
fs.removeChild(fs.childNodes[2]);
}
if (new String(document.location.href).indexOf("?action=messages")>-1) {
fs.removeChild(fs.childNodes[2]);
fs.removeChild(fs.childNodes[2]);
}
if (new String(document.location.href).indexOf("?action=finances")>-1) {
fs.removeChild(fs.childNodes[2]);
}
if (new String(document.location.href).indexOf("?action=research")>-1) {
fs.removeChild(fs.childNodes[2]);
fs.removeChild(fs.childNodes[2]);
fs.removeChild(fs.childNodes[2]);
}
if (new String(document.location.href).indexOf("?action=stock_market")>-1) {
fs.removeChild(fs.childNodes[2]);
fs.removeChild(fs.childNodes[2]);
fs.removeChild(fs.childNodes[2]);
}
if (new String(document.location.href).indexOf("?action=mission")>-1) {
fs.removeChild(fs.childNodes[2]);
}
if (new String(document.location.href).indexOf("?action=faction")>-1) {
fs.removeChild(fs.childNodes[2]);
fs.removeChild(fs.childNodes[2]);
fs.removeChild(fs.childNodes[2]);
fs.removeChild(fs.childNodes[2]);
fs.removeChild(fs.childNodes[2]);
}
if (new String(document.location.href).indexOf("?action=friend_list")>-1) {
fs.removeChild(fs.childNodes[2]);
}
}
}
if (new String(window.location.href).indexOf("&disable=1")<0) setup();