This commit is contained in:
zjamnik committed 2022-09-12 14:24:18 +02:00
1 parent 2963efd97b
commit 34254586b5
12 files changed
+113 -46

No files matched your search

+1
View File
@@ -76,6 +76,7 @@
"avmnite", "avmnite",
"brutessh", "brutessh",
"CSEC", "CSEC",
"Deepscan",
"dles", "dles",
"ftpcrack", "ftpcrack",
"Hacknet", "Hacknet",
+4 -7
View File
@@ -1,4 +1,6 @@
/** @param {import(".").NS } ns */ /** @param {import(".").NS } ns */
import { EXCLUDE_SERVERS } from "./constants.js";
export async function main(ns) { export async function main(ns) {
ns.disableLog('ALL'); ns.disableLog('ALL');
@@ -176,12 +178,7 @@ export async function main(ns) {
// await ns.sleep(10); // await ns.sleep(10);
// } // }
let excludeServers = ['home'];
for (let index = 0; index < 25; index++) {
excludeServers.push(`home-${index}`);
}
excludeServers.push('CSEC');
excludeServers.push('avmnite-02h');
/** /**
* Recursively kill simple-hack.js running on servers in the network * Recursively kill simple-hack.js running on servers in the network
* @async * @async
@@ -194,7 +191,7 @@ export async function main(ns) {
let nextServer = availableServers[i]; let nextServer = availableServers[i];
if (nextServer != currentServer && nextServer != previousServer) { if (nextServer != currentServer && nextServer != previousServer) {
if (excludeServers.indexOf(nextServer) == -1) { if (EXCLUDE_SERVERS.indexOf(nextServer) == -1) {
let hackExitCode = await runHack(nextServer); let hackExitCode = await runHack(nextServer);
if (hackExitCode == 0) { if (hackExitCode == 0) {
+10 -4
View File
@@ -34,6 +34,8 @@ export async function main(ns) {
let targetPath = scanServer('home', ns.args[0]); let targetPath = scanServer('home', ns.args[0]);
ns.tprint(targetPath); ns.tprint(targetPath);
const terminalInput = document.getElementById("terminal-input");
const handler = Object.keys(terminalInput)[1];
let backdoorCommand = ''; let backdoorCommand = '';
for (let index = 1; index < targetPath.length; index++) { for (let index = 1; index < targetPath.length; index++) {
@@ -41,18 +43,22 @@ export async function main(ns) {
backdoorCommand += `connect ${server}; `; backdoorCommand += `connect ${server}; `;
} }
backdoorCommand += 'run BruteSSH.exe; ';
ns.tprint(backdoorCommand);
terminalInput.value = backdoorCommand;
terminalInput[handler].onChange({ target: terminalInput });
terminalInput[handler].onKeyDown({ key: 'Enter', preventDefault: () => null });
backdoorCommand = 'run BruteSSH.exe; ';
backdoorCommand += 'run FTPCrack.exe; '; backdoorCommand += 'run FTPCrack.exe; ';
backdoorCommand += 'run relaySMTP.exe; '; backdoorCommand += 'run relaySMTP.exe; ';
backdoorCommand += 'run HTTPWorm.exe; '; backdoorCommand += 'run HTTPWorm.exe; ';
backdoorCommand += 'run SQLInject.exe; '; backdoorCommand += 'run SQLInject.exe; ';
backdoorCommand += 'run NUKE.exe; '; backdoorCommand += 'run NUKE.exe; ';
backdoorCommand += 'backdoor; home'; backdoorCommand += 'backdoor';
ns.tprint(backdoorCommand); ns.tprint(backdoorCommand);
const terminalInput = document.getElementById("terminal-input");
terminalInput.value = backdoorCommand; terminalInput.value = backdoorCommand;
const handler = Object.keys(terminalInput)[1];
terminalInput[handler].onChange({ target: terminalInput }); terminalInput[handler].onChange({ target: terminalInput });
terminalInput[handler].onKeyDown({ key: 'Enter', preventDefault: () => null }); terminalInput[handler].onKeyDown({ key: 'Enter', preventDefault: () => null });
} }
+16
View File
@@ -0,0 +1,16 @@
/** @param {import(".").NS } ns */
// import { EXCLUDE_SERVERS } from "./constants.js";
export const EXCLUDE_SERVERS = ['home'];
for (let index = 0; index < 25; index++) {
EXCLUDE_SERVERS.push(`home-${index}`);
}
EXCLUDE_SERVERS.push('CSEC');
EXCLUDE_SERVERS.push('avmnite-02h');
EXCLUDE_SERVERS.push('I.I.I.I');
const COMPLETED_FACTIONS = [
'CyberSec',
'Netburners',
'NiteSec'
];
+1
View File
@@ -1,2 +1,3 @@
CyberSec CyberSec
Netburners Netburners
NiteSec
-11
View File
@@ -1,11 +0,0 @@
/** @param {import(".").NS } ns */
export async function main(ns) {
ns.disableLog('ALL');
async function writeLog(obj) {
await ns.tryWritePort(, obj + '\n');
}
}
+3 -9
View File
@@ -3,13 +3,7 @@
export async function main(ns) { export async function main(ns) {
// ns.disableLog('ALL'); // ns.disableLog('ALL');
let excludeServers = ['home']; // TODO: add increasing threshold if no servers lower than current threshold
for (let index = 0; index < 25; index++) {
excludeServers.push(`home-${index}`);
}
excludeServers.push('CSEC');
excludeServers.push('avmnite-02h');
async function scanServer(currentServer, previousServer = currentServer) { async function scanServer(currentServer, previousServer = currentServer) {
let availableServers = ns.scan(currentServer); let availableServers = ns.scan(currentServer);
@@ -17,7 +11,7 @@ export async function main(ns) {
let nextServer = availableServers[i]; let nextServer = availableServers[i];
if (nextServer != currentServer && nextServer != previousServer) { if (nextServer != currentServer && nextServer != previousServer) {
if (excludeServers.indexOf(nextServer) == -1 && ns.scriptRunning('simple-hack.js', nextServer)) { if (ns.scriptRunning('simple-hack.js', nextServer)) {
let maxMoney = ns.getServerMaxMoney(nextServer); let maxMoney = ns.getServerMaxMoney(nextServer);
let currentMoney = ns.getServerMoneyAvailable(nextServer); let currentMoney = ns.getServerMoneyAvailable(nextServer);
@@ -25,7 +19,7 @@ export async function main(ns) {
await ns.grow(nextServer); await ns.grow(nextServer);
} }
} }
await scanServer(nextServer, maxDepth, depth + 1, currentServer); await scanServer(nextServer, currentServer);
} }
} }
} }
+73 -7
View File
@@ -3,17 +3,75 @@
export async function main(ns) { export async function main(ns) {
ns.disableLog('ALL'); ns.disableLog('ALL');
let nodeCostThreshold = ns.args.length > 0 ? ns.args[0] : 0.1; const nodeCostThreshold = ns.args.length > 0 ? ns.args[0] : 0.8;
let upgradeCostThreshold = ns.args.length > 1 ? ns.args[1] : 0.05; const upgradeCostThreshold = ns.args.length > 1 ? ns.args[1] : 0.1;
let upgradeCount = ns.args.length > 2 ? ns.args[2] : 1; const upgradeCount = ns.args.length > 2 ? ns.args[2] : 1;
let levelCap = 150; const nodeCap = 18;
let ramCap = 64; const levelCap = 200;
let coreCap = 4; const ramCap = 64;
let nodeCap = 18; const coreCap = 16;
// const levelCap = 150;
// const ramCap = 64;
// const coreCap = 4;
ns.tprint(`Bot started {nodeCostThreshold: ${nodeCostThreshold}, upgradeCostThreshold: ${upgradeCostThreshold}, upgradeCount: ${upgradeCount}}`); ns.tprint(`Bot started {nodeCostThreshold: ${nodeCostThreshold}, upgradeCostThreshold: ${upgradeCostThreshold}, upgradeCount: ${upgradeCount}}`);
// const terminalInput = document.getElementById("terminal-input");
// const handler = Object.keys(terminalInput)[1];
const darkWebPrograms = [
{ name: 'BruteSSH.exe', cost: 0 },
{ name: 'FTPCrack.exe', cost: 1500000 },
{ name: 'relaySMTP.exe', cost: 5000000 },
{ name: 'HTTPWorm.exe', cost: 30000000 },
{ name: 'SQLInject.exe', cost: 250000000 },
{ name: 'ServerProfiler.exe', cost: 500000 },
{ name: 'DeepscanV1.exe', cost: 500000 },
{ name: 'DeepscanV2.exe', cost: 25000000 },
{ name: 'AutoLink.exe', cost: 1000000 },
{ name: 'Formulas.exe', cost: 5000000000 }
];
const HACKNET_UPGRADE_PATTERN = {
currentLevel: 0,
upgradeLevels: [
{
nodeCount: 6,
nodeLevel: 30,
ram: 4,
cores: 1
},
{
nodeCount: 9,
nodeLevel: 60,
ram: 8,
cores: 2
},
{
nodeCount: 12,
nodeLevel: 60,
ram: 8,
cores: 2
},
{
nodeCount: 15,
nodeLevel: 150,
ram: 16,
cores: 6
},
{
nodeCount: 18,
nodeLevel: 200,
ram: 64,
cores: 16
}
],
complete: false
};
while (true) { while (true) {
let currentMoney = ns.getServerMoneyAvailable("home"); let currentMoney = ns.getServerMoneyAvailable("home");
if (!HACKNET_UPGRADE_PATTERN.complete) {
let nodePurchaseCost = ns.hacknet.getPurchaseNodeCost(); let nodePurchaseCost = ns.hacknet.getPurchaseNodeCost();
let nodeCount = ns.hacknet.numNodes(); let nodeCount = ns.hacknet.numNodes();
@@ -41,6 +99,7 @@ export async function main(ns) {
currentMoney = ns.getServerMoneyAvailable("home"); currentMoney = ns.getServerMoneyAvailable("home");
} }
} }
}
let serverCost = ns.getPurchasedServerCost(16); let serverCost = ns.getPurchasedServerCost(16);
@@ -49,11 +108,18 @@ export async function main(ns) {
if (newServer != '') { if (newServer != '') {
ns.tprint(`Bought a server`); ns.tprint(`Bought a server`);
ns.scp('grow-helper.js', newServer); ns.scp('grow-helper.js', newServer);
ns.scp('constants.js', newServer);
let execExitCode = ns.exec('grow-helper.js', newServer, 5, 20); let execExitCode = ns.exec('grow-helper.js', newServer, 5, 20);
ns.tprint(`Exec 'grow-helper.js' exit code: ${execExitCode}`); ns.tprint(`Exec 'grow-helper.js' exit code: ${execExitCode}`);
} }
} }
// terminalInput.value = backdoorCommand;
// terminalInput[handler].onChange({ target: terminalInput });
// terminalInput[handler].onKeyDown({ key: 'Enter', preventDefault: () => null });
let logFiles = ['hack-log.js', 'nuke-log.js']; let logFiles = ['hack-log.js', 'nuke-log.js'];
for (let index = 0; index < logFiles.length; index++) { for (let index = 0; index < logFiles.length; index++) {
+2 -7
View File
@@ -1,15 +1,10 @@
/** @param {import(".").NS } ns */ /** @param {import(".").NS } ns */
import { EXCLUDE_SERVERS } from "./constants.js";
export async function main(ns) { export async function main(ns) {
ns.disableLog('ALL'); ns.disableLog('ALL');
let excludeServers = ['home'];
for (let index = 0; index < 25; index++) {
excludeServers.push(`home-${index}`);
}
excludeServers.push('CSEC');
excludeServers.push('avmnite-02h');
/** /**
* Recursively kill simple-hack.js running on servers in the network * Recursively kill simple-hack.js running on servers in the network
* @async * @async
@@ -22,7 +17,7 @@ export async function main(ns) {
let nextServer = availableServers[i]; let nextServer = availableServers[i];
if (nextServer != currentServer && nextServer != previousServer) { if (nextServer != currentServer && nextServer != previousServer) {
if (excludeServers.indexOf(nextServer) == -1) ns.scriptKill('simple-hack.js', nextServer); if (EXCLUDE_SERVERS.indexOf(nextServer) == -1) ns.scriptKill('simple-hack.js', nextServer);
scanServer(nextServer, currentServer); scanServer(nextServer, currentServer);
} }
} }
@@ -0,0 +1 @@
eyJjdG9yIjoiQml0YnVybmVyU2F2ZU9iamVjdCIsImRhdGEiOnsiUGxheWVyU2F2ZSI6IntcImN0b3JcIjpcIlBsYXllck9iamVjdFwiLFwiZGF0YVwiOntcImhwXCI6e1wiY3VycmVudFwiOjEwLFwibWF4XCI6MTB9LFwic2tpbGxzXCI6e1wiaGFja2luZ1wiOjM1NCxcInN0cmVuZ3RoXCI6ODcsXCJkZWZlbnNlXCI6MSxcImRleHRlcml0eVwiOjEsXCJhZ2lsaXR5XCI6MSxcImNoYXJpc21hXCI6MSxcImludGVsbGlnZW5jZVwiOjB9LFwiZXhwXCI6e1wiaGFja2luZ1wiOjM1OTA1OTEuNjEwMjUzMjQ2LFwic3RyZW5ndGhcIjo2Mjg4LjE1NjM2NDY5NzExMixcImRlZmVuc2VcIjowLFwiZGV4dGVyaXR5XCI6MCxcImFnaWxpdHlcIjowLFwiY2hhcmlzbWFcIjowLFwiaW50ZWxsaWdlbmNlXCI6MH0sXCJtdWx0c1wiOntcImhhY2tpbmdfY2hhbmNlXCI6MS4xMTQ1OTc2MTQ4MzE3NzI0LFwiaGFja2luZ19zcGVlZFwiOjEuMTI2Mzg2ODczMDMyMDc5NCxcImhhY2tpbmdfbW9uZXlcIjoxLjA2MTUyMTUzNzkzNTAyMTQsXCJoYWNraW5nX2dyb3dcIjoxLjA2MTUyMTUzNzkzNTAyMTQsXCJoYWNraW5nXCI6MS4yNTIyNTA0MjAyNjM0OTYzLFwic3RyZW5ndGhcIjoxLjA2MTUyMTUzNzkzNTAyMTQsXCJkZWZlbnNlXCI6MS4wNjE1MjE1Mzc5MzUwMjE0LFwiZGV4dGVyaXR5XCI6MS4xMTQ1OTc2MTQ4MzE3NzI0LFwiYWdpbGl0eVwiOjEuMTE0NTk3NjE0ODMxNzcyNCxcImNoYXJpc21hXCI6MS4wNjE1MjE1Mzc5MzUwMjE0LFwiaGFja2luZ19leHBcIjoxLjE2NzY3MzY5MTcyODUyMzgsXCJzdHJlbmd0aF9leHBcIjoxLjE2NzY3MzY5MTcyODUyMzgsXCJkZWZlbnNlX2V4cFwiOjEuMTY3NjczNjkxNzI4NTIzOCxcImRleHRlcml0eV9leHBcIjoxLjE2NzY3MzY5MTcyODUyMzgsXCJhZ2lsaXR5X2V4cFwiOjEuMTY3NjczNjkxNzI4NTIzOCxcImNoYXJpc21hX2V4cFwiOjEuMTY3NjczNjkxNzI4NTIzOCxcImNvbXBhbnlfcmVwXCI6MS4wNjE1MjE1Mzc5MzUwMjE0LFwiZmFjdGlvbl9yZXBcIjoxLjA2MTUyMTUzNzkzNTAyMTQsXCJjcmltZV9tb25leVwiOjEuMDYxNTIxNTM3OTM1MDIxNCxcImNyaW1lX3N1Y2Nlc3NcIjoxLjA2MTUyMTUzNzkzNTAyMTQsXCJoYWNrbmV0X25vZGVfbW9uZXlcIjoyLjY3NzI1NjgzNjMxNjMwNSxcImhhY2tuZXRfbm9kZV9wdXJjaGFzZV9jb3N0XCI6MC43MjA2NjM2NjMxMTE0OTQzLFwiaGFja25ldF9ub2RlX3JhbV9jb3N0XCI6MC45NDIwNDQwMDQwNjczMTI5LFwiaGFja25ldF9ub2RlX2NvcmVfY29zdFwiOjAuOTQyMDQ0MDA0MDY3MzEyOSxcImhhY2tuZXRfbm9kZV9sZXZlbF9jb3N0XCI6MC44MDA3Mzc0MDM0NTcyMTYsXCJ3b3JrX21vbmV5XCI6MS4wNjE1MjE1Mzc5MzUwMjE0LFwiYmxhZGVidXJuZXJfbWF4X3N0YW1pbmFcIjoxLFwiYmxhZGVidXJuZXJfc3RhbWluYV9nYWluXCI6MSxcImJsYWRlYnVybmVyX2FuYWx5c2lzXCI6MSxcImJsYWRlYnVybmVyX3N1Y2Nlc3NfY2hhbmNlXCI6MX0sXCJtb25leVwiOjM3OTYwNzkyLjc1MDkyMTMzLFwiY2l0eVwiOlwiU2VjdG9yLTEyXCIsXCJsb2NhdGlvblwiOlwiVHJhdmVsIEFnZW5jeVwiLFwiam9ic1wiOnt9LFwiY3VycmVudFNlcnZlclwiOlwiaG9tZVwiLFwicHVyY2hhc2VkU2VydmVyc1wiOltcImhvbWUtMFwiLFwiaG9tZS0xXCIsXCJob21lLTJcIixcImhvbWUtM1wiLFwiaG9tZS00XCIsXCJob21lLTVcIixcImhvbWUtNlwiLFwiaG9tZS03XCIsXCJob21lLThcIixcImhvbWUtOVwiLFwiaG9tZS0xMFwiLFwiaG9tZS0xMVwiLFwiaG9tZS0xMlwiLFwiaG9tZS0xM1wiLFwiaG9tZS0xNFwiLFwiaG9tZS0xNVwiLFwiaG9tZS0xNlwiLFwiaG9tZS0xN1wiLFwiaG9tZS0xOFwiLFwiaG9tZS0xOVwiLFwiaG9tZS0yMFwiLFwiaG9tZS0yMVwiLFwiaG9tZS0yMlwiLFwiaG9tZS0yM1wiLFwiaG9tZS0yNFwiXSxcImhhY2tuZXROb2Rlc1wiOlt7XCJjdG9yXCI6XCJIYWNrbmV0Tm9kZVwiLFwiZGF0YVwiOntcImNvcmVzXCI6MTYsXCJsZXZlbFwiOjIwMCxcIm1vbmV5R2FpblJhdGVQZXJTZWNvbmRcIjoyNDU1My45NTAyODc1OTkxMDYsXCJvbmxpbmVUaW1lU2Vjb25kc1wiOjEwMTk5MS4zOTk5OTkzMjQwMSxcInJhbVwiOjY0LFwidG90YWxNb25leUdlbmVyYXRlZFwiOjk4MzM0MjI1MS41NTkxNTIxLFwibmFtZVwiOlwiaGFja25ldC1ub2RlLTBcIn19LHtcImN0b3JcIjpcIkhhY2tuZXROb2RlXCIsXCJkYXRhXCI6e1wiY29yZXNcIjoxNixcImxldmVsXCI6MjAwLFwibW9uZXlHYWluUmF0ZVBlclNlY29uZFwiOjI0NTUzLjk1MDI4NzU5OTEwNixcIm9ubGluZVRpbWVTZWNvbmRzXCI6MTAxOTkxLjM5OTk5OTMyNDAxLFwicmFtXCI6NjQsXCJ0b3RhbE1vbmV5R2VuZXJhdGVkXCI6OTY4MzY1Mjc1LjE2ODM1NDUsXCJuYW1lXCI6XCJoYWNrbmV0LW5vZGUtMVwifX0se1wiY3RvclwiOlwiSGFja25ldE5vZGVcIixcImRhdGFcIjp7XCJjb3Jlc1wiOjE2LFwibGV2ZWxcIjoyMDAsXCJtb25leUdhaW5SYXRlUGVyU2Vjb25kXCI6MjQ1NTMuOTUwMjg3NTk5MTA2LFwib25saW5lVGltZVNlY29uZHNcIjoxMDE5OTEuMzk5OTk5MzI0MDEsXCJyYW1cIjo2NCxcInRvdGFsTW9uZXlHZW5lcmF0ZWRcIjo5Njc5MzU0MDIuOTgyNDU3NixcIm5hbWVcIjpcImhhY2tuZXQtbm9kZS0yXCJ9fSx7XCJjdG9yXCI6XCJIYWNrbmV0Tm9kZVwiLFwiZGF0YVwiOntcImNvcmVzXCI6MTYsXCJsZXZlbFwiOjIwMCxcIm1vbmV5R2FpblJhdGVQZXJTZWNvbmRcIjoyNDU1My45NTAyODc1OTkxMDYsXCJvbmxpbmVUaW1lU2Vjb25kc1wiOjEwMTk5MS4zOTk5OTkzMjQwMSxcInJhbVwiOjY0LFwidG90YWxNb25leUdlbmVyYXRlZFwiOjk2NzU3NTA3My41ODEwMjczLFwibmFtZVwiOlwiaGFja25ldC1ub2RlLTNcIn19LHtcImN0b3JcIjpcIkhhY2tuZXROb2RlXCIsXCJkYXRhXCI6e1wiY29yZXNcIjoxNixcImxldmVsXCI6MjAwLFwibW9uZXlHYWluUmF0ZVBlclNlY29uZFwiOjI0NTUzLjk1MDI4NzU5OTEwNixcIm9ubGluZVRpbWVTZWNvbmRzXCI6MTAxMzY3LjU5OTk5OTMzMjczLFwicmFtXCI6NjQsXCJ0b3RhbE1vbmV5R2VuZXJhdGVkXCI6OTY3MTY1NTM0LjI5NTk1NzgsXCJuYW1lXCI6XCJoYWNrbmV0LW5vZGUtNFwifX0se1wiY3RvclwiOlwiSGFja25ldE5vZGVcIixcImRhdGFcIjp7XCJjb3Jlc1wiOjE2LFwibGV2ZWxcIjoyMDAsXCJtb25leUdhaW5SYXRlUGVyU2Vjb25kXCI6MjQ1NTMuOTUwMjg3NTk5MTA2LFwib25saW5lVGltZVNlY29uZHNcIjoxMDA4NzguMTk5OTk5MzM5NTcsXCJyYW1cIjo2NCxcInRvdGFsTW9uZXlHZW5lcmF0ZWRcIjo5NjY3MTU2NzQuODU3Mzc5MSxcIm5hbWVcIjpcImhhY2tuZXQtbm9kZS01XCJ9fSx7XCJjdG9yXCI6XCJIYWNrbmV0Tm9kZVwiLFwiZGF0YVwiOntcImNvcmVzXCI6MTYsXCJsZXZlbFwiOjIwMCxcIm1vbmV5R2FpblJhdGVQZXJTZWNvbmRcIjoyNDU1My45NTAyODc1OTkxMDYsXCJvbmxpbmVUaW1lU2Vjb25kc1wiOjEwMDE5Ni4zOTk5OTkzNDkxMyxcInJhbVwiOjY0LFwidG90YWxNb25leUdlbmVyYXRlZFwiOjk2NjE4NTY0MC40NzA1MTUsXCJuYW1lXCI6XCJoYWNrbmV0LW5vZGUtNlwifX0se1wiY3RvclwiOlwiSGFja25ldE5vZGVcIixcImRhdGFcIjp7XCJjb3Jlc1wiOjE2LFwibGV2ZWxcIjoyMDAsXCJtb25leUdhaW5SYXRlUGVyU2Vjb25kXCI6MjQ1NTMuOTUwMjg3NTk5MTA2LFwib25saW5lVGltZVNlY29uZHNcIjo5OTI5OC43OTk5OTkzNjE3MyxcInJhbVwiOjY0LFwidG90YWxNb25leUdlbmVyYXRlZFwLine truncated
@@ -0,0 +1 @@
eyJjdG9yIjoiQml0YnVybmVyU2F2ZU9iamVjdCIsImRhdGEiOnsiUGxheWVyU2F2ZSI6IntcImN0b3JcIjpcIlBsYXllck9iamVjdFwiLFwiZGF0YVwiOntcImhwXCI6e1wiY3VycmVudFwiOjEwLFwibWF4XCI6MTB9LFwic2tpbGxzXCI6e1wiaGFja2luZ1wiOjM5MCxcInN0cmVuZ3RoXCI6MSxcImRlZmVuc2VcIjoxLFwiZGV4dGVyaXR5XCI6MSxcImFnaWxpdHlcIjoxLFwiY2hhcmlzbWFcIjoxLFwiaW50ZWxsaWdlbmNlXCI6MH0sXCJleHBcIjp7XCJoYWNraW5nXCI6ODc4NTM1Ljg5MjAwMzM0MjQsXCJzdHJlbmd0aFwiOjAsXCJkZWZlbnNlXCI6MCxcImRleHRlcml0eVwiOjAsXCJhZ2lsaXR5XCI6MCxcImNoYXJpc21hXCI6MCxcImludGVsbGlnZW5jZVwiOjB9LFwibXVsdHNcIjp7XCJoYWNraW5nX2NoYW5jZVwiOjEuMjA1NzkwMzc2OTU4NjEzLFwiaGFja2luZ19zcGVlZFwiOjEuMjA3NDAzMjE4NTQzMTg1LFwiaGFja2luZ19tb25leVwiOjEuNTcyMTc1NjYxNTY3MzUyMyxcImhhY2tpbmdfZ3Jvd1wiOjEuMDkzNjg3NDE2NzQyNTA2LFwiaGFja2luZ1wiOjEuNjQwMzIzODUyNTM2ODYzNSxcInN0cmVuZ3RoXCI6MS4wOTM2ODc0MTY3NDI1MDYsXCJkZWZlbnNlXCI6MS4wOTM2ODc0MTY3NDI1MDYsXCJkZXh0ZXJpdHlcIjoxLjE0ODM3MTc4NzU3OTYzMTMsXCJhZ2lsaXR5XCI6MS4xNDgzNzE3ODc1Nzk2MzEzLFwiY2hhcmlzbWFcIjoxLjA5MzY4NzQxNjc0MjUwNixcImhhY2tpbmdfZXhwXCI6Mi4wODgyNDIzMjI0NzY4MzU2LFwic3RyZW5ndGhfZXhwXCI6MS4zODM1MTQ1ODIxNzkyNyxcImRlZmVuc2VfZXhwXCI6MS4zODM1MTQ1ODIxNzkyNyxcImRleHRlcml0eV9leHBcIjoxLjM4MzUxNDU4MjE3OTI3LFwiYWdpbGl0eV9leHBcIjoxLjM4MzUxNDU4MjE3OTI3LFwiY2hhcmlzbWFfZXhwXCI6MS4zODM1MTQ1ODIxNzkyNyxcImNvbXBhbnlfcmVwXCI6MS4wOTM2ODc0MTY3NDI1MDYsXCJmYWN0aW9uX3JlcFwiOjEuMDkzNjg3NDE2NzQyNTA2LFwiY3JpbWVfbW9uZXlcIjoxLjA5MzY4NzQxNjc0MjUwNixcImNyaW1lX3N1Y2Nlc3NcIjoxLjA5MzY4NzQxNjc0MjUwNixcImhhY2tuZXRfbm9kZV9tb25leVwiOjIuNzU4MzgyMTk4MjE5OTE5NyxcImhhY2tuZXRfbm9kZV9wdXJjaGFzZV9jb3N0XCI6MC42OTk0Njg1OTQzMDY4NzY1LFwiaGFja25ldF9ub2RlX3JhbV9jb3N0XCI6MC45MTQzMzgwMzE3NzM2OTQ4LFwiaGFja25ldF9ub2RlX2NvcmVfY29zdFwiOjAuOTE0MzM4MDMxNzczNjk0OCxcImhhY2tuZXRfbm9kZV9sZXZlbF9jb3N0XCI6MC43NzcxODczMjcwMDc2NDA1LFwid29ya19tb25leVwiOjEuMDkzNjg3NDE2NzQyNTA2LFwiYmxhZGVidXJuZXJfbWF4X3N0YW1pbmFcIjoxLFwiYmxhZGVidXJuZXJfc3RhbWluYV9nYWluXCI6MSxcImJsYWRlYnVybmVyX2FuYWx5c2lzXCI6MSxcImJsYWRlYnVybmVyX3N1Y2Nlc3NfY2hhbmNlXCI6MX0sXCJtb25leVwiOjM1NjIzMTkuNjI2MzQ3Nzk4NCxcImNpdHlcIjpcIlNlY3Rvci0xMlwiLFwibG9jYXRpb25cIjpcIkFscGhhIEVudGVycHJpc2VzXCIsXCJqb2JzXCI6e30sXCJjdXJyZW50U2VydmVyXCI6XCJob21lXCIsXCJwdXJjaGFzZWRTZXJ2ZXJzXCI6W1wiaG9tZS0wXCIsXCJob21lLTFcIixcImhvbWUtMlwiLFwiaG9tZS0zXCIsXCJob21lLTRcIixcImhvbWUtNVwiLFwiaG9tZS02XCIsXCJob21lLTdcIixcImhvbWUtOFwiLFwiaG9tZS05XCIsXCJob21lLTEwXCIsXCJob21lLTExXCIsXCJob21lLTEyXCIsXCJob21lLTEzXCIsXCJob21lLTE0XCIsXCJob21lLTE1XCIsXCJob21lLTE2XCIsXCJob21lLTE3XCIsXCJob21lLTE4XCIsXCJob21lLTE5XCIsXCJob21lLTIwXCIsXCJob21lLTIxXCIsXCJob21lLTIyXCIsXCJob21lLTIzXCIsXCJob21lLTI0XCJdLFwiaGFja25ldE5vZGVzXCI6W3tcImN0b3JcIjpcIkhhY2tuZXROb2RlXCIsXCJkYXRhXCI6e1wiY29yZXNcIjozLFwibGV2ZWxcIjoxOTIsXCJtb25leUdhaW5SYXRlUGVyU2Vjb25kXCI6MTc3NC41NjA5MTc5NzMyNCxcIm9ubGluZVRpbWVTZWNvbmRzXCI6MTU5NzcuODAwMDAwMDI0NDg3LFwicmFtXCI6MTYsXCJ0b3RhbE1vbmV5R2VuZXJhdGVkXCI6MTI4NTgxNTcuNTgyNzE1NzAxLFwibmFtZVwiOlwiaGFja25ldC1ub2RlLTBcIn19LHtcImN0b3JcIjpcIkhhY2tuZXROb2RlXCIsXCJkYXRhXCI6e1wiY29yZXNcIjozLFwibGV2ZWxcIjoxOTAsXCJtb25leUdhaW5SYXRlUGVyU2Vjb25kXCI6MTc1Ni4wNzU5MDg0MTEwMTg5LFwib25saW5lVGltZVNlY29uZHNcIjoxNTk3Ny42MDAwMDAwMjQ0ODgsXCJyYW1cIjoxNixcInRvdGFsTW9uZXlHZW5lcmF0ZWRcIjoxMjM3NjE5OC4zMjYzMTA0MzMsXCJuYW1lXCI6XCJoYWNrbmV0LW5vZGUtMVwifX0se1wiY3RvclwiOlwiSGFja25ldE5vZGVcIixcImRhdGFcIjp7XCJjb3Jlc1wiOjIsXCJsZXZlbFwiOjE5MCxcIm1vbmV5R2FpblJhdGVQZXJTZWNvbmRcIjoxNTM2LjU2NjQxOTg1OTY0MTcsXCJvbmxpbmVUaW1lU2Vjb25kc1wiOjE1OTc3LjYwMDAwMDAyNDQ4OCxcInJhbVwiOjE2LFwidG90YWxNb25leUdlbmVyYXRlZFwiOjExOTUxNTA4LjI1ODg0Mzg0MyxcIm5hbWVcIjpcImhhY2tuZXQtbm9kZS0yXCJ9fSx7XCJjdG9yXCI6XCJIYWNrbmV0Tm9kZVwiLFwiZGF0YVwiOntcImNvcmVzXCI6MixcImxldmVsXCI6MTg5LFwibW9uZXlHYWluUmF0ZVBlclNlY29uZFwiOjE1MjguNDc5MjI4MTc2MTY5NyxcIm9ubGluZVRpbWVTZWNvbmRzXCI6MTU5NzcuNjAwMDAwMDI0NDg4LFwicmFtXCI6MTYsXCJ0b3RhbE1vbmV5R2VuZXJhdGVkXCI6MTE4MTMyMjQuMDY0NjY1ODMsXCJuYW1lXCI6XCJoYWNrbmV0LW5vZGUtM1wifX0se1wiY3RvclwiOlwiSGFja25ldE5vZGVcIixcImRhdGFcIjp7XCJjb3Jlc1wiOjIsXCJsZXZlbFwiOjE4OCxcIm1vbmV5R2FpblJhdGVQZXJTZWNvbmRcIjoxNTIwLjM5MjAzNjQ5MjY5ODMsXCJvbmxpbmVUaW1lU2Vjb25kc1wiOjE1OTc3LjYwMDAwMDAyNDQ4OCxcInJhbVwiOjE2LFwidG90YWxNb25leUdlbmVyYXRlZFwiOjExNjY3NTExLjgyNjk5NjYyLFwibmFtZVwiOlwiaGFja25ldC1ub2RlLTRcIn19LHtcImN0b3JcIjpcIkhhY2tuZXROb2RlXCIsXCJkYXRhXCI6e1wiY29yZXNcIjoyLFwibGV2ZWxcIjoxODgsXCJtb25leUdhaW5SYXRlUGVyU2Vjb25kXCI6MTUyMC4zOTIwMzY0OTI2OTgzLFwib25saW5lVGltZVNlY29uZHNcIjoxNTk3Ny40MDAwMDAwMjQ0ODUsXCJyYW1cIjoxNixcInRvdGFsTW9uZXlHZW5lcmF0ZWRcIjoxMTQ5MjY5NS4yODU0NTU1NSxcIm5hbWVcIjpcImhhY2tuZXQtbm9kZS01XCJ9fSx7XCJjdG9yXCI6XCJIYWNrbmV0Tm9kZVwiLFwiZGF0YVwiOntcImNvcmVzXCI6MixcImxldmVsXCI6MTg3LFwibW9uZXlHYWluUmF0ZVBlclNlY29uZFwiOjE1MTIuMzA0ODQ0ODA5MjI2MyxcIm9ubGluZVRpbWVTZWNvbmRzXCI6MTU5NzcuNDAwMDAwMDI0NDg1LFwicmFtXCI6MTYsXCJ0b3RhbE1vbmV5R2VuZXJhdGVkXCI6MTE0NDQxOTAuMzQyNDYyNDk1LFwibmFtZVwiOlwiaGFja25ldC1ub2RlLTZcIn19LHtcImN0b3JcIjpcIkhhY2tuZXROb2RlXCIsXCJkYXRhXCI6e1wiY29yZXNcIjoyLFwibGV2ZWxcIjoxODcsXCJtb25leUdhaW5SYXRlUGVyU2Vjb25kXCI6MTUxMi4zMDQ4NDQ4MDkyMjYzLFwib25saW5lVGltZVNlY29uZHNcIjoxNDk3NC42MDAwMDAwMjA4MzksXCJyYW1cIjoxNixcInRvdGFsTW9uZXlHZW5lcmF0ZWRcIjoxMDk2NDM0Mi4yNjk0OTY1MixcIm5hbWVcIjpcImhhY2tLine truncated
+1 -1
View File
@@ -48,7 +48,7 @@ export async function main(ns) {
currentSecurity = ns.getServerSecurityLevel(server); currentSecurity = ns.getServerSecurityLevel(server);
} }
await writeLog('LOG', `${server.replaceAll('-', '_')} = {loop: ${++loop}, hack: ${Math.floor(hackedMoney)}, money: ${Math.floor(currentMoney)} / ${Math.floor(maxMoney)} == ${((currentMoney / maxMoney) * 100).toFixed(2)}, security: ${currentSecurity.toFixed(2)} / ${Math.floor(minSecurity)} == ${((currentSecurity / minSecurity) * 100).toFixed(4)}};`); await writeLog('LOG', `{server: '${server}', loop: ${++loop}, hack: ${Math.floor(hackedMoney)}, money: ${Math.floor(currentMoney)} / ${Math.floor(maxMoney)} == ${((currentMoney / maxMoney) * 100).toFixed(2)}, security: ${currentSecurity.toFixed(2)} / ${Math.floor(minSecurity)} == ${((currentSecurity / minSecurity) * 100).toFixed(4)}}`);
await ns.sleep(50); await ns.sleep(50);
} }
} }