bitnode1
This commit is contained in:
1 parent
af84e9b05f
commit
673abd49b2
9 files changed
+133
-130
No files matched your search
@@ -5,7 +5,7 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"settings": {
|
"settings": {
|
||||||
"bitburner.authToken": "iQitq5P5Qm+bzKxz8I3KQow1tOfRtZByqcdIP9H8b2aEmwsznA9osU5xHdgJnyUt",
|
"bitburner.authToken": "P0tylWtZUP/26SeH6U8pl1jhOrcsXN5gLfGkqnE5mRWn11Yusyy0VyY9bYBFK1kw",
|
||||||
"bitburner.fileWatcher.enable": true,
|
"bitburner.fileWatcher.enable": true,
|
||||||
"bitburner.showFileWatcherEnabledNotification": false,
|
"bitburner.showFileWatcherEnabledNotification": false,
|
||||||
"bitburner.showPushSuccessNotification": false,
|
"bitburner.showPushSuccessNotification": false,
|
||||||
|
|||||||
+5
-5
@@ -14,7 +14,7 @@
|
|||||||
|
|
||||||
export async function main(ns) {
|
export async function main(ns) {
|
||||||
// ns.disableLog('ALL');
|
// ns.disableLog('ALL');
|
||||||
|
|
||||||
async function writeLog(type, obj) {
|
async function writeLog(type, obj) {
|
||||||
let timeNow = new Date();
|
let timeNow = new Date();
|
||||||
let year = timeNow.getFullYear().toString().substring(2);
|
let year = timeNow.getFullYear().toString().substring(2);
|
||||||
@@ -25,7 +25,7 @@ export async function main(ns) {
|
|||||||
let second = (timeNow.getSeconds() < 10 ? '0' : '') + timeNow.getSeconds();
|
let second = (timeNow.getSeconds() < 10 ? '0' : '') + timeNow.getSeconds();
|
||||||
let timestamp = `${year}${month}${day}_${hour}${minute}${second}`;
|
let timestamp = `${year}${month}${day}_${hour}${minute}${second}`;
|
||||||
await ns.tryWritePort(2, `t${timestamp}_${type} = ${obj};\n`);
|
await ns.tryWritePort(2, `t${timestamp}_${type} = ${obj};\n`);
|
||||||
|
|
||||||
if (['ERROR', 'TERMINAL'].indexOf(type) != -1) ns.tprint(`${timestamp} ${type} = ${obj}`);
|
if (['ERROR', 'TERMINAL'].indexOf(type) != -1) ns.tprint(`${timestamp} ${type} = ${obj}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -117,13 +117,13 @@ export async function main(ns) {
|
|||||||
result.concat(scanServer(nextServer, currentServer));
|
result.concat(scanServer(nextServer, currentServer));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return [currentServer].concat(result);
|
return [currentServer].concat(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
while(true){
|
while (true) {
|
||||||
let network = scanServer('home');
|
let network = scanServer('home');
|
||||||
|
|
||||||
await sleep(100);
|
await ns.sleep(100);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
/** @param {import(".").NS } ns */
|
||||||
|
|
||||||
|
export async function main(ns) {
|
||||||
|
// ns.disableLog('ALL');
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
+16
-1
@@ -9,10 +9,25 @@ export const EXCLUDE_SERVERS = [
|
|||||||
'run4theh111z'
|
'run4theh111z'
|
||||||
];
|
];
|
||||||
|
|
||||||
for (let index = 0; index < 25; index++) {
|
for (let index = 0; index < 1024; index++) {
|
||||||
EXCLUDE_SERVERS.push(`home-${index}`);
|
EXCLUDE_SERVERS.push(`home-${index}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const DARKWEB_PROGRAMS = [
|
||||||
|
{ 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 COMPLETED_FACTIONS = [
|
const COMPLETED_FACTIONS = [
|
||||||
'CyberSec',
|
'CyberSec',
|
||||||
'Netburners',
|
'Netburners',
|
||||||
|
|||||||
+56
-116
@@ -3,134 +3,74 @@
|
|||||||
export async function main(ns) {
|
export async function main(ns) {
|
||||||
ns.disableLog('ALL');
|
ns.disableLog('ALL');
|
||||||
|
|
||||||
const nodeCostThreshold = ns.args.length > 0 ? ns.args[0] : 0.8;
|
const nodeCostThreshold = ns.args.length > 0 ? ns.args[0] : 0.2;
|
||||||
const upgradeCostThreshold = ns.args.length > 1 ? ns.args[1] : 0.1;
|
const upgradeCostThreshold = ns.args.length > 1 ? ns.args[1] : 0.1;
|
||||||
const upgradeCount = ns.args.length > 2 ? ns.args[2] : 1;
|
const upgradeCount = ns.args.length > 2 ? ns.args[2] : 1;
|
||||||
const nodeCap = 18;
|
const helperBuyThreshold = ns.args.length > 3 ? ns.args[3] : 0.2;
|
||||||
|
const nodeCap = 200;
|
||||||
const levelCap = 200;
|
const levelCap = 200;
|
||||||
const ramCap = 64;
|
const ramCap = 64;
|
||||||
const coreCap = 16;
|
const coreCap = 16;
|
||||||
const serverRAM = 32;
|
const serverRAM = 32;
|
||||||
// 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) {
|
||||||
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();
|
|
||||||
|
|
||||||
if (nodeCount < nodeCap && nodePurchaseCost / Math.abs(currentMoney) < nodeCostThreshold) {
|
if (nodeCount < nodeCap && nodePurchaseCost / Math.abs(currentMoney) < nodeCostThreshold) {
|
||||||
ns.hacknet.purchaseNode();
|
ns.hacknet.purchaseNode();
|
||||||
currentMoney = ns.getServerMoneyAvailable("home");
|
currentMoney = ns.getServerMoneyAvailable("home");
|
||||||
++nodeCount;
|
++nodeCount;
|
||||||
}
|
|
||||||
|
|
||||||
for (let index = 0; index < nodeCount; ++index) {
|
|
||||||
let nodeStats = ns.hacknet.getNodeStats(index);
|
|
||||||
|
|
||||||
if (nodeStats.level < levelCap && ns.hacknet.getLevelUpgradeCost(index, upgradeCount) / Math.abs(currentMoney) < upgradeCostThreshold) {
|
|
||||||
ns.hacknet.upgradeLevel(index, upgradeCount);
|
|
||||||
currentMoney = ns.getServerMoneyAvailable("home");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (nodeStats.ram < ramCap && ns.hacknet.getRamUpgradeCost(index, upgradeCount) / Math.abs(currentMoney) < upgradeCostThreshold) {
|
|
||||||
ns.hacknet.upgradeRam(index, upgradeCount);
|
|
||||||
currentMoney = ns.getServerMoneyAvailable("home");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (nodeStats.cores < coreCap && ns.hacknet.getCoreUpgradeCost(index, upgradeCount) / Math.abs(currentMoney) < upgradeCostThreshold) {
|
|
||||||
ns.hacknet.upgradeCore(index, upgradeCount);
|
|
||||||
currentMoney = ns.getServerMoneyAvailable("home");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
let serverCost = ns.getPurchasedServerCost(serverRAM);
|
|
||||||
|
|
||||||
if (serverCost < currentMoney) {
|
|
||||||
let newServer = ns.purchaseServer('home', serverRAM);
|
|
||||||
if (newServer != '') {
|
|
||||||
ns.tprint(`Bought a server`);
|
|
||||||
ns.scp('grow-helper.js', newServer);
|
|
||||||
ns.scp('constants.js', newServer);
|
|
||||||
let execExitCode = ns.exec('grow-helper.js', newServer, 5, 20);
|
|
||||||
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'];
|
|
||||||
|
|
||||||
for (let index = 0; index < logFiles.length; index++) {
|
|
||||||
const logFile = logFiles[index];
|
|
||||||
let portData = ns.readPort(index + 1);
|
|
||||||
if (portData != 'NULL PORT DATA') ns.write(logFile, portData, 'a');
|
|
||||||
}
|
|
||||||
|
|
||||||
await ns.sleep(1000);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (let index = 0; index < nodeCount; ++index) {
|
||||||
|
let nodeStats = ns.hacknet.getNodeStats(index);
|
||||||
|
|
||||||
|
if (nodeStats.level < levelCap && ns.hacknet.getLevelUpgradeCost(index, upgradeCount) / Math.abs(currentMoney) < upgradeCostThreshold) {
|
||||||
|
ns.hacknet.upgradeLevel(index, upgradeCount);
|
||||||
|
currentMoney = ns.getServerMoneyAvailable("home");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (nodeStats.ram < ramCap && ns.hacknet.getRamUpgradeCost(index, upgradeCount) / Math.abs(currentMoney) < upgradeCostThreshold) {
|
||||||
|
ns.hacknet.upgradeRam(index, upgradeCount);
|
||||||
|
currentMoney = ns.getServerMoneyAvailable("home");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (nodeStats.cores < coreCap && ns.hacknet.getCoreUpgradeCost(index, upgradeCount) / Math.abs(currentMoney) < upgradeCostThreshold) {
|
||||||
|
ns.hacknet.upgradeCore(index, upgradeCount);
|
||||||
|
currentMoney = ns.getServerMoneyAvailable("home");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let serverCost = ns.getPurchasedServerCost(serverRAM);
|
||||||
|
|
||||||
|
if (serverCost < currentMoney * helperBuyThreshold) {
|
||||||
|
let newServer = ns.purchaseServer('home', serverRAM);
|
||||||
|
if (newServer != '') {
|
||||||
|
ns.tprint(`Bought a server`);
|
||||||
|
ns.scp('grow-helper.js', newServer);
|
||||||
|
ns.scp('constants.js', newServer);
|
||||||
|
let execExitCode = ns.exec('grow-helper.js', newServer, 10, 20);
|
||||||
|
ns.tprint(`Exec 'grow-helper.js' exit code: ${execExitCode}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
let logFiles = ['hack-log.js', 'nuke-log.js'];
|
||||||
|
|
||||||
|
for (let index = 0; index < logFiles.length; index++) {
|
||||||
|
const logFile = logFiles[index];
|
||||||
|
let portData = ns.readPort(index + 1);
|
||||||
|
if (portData != 'NULL PORT DATA') ns.write(logFile, portData, 'a');
|
||||||
|
}
|
||||||
|
|
||||||
|
await ns.sleep(1000);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
/** @param {import(".").NS } ns */
|
||||||
|
|
||||||
|
export async function main(ns) {
|
||||||
|
ns.disableLog('ALL');
|
||||||
|
|
||||||
|
for (let server = 0; ns.serverExists(`home-${server}`); server++) {
|
||||||
|
ns.scriptKill('grow-helper.js', `home-${server}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
eyJjdG9yIjoiQml0YnVybmVyU2F2ZU9iamVjdCIsImRhdGEiOnsiUGxheWVyU2F2ZSI6IntcImN0b3JcIjpcIlBsYXllck9iamVjdFwiLFwiZGF0YVwiOntcImhwXCI6e1wiY3VycmVudFwiOjExLFwibWF4XCI6MTF9LFwic2tpbGxzXCI6e1wiaGFja2luZ1wiOjMwMzUsXCJzdHJlbmd0aFwiOjcsXCJkZWZlbnNlXCI6MTMsXCJkZXh0ZXJpdHlcIjozLFwiYWdpbGl0eVwiOjMsXCJjaGFyaXNtYVwiOjIsXCJpbnRlbGxpZ2VuY2VcIjowfSxcImV4cFwiOntcImhhY2tpbmdcIjo2OTE1MDA0NzYuMTQwOTAwNixcInN0cmVuZ3RoXCI6MCxcImRlZmVuc2VcIjowLFwiZGV4dGVyaXR5XCI6MCxcImFnaWxpdHlcIjowLFwiY2hhcmlzbWFcIjowLFwiaW50ZWxsaWdlbmNlXCI6MH0sXCJtdWx0c1wiOntcImhhY2tpbmdfY2hhbmNlXCI6My4wNzA1MzI0MjQ4NDA4OTI3LFwiaGFja2luZ19zcGVlZFwiOjIuNjI4MzM3NjEyNDA2NjcsXCJoYWNraW5nX21vbmV5XCI6MTQuNzkxNTAxMzQxODcyODI1LFwiaGFja2luZ19ncm93XCI6My41MjY5MzM5NDY1Njc2NTQ2LFwiaGFja2luZ1wiOjYuNzI1OTU4ODkyMjE4OTE2LFwic3RyZW5ndGhcIjo3LjM0NTA0MTcyNDY1NjcwMixcImRlZmVuc2VcIjoxMy4xMTQ2MjUyMjQzMTQ1NzIsXCJkZXh0ZXJpdHlcIjozLjgxNjI0OTc0ODk3ODE3OSxcImFnaWxpdHlcIjozLjQyODE3OTc5NjA2Mzc2MDgsXCJjaGFyaXNtYVwiOjIuMTI4MjUyNzEyOTAwMjUzMyxcImhhY2tpbmdfZXhwXCI6OC4wNTA0MTY4MzEyODg3MjksXCJzdHJlbmd0aF9leHBcIjoyLjc1MzQyNjk0NzMxNDcwMzMsXCJkZWZlbnNlX2V4cFwiOjIuNzUzNDI2OTQ3MzE0NzAzMyxcImRleHRlcml0eV9leHBcIjoyLjc1MzQyNjk0NzMxNDcwMzMsXCJhZ2lsaXR5X2V4cFwiOjIuNzUzNDI2OTQ3MzE0NzAzMyxcImNoYXJpc21hX2V4cFwiOjIuMDM5NTc1NTE2NTI5NDA5NixcImNvbXBhbnlfcmVwXCI6Mi42OTIyMzk2ODE4MTg4MjEsXCJmYWN0aW9uX3JlcFwiOjIuMDM5NTc1NTE2NTI5NDA5NixcImNyaW1lX21vbmV5XCI6MS43NzM1NDM5Mjc0MTY4Nzc4LFwiY3JpbWVfc3VjY2Vzc1wiOjIuMDE1MzkwODI2NjEwMDg4NCxcImhhY2tuZXRfbm9kZV9tb25leVwiOjQuMDY2NDAzNjg2MDgwNTEsXCJoYWNrbmV0X25vZGVfcHVyY2hhc2VfY29zdFwiOjAuNDc0NDczNzI4NTU2MzcyNSxcImhhY2tuZXRfbm9kZV9yYW1fY29zdFwiOjAuNjIwMjI3MDk2MTUyMTIwOSxcImhhY2tuZXRfbm9kZV9jb3JlX2Nvc3RcIjowLjYyMDIyNzA5NjE1MjEyMDksXCJoYWNrbmV0X25vZGVfbGV2ZWxfY29zdFwiOjAuNTI3MTkzMDMxNzI5MzAyOCxcIndvcmtfbW9uZXlcIjoxLjc3MzU0MzkyNzQxNjg3NzgsXCJibGFkZWJ1cm5lcl9tYXhfc3RhbWluYVwiOjEsXCJibGFkZWJ1cm5lcl9zdGFtaW5hX2dhaW5cIjoxLFwiYmxhZGVidXJuZXJfYW5hbHlzaXNcIjoxLFwiYmxhZGVidXJuZXJfc3VjY2Vzc19jaGFuY2VcIjoxfSxcImF1Z21lbnRhdGlvbnNcIjpbe1wibGV2ZWxcIjoxLFwibmFtZVwiOlwiU3luYXB0aWMgRW5oYW5jZW1lbnQgSW1wbGFudFwifSx7XCJsZXZlbFwiOjEsXCJuYW1lXCI6XCJOZXVyb3RyYWluZXIgSVwifSx7XCJsZXZlbFwiOjQ4LFwibmFtZVwiOlwiTmV1cm9GbHV4IEdvdmVybm9yXCJ9LHtcImxldmVsXCI6MSxcIm5hbWVcIjpcIkhhY2tuZXQgTm9kZSBOSUMgQXJjaGl0ZWN0dXJlIE5ldXJhbC1VcGxvYWRcIn0se1wibGV2ZWxcIjoxLFwibmFtZVwiOlwiV2lyZWQgUmVmbGV4ZXNcIn0se1wibGV2ZWxcIjoxLFwibmFtZVwiOlwiQ2FzaFJvb3QgU3RhcnRlciBLaXRcIn0se1wibGV2ZWxcIjoxLFwibmFtZVwiOlwiQ3JhbmlhbCBTaWduYWwgUHJvY2Vzc29ycyAtIEdlbiBJXCJ9LHtcImxldmVsXCI6MSxcIm5hbWVcIjpcIkNyYW5pYWwgU2lnbmFsIFByb2Nlc3NvcnMgLSBHZW4gSUlcIn0se1wibGV2ZWxcIjoxLFwibmFtZVwiOlwiSGFja25ldCBOb2RlIENvcmUgRGlyZWN0LU5ldXJhbCBJbnRlcmZhY2VcIn0se1wibGV2ZWxcIjoxLFwibmFtZVwiOlwiSGFja25ldCBOb2RlIEtlcm5lbCBEaXJlY3QtTmV1cmFsIEludGVyZmFjZVwifSx7XCJsZXZlbFwiOjEsXCJuYW1lXCI6XCJIYWNrbmV0IE5vZGUgQ1BVIEFyY2hpdGVjdHVyZSBOZXVyYWwtVXBsb2FkXCJ9LHtcImxldmVsXCI6MSxcIm5hbWVcIjpcIkJpdFdpcmVcIn0se1wibGV2ZWxcIjoxLFwibmFtZVwiOlwiSGFja25ldCBOb2RlIENhY2hlIEFyY2hpdGVjdHVyZSBOZXVyYWwtVXBsb2FkXCJ9LHtcImxldmVsXCI6MSxcIm5hbWVcIjpcIkRhdGFKYWNrXCJ9LHtcImxldmVsXCI6MSxcIm5hbWVcIjpcIkNyYW5pYWwgU2lnbmFsIFByb2Nlc3NvcnMgLSBHZW4gSUlJXCJ9LHtcImxldmVsXCI6MSxcIm5hbWVcIjpcIkNSVFg0Mi1BQSBHZW5lIE1vZGlmaWNhdGlvblwifSx7XCJsZXZlbFwiOjEsXCJuYW1lXCI6XCJOZXVyYWwtUmV0ZW50aW9uIEVuaGFuY2VtZW50XCJ9LHtcImxldmVsXCI6MSxcIm5hbWVcIjpcIkVtYmVkZGVkIE5ldGJ1cm5lciBNb2R1bGVcIn0se1wibGV2ZWxcIjoxLFwibmFtZVwiOlwiTmV1cm90cmFpbmVyIElJXCJ9LHtcImxldmVsXCI6MSxcIm5hbWVcIjpcIkFydGlmaWNpYWwgU3luYXB0aWMgUG90ZW50aWF0aW9uXCJ9LHtcImxldmVsXCI6MSxcIm5hbWVcIjpcIkVtYmVkZGVkIE5ldGJ1cm5lciBNb2R1bGUgQ29yZSBJbXBsYW50XCJ9LHtcImxldmVsXCI6MSxcIm5hbWVcIjpcIkNyYW5pYWwgU2lnbmFsIFByb2Nlc3NvcnMgLSBHZW4gSVZcIn0se1wibGV2ZWxcIjoxLFwibmFtZVwiOlwiVGhlIEJsYWNrIEhhbmRcIn0se1wibGV2ZWxcIjoxLFwibmFtZVwiOlwiTmV1cmFsc3RpbXVsYXRvclwifSx7XCJsZXZlbFwiOjEsXCJuYW1lXCI6XCJFbmhhbmNlZCBNeWVsaW4gU2hlYXRoaW5nXCJ9LHtcImxldmVsXCI6MSxcIm5hbWVcIjpcIkF1Z21lbnRlZCBUYXJnZXRpbmcgSVwifSx7XCJsZXZlbFwiOjEsXCJuYW1lXCI6XCJBdWdtZW50ZWQgVGFyZ2V0aW5nIElJXCJ9LHtcImxldmVsXCI6MSxcIm5hbWVcIjpcIlNwZWVjaCBQcm9jZXNzb3IgSW1wbGFudFwifSx7XCJsZXZlbFwiOjEsXCJuYW1lXCI6XCJOZXVyb3JlY2VwdG9yIE1hbmFnZW1lbnQgSW1wbGFudFwifSx7XCJsZXZlbFwiOjEsXCJuYW1lXCI6XCJOYW5vZmliZXIgV2VhdmVcIn0se1wibGV2ZWxcIjoxLFwibmFtZVwiOlwiU29jaWFsIE5lZ290aWF0aW9uIEFzc2lzdGFudCAoUy5OLkEpXCJ9LHtcImxldmVsXCI6MSxcIm5hbWVcIjpcIk51b3B0aW1hbCBOb290cm9waWMgSW5qZWN0b3IgSW1wbGFudFwifSx7XCJsZXZlbFwiOjEsXCJuYW1lXCI6XCJBRFItVjEgUGhlcm9tb25lIEdlbmVcIn0se1wibGV2ZWxcIjoxLFwibmFtZVwiOlwiU3BlZWNoIEVuaGFuY2VtZW50XCJ9LHtcImxldmVsXCI6MSxcIm5hbWVcIjpcIkNvbWJhdCBSaWIgSVwifSx7XCJsZXZlbFwiOjEsXCJuYW1lXCI6XCJDb21iYXQgUmliIElJXCJ9LHtcImxldmVsXCI6MSxcIm5hbWVcIjpcIkRlcm1hRm9yY2UgUGFydGljbGUgQmFycmllclwifSx7XCJsZXZlbFwiOjEsXCJuYW1lXCI6XCJJTkZSQVJFVCBFbmhhbmNlbWVudFwifSx7XCJsZXZlbFwiOjEsXCJuYW1lXCI6XCJFbWJlZGRlZCBOZXRidXJuZXIgTW9kdWxlIENvcmUgVjIgVXBncmFkZVwifSx7XCJsZXZlbFwiOjEsXCJuYW1lXCI6XCJCaXRSdW5uZXJzIE5ldXJvbGlua1wifSx7XCJsZXZlbFwiOjEsXCJuYW1lXCI6XCJBcnRpZmljaWFsIEJpby1uZXVyYWwgTmV0d29yayBJbXBsYW50XCJ9LHtcImxldmVsXCI6MSxcIm5hbWVcIjpcIkNyYW5pYWwgU2lnbmFsIFByb2NLine truncated
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
/** @param {import(".").NS } ns */
|
||||||
|
import { EXCLUDE_SERVERS } from "./constants.js";
|
||||||
|
|
||||||
|
export async function main(ns) {
|
||||||
|
ns.disableLog('ALL');
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Recursively kill simple-hack.js running on servers in the network
|
||||||
|
* @async
|
||||||
|
* @param {string} currentServer server to scan
|
||||||
|
*/
|
||||||
|
function scanServer(currentServer, previousServer = currentServer, connectString = '', scanLevel = 0) {
|
||||||
|
let availableServers = ns.scan(currentServer);
|
||||||
|
let nextConnectString = connectString + `connect ${currentServer}; `;
|
||||||
|
ns.tprint(`${'┃ '.repeat(scanLevel)}┣${currentServer}: ${nextConnectString}`);
|
||||||
|
ns.write('scan.txt', `${'┃ '.repeat(scanLevel)}┣━${currentServer}: ${nextConnectString}`+'\n', 'a');
|
||||||
|
|
||||||
|
for (let i = 0; i < availableServers.length; ++i) {
|
||||||
|
let nextServer = availableServers[i];
|
||||||
|
|
||||||
|
if (nextServer != currentServer && nextServer != previousServer) {
|
||||||
|
scanServer(nextServer, currentServer, nextConnectString, scanLevel+1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ns.tprint(`Running scan`);
|
||||||
|
ns.write('scan.txt', ``, 'w');
|
||||||
|
scanServer('home');
|
||||||
|
}
|
||||||
@@ -3,12 +3,8 @@
|
|||||||
export async function main(ns) {
|
export async function main(ns) {
|
||||||
ns.disableLog('ALL');
|
ns.disableLog('ALL');
|
||||||
|
|
||||||
for (let server = 0; server <= ns.args[0]; server++) {
|
for (let server = 0; ns.serverExists(`home-${server}`); server++) {
|
||||||
ns.scp('grow-helper.js', `home-${server}`, 'home');
|
ns.scp('grow-helper.js', `home-${server}`, 'home');
|
||||||
ns.exec('grow-helper.js', `home-${server}`, 5, 20);
|
ns.exec('grow-helper.js', `home-${server}`, 10);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Reference in new issue
Block a user