-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathscriptLib.js
81 lines (76 loc) · 2.28 KB
/
scriptLib.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
async function scrapArgs(ns, arg) {
const argIndex = ns.args.indexOf(arg);
if (ns.args.length > 1 && argIndex !== -1) {
return ns.args[argIndex + 1];
} else {
ns.print(`[WARN] Doesn't Have Arg '${arg}'`);
return -1;
}
}
async function getRootAccess(ns, selectedServer) {
if (ns.hasRootAccess(selectedServer) === false) {
try {
for (let i = 0; i < ns.getServerNumPortsRequired(selectedServer); i++) {
switch (i) {
case 0:
await ns.brutessh(selectedServer);
break;
case 1:
await ns.ftpcrack(selectedServer);
break;
case 2:
await ns.relaysmtp(selectedServer);
break;
case 3:
await ns.httpworm(selectedServer);
break;
case 4:
await ns.sqlinject(selectedServer);
break;
}
}
await ns.nuke(selectedServer);
ns.print(`[INFO] Get '${selectedServer}' Root Access`);
return 1;
} catch (e) {
ns.print(`[ERROR] ${e.split("|")[6]}`);
return -1;
}
} else {
ns.print(`[INFO] Already Root Access '${selectedServer}'`);
return -1;
}
}
async function serverHacking(ns, selectedServer) {
if (ns.getServerSecurityLevel(selectedServer) > ns.getServerMinSecurityLevel(selectedServer) + 5) {
await ns.weaken(selectedServer);
} else if (ns.getServerMoneyAvailable(selectedServer) < ns.getServerMaxMoney(selectedServer)) {
await ns.grow(selectedServer);
} else {
await ns.hack(selectedServer);
}
}
function scanAnalyze(ns, maxDepth = Infinity, device = ns.getHostname()) {
let discovered = [device];
function scan (device, depth = 1) {
if(depth > maxDepth) return {};
const localTargets = ns.scan(device).filter(newDevice => !discovered.includes(newDevice));
discovered = [...discovered, ...localTargets];
return localTargets.reduce((acc, device) => ({...acc, [device]: scan(device, depth + 1)}), {});
}
const network = scan(device);
return {"list":discovered.slice(1),"dict":network};
}
async function scpAllScript(ns,selectedServer){
await ns.scp("hackingTool.js", "home", selectedServer);
await ns.scp("runHackingTool.js", "home", selectedServer);
await ns.scp("getAllRootAccess.js", "home", selectedServer);
await ns.scp("scriptLib.js", "home", selectedServer);
}
export {
scrapArgs,
getRootAccess,
serverHacking,
scpAllScript,
scanAnalyze
}