Gateway Mods

This script adds some functions to speed up HP operations

目前為 2015-08-11 提交的版本,檢視 最新版本

  1. // ==UserScript==
  2. // @name Gateway Mods
  3. // @namespace http://www.hacker-project.com/
  4. // @version 2.1
  5. // @description This script adds some functions to speed up HP operations
  6. // @author Kevin Mitnick
  7. // @match http://www.hacker-project.com/*
  8. // @match http://hacker-project.com/*
  9. // @grant none
  10. // @require http://code.jquery.com/jquery-latest.js
  11. // ==/UserScript==
  12.  
  13. function setup() {
  14. // Setup jQuery
  15. var jQueryScript = document.createElement("script");
  16. jQueryScript.setAttribute("src", "http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js");
  17. document.head.appendChild(jQueryScript);
  18.  
  19. // COURIER NEW FONT
  20. var FONT = true;
  21.  
  22. if (new String(window.location.href).indexOf("&a2=try_res") > -1) {
  23. var hasGold = document.body.innerHTML.indexOf("20% Gold discount")>-1;
  24. var inputTr;
  25. var targ = document.createElement("span");
  26. targ.setAttribute("class", "p");
  27. targ.setAttribute("id", "targ");
  28. var targWrap = document.createElement("tr");
  29. targWrap.innerHTML = "<td></td>";
  30. 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];
  31. inputTr.parentNode.appendChild(targWrap);
  32. targWrap.childNodes[0].appendChild(targ);
  33. var nr_hours = document.getElementsByName("nr_hours")[0], x_times = document.getElementsByName("x_times")[0];
  34. nr_hours.addEventListener("keyup", function(){calcCost(hasGold)}, false);
  35. x_times.addEventListener("keyup", function(){calcCost(hasGold)}, false);
  36. calcCost(hasGold);
  37. }
  38.  
  39. if (new String(window.location.href).indexOf("&a2=run") > -1) {
  40.  
  41. // EXPERIMENTAL FEATURE. CAUSES EXTRA LOAD TIME FOR PROCESS PAGE. COMMENT OUT IF YOU WANT TO DISABLE
  42. // addProcs();
  43.  
  44. $(document).ready(function() {
  45. var table = document.getElementsByName("frm_files")[0].getElementsByTagName("table")[0];
  46. for (var numberOfRows = table.rows.length, i = 3; i<numberOfRows-2; i++) {
  47. var tr = table.getElementsByTagName("tbody")[0].getElementsByTagName("tr")[i];
  48. var tds = tr.getElementsByTagName("td");
  49. var content = tds[4].innerHTML;
  50. var owned = (content.indexOf("Owned")>-1);
  51. var complete = (content.indexOf("complete")>-1);
  52. var virus = (content.indexOf("virii")>-1);
  53. if (owned) tr.style.backgroundColor="#285166";
  54. if (virus && !owned) tr.style.backgroundColor="#8A0000";
  55. if (virus && owned) tr.style.backgroundColor="#511400";
  56. if (owned && complete) tr.style.backgroundColor="#004400";
  57. }
  58. });
  59. }
  60.  
  61. if (new String(window.location.href).indexOf("&a2=files") > -1) {
  62.  
  63. // Batch script
  64. var batchScript = document.createElement("script");
  65. batchScript.setAttribute("type", "text/javascript");
  66. 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); } }";
  67. document.body.appendChild(batchScript);
  68.  
  69. // Spec scan
  70. var psWindow = document.createElement("iframe");
  71. psWindow.src="/index.php?action=gate&a2=run";
  72. if (new String(window.location.href).indexOf("&rem=1")>-1) psWindow.src += "&rem=1";
  73. psWindow.style.display="none";
  74. psWindow.id = "psWindow";
  75. document.body.appendChild(psWindow);
  76.  
  77. $("#psWindow").load(function() {
  78. var dc = psWindow.contentWindow.document || psWindow.contentDocument || psWindow.document;
  79. var dctds = dc.getElementsByTagName("td");
  80. var specTd;
  81. for (var dci = 0; dci < dctds.length; dci++) if (dctds[dci].getElementsByTagName("span").length==10) specTd = dctds[dci];
  82. var specSpans = specTd.getElementsByTagName("span");
  83. var usedCpu = parseFloat(removeComma(specSpans[1].innerHTML));
  84. var totalCpu = parseFloat(removeComma(specSpans[2].innerHTML));
  85. var usedMem = parseFloat(removeComma(specSpans[4].innerHTML));
  86. var totalMem = parseFloat(removeComma(specSpans[5].innerHTML));
  87. var usedBand = parseFloat(removeComma(specSpans[7].innerHTML));
  88. var totalBand = parseFloat(removeComma(specSpans[8].innerHTML));
  89. var table = document.getElementsByName("frm_files")[0].getElementsByTagName("table")[0];
  90. table.getElementsByTagName("tbody")[0].appendChild(specTd);
  91. var itd = document.createElement("td");
  92. itd.innerHTML = "Executable";
  93. itd.width="100";
  94. table.getElementsByTagName("tbody")[0].getElementsByTagName("tr")[2].appendChild(itd);
  95. for (var numberOfRows = table.rows.length, i = 1; i<numberOfRows-3; i++) {
  96. var itd2 = document.createElement("td");
  97. itd.width="100";
  98. var tr = table.getElementsByTagName("tbody")[0].getElementsByTagName("tr")[i*3];
  99. var tds = tr.getElementsByTagName("td");
  100. var versionPoint = 11;
  101. if (tds[11].innerHTML=="Password Break") versionPoint = 13;
  102. var content = tds[versionPoint].getElementsByTagName("small")[0].innerHTML;
  103. var cpuNeed = parseFloat(content.substring(0, content.indexOf(" M")));
  104. var memNeed = parseFloat(content.substring(content.indexOf("U, ")+3, content.indexOf(" k")));
  105. var bandNeed = 0;
  106. if (content.indexOf("Band")>-1) bandNeed = parseFloat(content.substring(content.indexOf("M, ")+3, content.length));
  107. itd2.innerHTML = "<b><p style='color: red'>No</p></b>";
  108. if (cpuNeed<=totalCpu-usedCpu && memNeed<=totalMem-usedMem && bandNeed<=totalBand-usedBand) itd2.innerHTML = "<b><p style='color: green'>Yes</p></b>";
  109. tr.appendChild(itd2);
  110. }
  111. if (FONT) for (var x = 0; x < document.getElementsByTagName("td").length; x++) document.getElementsByTagName("td")[x].style.fontFamily="Courier New";
  112. });
  113.  
  114. var table = document.getElementsByName("frm_files")[0].getElementsByTagName("table")[0];
  115. for (var numberOfRows = table.rows.length, i = 1; i<numberOfRows-3; i++) {
  116. var tr = table.getElementsByTagName("tbody")[0].getElementsByTagName("tr")[i*3];
  117. var tds = tr.getElementsByTagName("td");
  118. var filename = tds[9].innerHTML;
  119. var versionPoint = 11;
  120. if (filename == "Password Break") versionPoint = 11;
  121. var version = parseFloat(tds[versionPoint].innerHTML);
  122.  
  123. // File type testing and calculations
  124. var hd, cpu, mem, band;
  125. switch (filename) {
  126. case "Firewall Protect":{ hd = 7.50; mem = 3000; cpu = 50; band = 0; break; }
  127. case "Firewall Bypass":{ hd = 37.50; mem = 7000; cpu = 80; band = 0; break; }
  128. case "Password Protect":{ hd = 8.50; mem = 5000; cpu = 100; band = 0; break; }
  129. case "Password Break":{ hd = 84.96; mem = 12500; cpu = 200; band = 0; break; }
  130. case "Hide Files":{ hd = 100.00; mem = 9000; cpu = 100; band = 0; break; }
  131. case "Unhide Files":{ hd = 200.00; mem = 9000; cpu = 100; band = 0; break; }
  132. case "Encryptor":{ hd = 341.80; mem = 30000; cpu = 600; band = 0; break; }
  133. case "Decryptor":{ hd = 439.45; mem = 40000; cpu = 900; band = 0; break; }
  134. case "SpyWare":{ hd = 50.00; mem = 900; cpu = 300; band = 0; break; }
  135. case "Anti-SpyWare":{ hd = 100.00; mem = 22500; cpu = 150; band = 0; break; }
  136. case "Malware Logic Bomb":{ hd = 585.94; mem = 5000; cpu = 300; band = 0; break; }
  137. case "Malware Overload Bomb":{ hd = 976.56; mem = 7000; cpu = 550; band = 0; break; }
  138. case "Malware Anti-Virus":{ hd = 200.00; mem = 1500; cpu = 300; band = 0; break; }
  139. case "Adware Spam Daemon":{ hd = 100.00; mem = 5000; cpu = 50; band = 3; break; }
  140. case "Adware Anti-Virus":{ hd = 174.22; mem = 10000; cpu = 250; band = 0; break; }
  141. case "File Share Virus":{ hd = 3200.00; mem = 10000; cpu = 250; band = 50; break; }
  142. case "File Share Anti-Virus":{ hd = 1000.00; mem = 20000; cpu = 500; band = 0; break; }
  143. case "Sniffer Daemon":{ hd = 151.17; mem = 3000; cpu = 50; band = 0; break; }
  144. case "IP Cloaker":{ hd = 151.17; mem = 6000; cpu = 100; band = 0; break; }
  145. case "IP Scanner":{ hd = 369.53; mem = 10000; cpu = 200; band = 0; break; }
  146. case "Scan Blocker":{ hd = 200.00; mem = 10000; cpu = 200; band = 0; break; }
  147. case "Data uplink hijack":{ hd = 395.31; mem = 20000; cpu = 300; band = 0; break; }
  148. case "Data hijack Anti-Virus":{ hd = 200.00; mem = 30000; cpu = 500; band = 0; break; }
  149. case "Log Deleter":{ hd = 5.00; mem = 1000; cpu = 30; band = 0; break; }
  150. case "Log UnDeleter":{ hd = 15.00; mem = 3000; cpu = 50; band = 0; break; }
  151. case "Virus break;er":{ hd = 174.21; mem = 11500; cpu = 300; band = 0; break; }
  152. case "Faith Anti-Virus":{ hd = 20000.00; mem = 1200000; cpu = 20000; band = 0; break; }
  153. case "Virus Identifier":{ hd = 17.42; mem = 1150; cpu = 30; band = 0; break; }
  154. case "Process Tracer":{ hd = 174.22; mem = 92000; cpu = 2400; band = 0; break; }
  155. case "Revelation Virus":{ hd = 20000.00; mem = 600000; cpu = 10000; band = 400; break; }
  156. case "Robber Baron Virus":{ hd = 96000.00; mem = 300000; cpu = 7500; band = 1500; break; }
  157. case "Robber Baron Anti-Virus":{ hd = 30000.00; mem = 600000; cpu = 15000; band = 0; break; }
  158. case "Remote Attack Disruptor":{ hd = 174.22; mem = 92000; cpu = 2400; band = 0; break; }
  159. case "IP Leech":{ hd = 75.00; mem = 1350; cpu = 450; band = 0; break; }
  160. case "IP Leech Anti-Virus":{ hd = 150.00; mem = 21600; cpu = 225; band = 0; break; }
  161. case "Remote Virus Injector":{ hd = 4000.00; mem = 125000; cpu = 2500; band = 2; break; }
  162. case "RV Injector Anti-Virus":{ hd = 4000.00; mem = 250000; cpu = 5000; band = 0; break; }
  163. case "Overload Signer":{ hd = 174.21; mem = 92000; cpu = 2400; band = 0; break; }
  164. case "Mutant Revelation Virus":{ hd = 96000.00; mem = 3000000; cpu = 50000; band = 2000; break; }
  165. case "MutantR Accelerator":{ hd = 174.21; mem = 92000; cpu = 2400; band = 100; break; }
  166. case "MutantR Decelerator":{ hd = 174.21; mem = 278000; cpu = 9600; band = 0; break; }
  167. case "MutantR Acc Stopper":{ hd = 174.21; mem = 46000; cpu = 1200; band = 0; break; }
  168. case "MutantR Dec Stopper":{ hd = 174.21; mem = 46000; cpu = 1200; band = 0; break; }
  169. }
  170. band = +band.toFixed(2);
  171. if (band===0) tds[versionPoint].innerHTML += ("<br/><small class='pi'> "+Math.round(version*cpu*10)+" MHz CPU, "+Math.round(version*mem*10)+" kB RAM</small>");
  172. else tds[versionPoint].innerHTML += ("<br/><small class='pi'> "+Math.round(version*cpu*10)+" MHz CPU, "+Math.round(version*mem*10)+" kB RAM, "+version*band*10+" kB/s Bandwidth</small>");
  173.  
  174. if (filename == "Password Break") {
  175. var buttonBox = tds[0];
  176. var buttonBody = buttonBox.getElementsByTagName("tbody")[0];
  177.  
  178. var tad1 = document.createElement("td");
  179. buttonBody.getElementsByTagName("tr")[0].appendChild(tad1);
  180.  
  181. var tad2 = document.createElement("td");
  182. buttonBody.getElementsByTagName("tr")[1].appendChild(tad2);
  183.  
  184. var bbutton = document.createElement("a");
  185. bbutton.innerHTML = "Batch";
  186. var bhref = buttonBody.getElementsByTagName("a")[0].getAttribute("href");
  187. var pid = bhref.substring(bhref.indexOf("pid=")+4);
  188. var rem = 0;
  189. if (bhref.indexOf("rem=1") > -1) rem = 1;
  190. var inputBox = document.createElement("input");
  191. inputBox.setAttribute("type", "number");
  192. inputBox.style.width = "50px";
  193. inputBox.id = "mpwb"+pid;
  194. tad1.appendChild(inputBox);
  195. bbutton.setAttribute("href", "javascript: runPWB("+pid+", document.getElementById('mpwb"+pid+"').value, "+rem+")");
  196. tad2.appendChild(bbutton);
  197. }
  198. }
  199.  
  200. }
  201. if (FONT) for (var x = 0; x < document.getElementsByTagName("td").length; x++) document.getElementsByTagName("td")[x].style.fontFamily="Courier New";
  202. }
  203. function removeComma(str) {
  204. while (str.indexOf(",") > -1) {
  205. var index = str.indexOf(",");
  206. var first = str.substring(0, index);
  207. var last = str.substring(index + 1, str.length);
  208. str = first + last;
  209. }
  210. return str;
  211. }
  212. function addProcs() {
  213. var toAdd = [];
  214. var parent = document;
  215. recurAdd(parent, toAdd);
  216. }
  217. function recurAdd(parent, toAdd) {
  218. var nextButton;
  219. var as = parent.getElementsByTagName("a");
  220. for (var i = 0; i < as.length; i++) if (as[i].childNodes[0].nodeValue == "Next") nextButton = as[i];
  221. var nBHref = nextButton.href;
  222. var table = parent.getElementsByName("frm_files")[0].getElementsByTagName("table")[0];
  223. var numProcs = 0;
  224. for (var numberOfRows = table.rows.length, i = 3; i<numberOfRows-2; i++) {
  225. if (parent != document) toAdd.push(table.getElementsByTagName("tr")[i]);
  226. numProcs++;
  227. }
  228. if (numProcs > 0) {
  229. var nextFrame = parent.createElement("iframe");
  230. nextFrame.src = nBHref+"&disable=1";
  231. nextFrame.style.display="none";
  232. nextFrame.onload = function() {
  233. recurAdd(nextFrame.contentWindow.document, toAdd);
  234. };
  235. parent.body.appendChild(nextFrame);
  236. }
  237. else {
  238. for (var i = 0; i < toAdd.length; i++) {
  239. var newNode = document.importNode(toAdd[i], true);
  240. var table = document.getElementsByName("frm_files")[0].getElementsByTagName("table")[0];
  241. var trs = table.getElementsByTagName("tr");
  242. var beforeNode;
  243. for (var l = 0; l < trs.length; l++) if (trs[l].innerHTML.indexOf("Tasks")>-1) beforeNode = trs[l];
  244. table.getElementsByTagName("tbody")[0].insertBefore(newNode, beforeNode);
  245. }
  246. }
  247. }
  248. function calcCost(gold) {
  249. var nr_hours = document.getElementsByName("nr_hours")[0], x_times = document.getElementsByName("x_times")[0], targ = document.getElementById("targ");
  250. var hours = nr_hours.value;
  251. var times = x_times.value;
  252. var mult = 100;
  253. if (gold) mult = 80;
  254. targ.innerHTML = "Estimated cost: "+hours*times*mult+" HPD";
  255. }
  256. if (new String(window.location.href).indexOf("&disable=1")<0) setup();