-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathutils.js
106 lines (92 loc) · 2.44 KB
/
utils.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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
/** @param {NS} ns **/
export function multiscan(ns, server) {
let serverList = [];
function scanning(server) {
let currentScan = ns.scan(server);
currentScan.forEach(server => {
if (!serverList.includes(server)) {
serverList.push(server);
scanning(server);
}
})
}
scanning(server);
return serverList;
}
export function gainRootAccess(ns, server) {
if (ns.fileExists('brutessh.exe')) {
ns.brutessh(server);
}
if (ns.fileExists('ftpcrack.exe')) {
ns.ftpcrack(server);
}
if (ns.fileExists('relaysmtp.exe')) {
ns.relaysmtp(server);
}
if (ns.fileExists('httpworm.exe')) {
ns.httpworm(server);
}
if (ns.fileExists('sqlinject.exe')) {
ns.sqlinject(server);
}
const serverData = ns.getServer(server);
if (ns.getServerNumPortsRequired(server) <= serverData.openPortCount) {
ns.nuke(server);
} else {
console.log(`could not gain access to ${server}, lack of open ports`)
}
/* Requires Singularity 4-1
if (!serverData.backdoorInstalled) {
ns.installBackdoor(server);
}
*/
}
export function findTargetServer(ns, serverList) {
let serverMoney = [];
let highestMax = 0;
let bestServer = '';
let targetServer = {};
serverList.forEach(server => {
serverMoney.push(ns.getServerMaxMoney(server));
})
for (let i = 0; i < serverMoney.length; i++) {
if (serverList[i] != 'home' && ns.getServerRequiredHackingLevel(serverList[i]) <= ns.getHackingLevel()) {
if (serverMoney[i] > highestMax) {
highestMax = serverMoney[i];
bestServer = serverList[i];
}
}
};
if (bestServer != '') {
targetServer = {
'target': bestServer,
'moneyThresh': Math.floor(ns.getServerMaxMoney(bestServer) * .80),
'securityThresh': ns.getServerMinSecurityLevel(bestServer) * 2
};
}
return targetServer;
}
export function calcBestRam(ns) {
let ramList = [];
let affordableRamList = [];
let i = 2;
while (ramList.length < 20) {
let result = Math.pow(2, i);
ramList.push(result);
i++;
}
ramList.forEach(ram => {
if ((25 * ns.getPurchasedServerCost(ram)) <= ns.getServerMoneyAvailable('home')) {
affordableRamList.push(ram);
}
})
const bestRam = ramList[affordableRamList.length - 1];
return bestRam;
}
export function deletePurchasedServers(ns) {
const pservers = ns.getPurchasedServers();
pservers.forEach(server => {
ns.killall(server);
ns.deleteServer(server);
});
}