fixin and cleaning up some files
This commit is contained in:
8
Mizzajl/home/CrackAndRootAll.js
Normal file
8
Mizzajl/home/CrackAndRootAll.js
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
|
||||||
|
import { getCracks, scanServerList, findBestTarget, crackingAndRooting, copyAndRunScript } from "/Library.js";
|
||||||
|
/** @param {NS} ns */
|
||||||
|
export async function main(ns) {
|
||||||
|
let cracks = {};
|
||||||
|
cracks = getCracks(ns);
|
||||||
|
crackingAndRooting(ns, cracks, "", false);
|
||||||
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
import { getGrowThreads, getSetting } from "myLibrary.js";
|
import { getGrowThreads, getSetting } from "Library.js";
|
||||||
|
|
||||||
/** @param {NS} ns */
|
/** @param {NS} ns */
|
||||||
export async function main(ns) {
|
export async function main(ns) {
|
||||||
|
|||||||
243
Mizzajl/home/Library.js
Normal file
243
Mizzajl/home/Library.js
Normal file
@@ -0,0 +1,243 @@
|
|||||||
|
/** @param {NS} ns */
|
||||||
|
export async function main(ns) {
|
||||||
|
ns.tprint("This is just a function library, it doesn't do anything.");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Custom color coding.
|
||||||
|
const cCyan = "\u001b[36m";
|
||||||
|
const cGreen = "\u001b[32m";
|
||||||
|
const cRed = "\u001b[31m";
|
||||||
|
const cReset = "\u001b[0m";
|
||||||
|
|
||||||
|
/** @param {NS} ns */
|
||||||
|
export function getCracks(ns) {
|
||||||
|
let cracks = {};
|
||||||
|
if (ns.fileExists("BruteSSH.exe", "home")) {
|
||||||
|
cracks["BruteSSH.exe"] = ns.brutessh;
|
||||||
|
};
|
||||||
|
if (ns.fileExists("FTPCrack.exe", "home")) {
|
||||||
|
cracks["FTPCrack.exe"] = ns.ftpcrack;
|
||||||
|
};
|
||||||
|
if (ns.fileExists("relaySMTP.exe", "home")) {
|
||||||
|
cracks["relaySMTP.exe"] = ns.relaysmtp;
|
||||||
|
};
|
||||||
|
if (ns.fileExists("HTTPWorm.exe", "home")) {
|
||||||
|
cracks["HTTPWorm.exe"] = ns.httpworm;
|
||||||
|
};
|
||||||
|
if (ns.fileExists("SQLInject.exe", "home")) {
|
||||||
|
cracks["SQLInject.exe"] = ns.sqlinject;
|
||||||
|
};
|
||||||
|
return cracks;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @param {NS} ns */
|
||||||
|
export function scanServerList(ns) {
|
||||||
|
const home = "home";
|
||||||
|
let serverList = {};
|
||||||
|
let unscanned = [];
|
||||||
|
|
||||||
|
unscanned.push(home);
|
||||||
|
while (unscanned.length > 0) {
|
||||||
|
let currentServer = unscanned.pop();
|
||||||
|
if (!serverList[currentServer]) {
|
||||||
|
let maxRam = ns.getServerMaxRam(currentServer);
|
||||||
|
let minPorts = ns.getServerNumPortsRequired(currentServer);
|
||||||
|
let minSecLevel = ns.getServerMinSecurityLevel(currentServer);
|
||||||
|
let minHackLevel = ns.getServerRequiredHackingLevel(currentServer);
|
||||||
|
let rootAccess = ns.hasRootAccess(currentServer);
|
||||||
|
let serverMoney = ns.getServerMaxMoney(currentServer);
|
||||||
|
let serverFiles = ns.ls(currentServer);
|
||||||
|
let serverStats = ns.getServer(currentServer);
|
||||||
|
let serverOrgs = serverStats.organizationName;
|
||||||
|
let serverCores = serverStats.cpuCores;
|
||||||
|
|
||||||
|
serverList[currentServer] =
|
||||||
|
{
|
||||||
|
serverName: currentServer,
|
||||||
|
maxRam: maxRam,
|
||||||
|
maxMoney: serverMoney,
|
||||||
|
minSec: minSecLevel,
|
||||||
|
minPorts: minPorts,
|
||||||
|
minHackLvl: minHackLevel,
|
||||||
|
rootAccess: rootAccess,
|
||||||
|
openPorts: 0,
|
||||||
|
serverOrgs: serverOrgs,
|
||||||
|
serverCores: serverCores,
|
||||||
|
serverFiles: serverFiles,
|
||||||
|
};
|
||||||
|
let neighbours = ns.scan(currentServer);
|
||||||
|
for (let i = 0; i < neighbours.length; i++) {
|
||||||
|
let neighbour = neighbours[i];
|
||||||
|
if (serverList[neighbour]) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
unscanned.push(neighbour);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ns.write("serverList.txt", JSON.stringify(serverList), "w");
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @param {NS} ns */
|
||||||
|
export function findBestTarget(ns, maxSec, maxPorts, currentHackLevel, manualTargetOverride) {
|
||||||
|
if (!ns.fileExists("serverList.txt", "home")) scanServerList();
|
||||||
|
let serverList = JSON.parse(ns.read("serverList.txt"));
|
||||||
|
let bestEntry = "";
|
||||||
|
if (manualTargetOverride.length > 0) {
|
||||||
|
bestEntry = manualTargetOverride;
|
||||||
|
} else {
|
||||||
|
bestEntry = null;
|
||||||
|
let nMaxMoneyPerChance = 0;
|
||||||
|
let nBestMoneyPerChance = 0;
|
||||||
|
for (const [name, entry] of Object.entries(serverList)) {
|
||||||
|
if (entry.minSec <= maxSec && entry.minPorts <= maxPorts && entry.minHackLvl < currentHackLevel) {
|
||||||
|
nMaxMoneyPerChance = (entry.maxMoney * ns.hackAnalyzeChance(name)) / entry.minSec;
|
||||||
|
if (nMaxMoneyPerChance > nBestMoneyPerChance) {
|
||||||
|
nBestMoneyPerChance = nMaxMoneyPerChance;
|
||||||
|
bestEntry = name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ns.write("bestTarget.txt", JSON.stringify(serverList[bestEntry]), "w");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/** @param {NS} ns */
|
||||||
|
export function crackingAndRooting(ns, cracks) {
|
||||||
|
if (!ns.fileExists("serverList.txt", "home")) scanServerList();
|
||||||
|
let serverList = JSON.parse(ns.read("serverList.txt"));
|
||||||
|
for (const [name, entry] of Object.entries(serverList)) {
|
||||||
|
let cracked = false;
|
||||||
|
let openPorts = serverList[name].openPorts || 0;
|
||||||
|
if (entry.minPorts === 0 || (entry.minPorts > openPorts && entry.minPorts <= Object.keys(cracks).length)) {
|
||||||
|
for (let k = 0; k < entry.minPorts; k++) {
|
||||||
|
cracks[Object.keys(cracks)[k]](name);
|
||||||
|
serverList[name].openPorts = k;
|
||||||
|
}
|
||||||
|
cracked = true;
|
||||||
|
}
|
||||||
|
if (!ns.hasRootAccess(name) && cracked === true) {
|
||||||
|
ns.nuke(name);
|
||||||
|
if (ns.hasRootAccess(name)) {
|
||||||
|
serverList[name].rootAccess = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ns.write("serverList.txt", JSON.stringify(serverList), "w");
|
||||||
|
}
|
||||||
|
ns.tprint("Cracking and rooting done");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/** @param {NS} ns */
|
||||||
|
export function copyAndRunScript(ns, funnyScript, currentServer) {
|
||||||
|
let bestTarget = JSON.parse(ns.read("bestTarget.txt"));
|
||||||
|
let name = currentServer;
|
||||||
|
let serverList = JSON.parse(ns.read("serverList.txt"));
|
||||||
|
ns.print(name);
|
||||||
|
if (serverList[name].rootAccess === true && serverList[bestTarget.serverName].rootAccess === true) {
|
||||||
|
if (name !== "home") {
|
||||||
|
ns.print("killed threads on: " + name + ns.killall(name, true));
|
||||||
|
} else {
|
||||||
|
ns.print("killed threads on: " + name + ns.scriptKill(funnyScript[0], name));
|
||||||
|
};
|
||||||
|
if (serverList[name].maxRam > 0) {
|
||||||
|
ns.scp(funnyScript, name, "home");
|
||||||
|
let maxProcesses = 1;
|
||||||
|
if (serverList[name].maxRam >= 8) {
|
||||||
|
maxProcesses = Math.max(Math.floor((serverList[name].maxRam) / 8), 1);
|
||||||
|
} else {
|
||||||
|
maxProcesses = 1
|
||||||
|
};
|
||||||
|
for (let n = 1; n <= maxProcesses; n++) {
|
||||||
|
ns.exec(funnyScript[0], name, 1, bestTarget.serverName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @param {NS} ns */
|
||||||
|
export async function purchaseAndUpgradeServers(ns) {
|
||||||
|
ns.disableLog("sleep");
|
||||||
|
ns.disableLog("getServerMoneyAvailable");
|
||||||
|
ns.disableLog("getServerMaxRam");
|
||||||
|
let maxPurchasedServers = ns.getPurchasedServerLimit();
|
||||||
|
let purchasedServers = [];
|
||||||
|
let count = listPurchasedServers(ns).length;
|
||||||
|
let currentMoney = 0;
|
||||||
|
let serverList = {};
|
||||||
|
while (count < maxPurchasedServers) {
|
||||||
|
purchasedServers = listPurchasedServers(ns);
|
||||||
|
currentMoney = ns.getServerMoneyAvailable("home");
|
||||||
|
let targetRamInitial = 16;
|
||||||
|
if (ns.getPurchasedServerCost(targetRamInitial) < currentMoney) {
|
||||||
|
let sFrontZero = "0";
|
||||||
|
if (nServers >= 9) {
|
||||||
|
sFrontZero = "";
|
||||||
|
}
|
||||||
|
let hostname = ns.purchaseServer("pserv-" + sFrontZero + (aServers.length), targetRamInitial);
|
||||||
|
ns.tprint("Purchased " + cCyan + hostname + cReset);
|
||||||
|
ns.toast("Purchased " + hostname, "info", 10000);
|
||||||
|
count = listPurchasedServers(ns).length;
|
||||||
|
serverList = JSON.parse(ns.read("serverList.txt"));
|
||||||
|
serverList[hostname] = {
|
||||||
|
serverName: hostname,
|
||||||
|
maxRam: 16,
|
||||||
|
maxMoney: 0,
|
||||||
|
minSec: 0,
|
||||||
|
minPorts: 5,
|
||||||
|
minHackLvl: 1,
|
||||||
|
rootAccess: true,
|
||||||
|
openPorts: 0,
|
||||||
|
};
|
||||||
|
ns.write("serverList.txt", JSON.stringify(serverList), "w");
|
||||||
|
continue
|
||||||
|
} else {
|
||||||
|
await ns.sleep(5000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let i = 5;
|
||||||
|
while (i < 21) {
|
||||||
|
let targetRam = 2 ** i;
|
||||||
|
purchasedServers = listPurchasedServers(ns);
|
||||||
|
for (let currentServer of purchasedServers) {
|
||||||
|
currentMoney = ns.getServerMoneyAvailable("home");
|
||||||
|
if (ns.getServerMaxRam(currentServer) < targetRam && ns.getPurchasedServerUpgradeCost(currentServer, targetRam) < currentMoney) {
|
||||||
|
if (ns.upgradePurchasedServer(currentServer, targetRam)) {
|
||||||
|
ns.print(currentServer + " upgraded to " + targetRam + " GB RAM");
|
||||||
|
serverList = JSON.parse(ns.read("serverList.txt"));
|
||||||
|
serverList[currentServer].maxRam = targetRam;
|
||||||
|
ns.write("serverList.txt", JSON.stringify(serverList), "w");
|
||||||
|
ns.tprint(cCyan + "Server: " + currentServer + " upgraded to: " + targetRam.toLocaleString() + " GB" + cReset);
|
||||||
|
ns.toast("Server: " + currentServer + " upgraded to: " + targetRam.toLocaleString() + " GB", "info", 10000);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
await ns.sleep(5000);
|
||||||
|
continue
|
||||||
|
};
|
||||||
|
}
|
||||||
|
++i;
|
||||||
|
}
|
||||||
|
ns.tprint("Extiting purchaseServers script!")
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @param {NS} ns */
|
||||||
|
export function listPurchasedServers(ns) {
|
||||||
|
return ns.getPurchasedServers();
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @param {NS} ns */
|
||||||
|
export function getSetting(ns, sSetting) {
|
||||||
|
let oSettings = JSON.parse(ns.read("settings.txt"));
|
||||||
|
let settingEntry = oSettings.setting[sSetting];
|
||||||
|
//ns.tprint(oSettings.setting[sSetting])
|
||||||
|
//ns.tprint("settingEntry = "+settingEntry);
|
||||||
|
return settingEntry;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @param {NS} ns */
|
||||||
|
export function getGrowThreads(ns, sTarget, nHackThreads, nCores) {
|
||||||
|
let nHackAmountPercent = ns.hackAnalyze(sTarget) * nHackThreads;
|
||||||
|
let nGrowthThreads = ns.growthAnalyze(sTarget, 1 + nHackAmountPercent, nCores);
|
||||||
|
return nGrowthThreads;
|
||||||
|
}
|
||||||
19
Mizzajl/home/Serverlist.js
Normal file
19
Mizzajl/home/Serverlist.js
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
import { getCracks, scanServerList, findBestTarget, crackingAndRooting } from "/Library.js";
|
||||||
|
|
||||||
|
/** @param {NS} ns */
|
||||||
|
export async function main(ns) {
|
||||||
|
let cracks = {};
|
||||||
|
cracks = getCracks(ns);
|
||||||
|
let maxPorts = Object.keys(cracks).length;
|
||||||
|
scanServerList(ns);
|
||||||
|
let manualTargetOverride = "";
|
||||||
|
if (ns.getHackingLevel() < 200) {
|
||||||
|
manualTargetOverride = "n00dles";
|
||||||
|
};
|
||||||
|
findBestTarget(ns, 999, maxPorts, ns.getHackingLevel(), manualTargetOverride);
|
||||||
|
let bestTarget = ns.read("bestTarget.txt")
|
||||||
|
ns.tprint("Best Target: " + bestTarget);
|
||||||
|
ns.tprint(Object.keys(JSON.parse(ns.read("serverList.txt"))).length);
|
||||||
|
crackingAndRooting(ns, cracks);
|
||||||
|
}
|
||||||
|
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
import { purchaseServers, listPurchasedServers, getSetting } from "myLibrary.js";
|
import { purchaseAndUpgradeServers, listPurchasedServers, getSetting } from "Library.js";
|
||||||
|
|
||||||
|
|
||||||
/** @param {NS} ns */
|
/** @param {NS} ns */
|
||||||
@@ -23,7 +23,7 @@ export async function main(ns) {
|
|||||||
|
|
||||||
//scripts
|
//scripts
|
||||||
const sGangScript = "gang/auto-gang2.js";
|
const sGangScript = "gang/auto-gang2.js";
|
||||||
const sServerLister = "serverlister.js";
|
const sServerLister = "Serverlist.js";
|
||||||
const sServerListFile = "serverList.txt";
|
const sServerListFile = "serverList.txt";
|
||||||
const sBestServerFile = "bestTarget.txt";
|
const sBestServerFile = "bestTarget.txt";
|
||||||
const sBackdoorScript = "backdoor.js";
|
const sBackdoorScript = "backdoor.js";
|
||||||
@@ -196,14 +196,15 @@ export async function main(ns) {
|
|||||||
}
|
}
|
||||||
else if (getSetting(ns, "autoPurchaseServers") && nPServs < 25 && nMoney >= 5e+6) { //Purchased Servers
|
else if (getSetting(ns, "autoPurchaseServers") && nPServs < 25 && nMoney >= 5e+6) { //Purchased Servers
|
||||||
ns.tprint("purchasing servers ");
|
ns.tprint("purchasing servers ");
|
||||||
await purchaseServers(ns);
|
//await purchaseServers(ns);
|
||||||
|
purchaseAndUpgradeServers(ns);
|
||||||
ns.exec(sServerLister, sThisRunner, 1, false, true);
|
ns.exec(sServerLister, sThisRunner, 1, false, true);
|
||||||
}
|
}
|
||||||
else if (getSetting(ns, "autoUpgrades") && nLowestRAM < (2 ** 20) && !ns.scriptRunning("upgrade.js", sThisRunner) && nPServs >= 25 && nMoney >= 1e+6) {
|
/*else if (getSetting(ns, "autoUpgrades") && nLowestRAM < (2 ** 20) && !ns.scriptRunning("upgrade.js", sThisRunner) && nPServs >= 25 && nMoney >= 1e+6) {
|
||||||
ns.tprint("upgrading servers ");
|
ns.tprint("upgrading servers ");
|
||||||
ns.exec("upgrade.js", sThisRunner, 1);
|
ns.exec("upgrade.js", sThisRunner, 1);
|
||||||
|
|
||||||
}
|
}*/
|
||||||
|
|
||||||
//ns.tprint("autoPurchaseServers = " + getSetting(ns, "autoPurchaseServers"));
|
//ns.tprint("autoPurchaseServers = " + getSetting(ns, "autoPurchaseServers"));
|
||||||
//ns.tprint("autoUpgrades = " + getSetting(ns, "autoUpgrades"));
|
//ns.tprint("autoUpgrades = " + getSetting(ns, "autoUpgrades"));
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { getGrowThreads, getSetting } from "myLibrary.js";
|
import { getGrowThreads, getSetting } from "Library.js";
|
||||||
|
|
||||||
/** @param {NS} ns */
|
/** @param {NS} ns */
|
||||||
export async function main(ns) {
|
export async function main(ns) {
|
||||||
|
|||||||
5
Mizzajl/home/purchaseServers.js
Normal file
5
Mizzajl/home/purchaseServers.js
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
import { getCracks, scanServerList, findBestTarget, crackingAndRooting, copyAndRunScript, purchaseAndUpgradeServers } from "/RamsesUtils.js";
|
||||||
|
/** @param {NS} ns */
|
||||||
|
export async function main(ns) {
|
||||||
|
await purchaseAndUpgradeServers(ns);
|
||||||
|
}
|
||||||
@@ -1 +0,0 @@
|
|||||||
asd
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
/** @param {NS} ns */
|
|
||||||
export async function main(ns) {
|
|
||||||
|
|
||||||
let aFactions = ns.getPlayer().factions;
|
|
||||||
ns.tprint("aFactions = " + aFactions);
|
|
||||||
let aAugmentations;
|
|
||||||
let sStats;
|
|
||||||
|
|
||||||
for (let f = 0; f < aFactions.length; f++) {
|
|
||||||
//ns.tprint("f = " + f);
|
|
||||||
//sFaction = ns.singularity.faction
|
|
||||||
aAugmentations = ns.singularity.getAugmentationsFromFaction(aFactions[f]);
|
|
||||||
ns.tprint("aAugmentations = " + aAugmentations);
|
|
||||||
ns.tprint("----------------------------------------------------------------------------------------------------------------------------------------------------------");
|
|
||||||
for (let a = 0; a < aFactions.length; a++) {
|
|
||||||
sStats = JSON.stringify(ns.singularity.getAugmentationStats(aAugmentations[a]));
|
|
||||||
ns.tprint(aAugmentations[f] + "sStats = " + sStats);
|
|
||||||
ns.tprint("----------------------------------------------------------------------------------------------------------------------------------------------------------");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
{"setting":{
|
{"setting":{
|
||||||
"autoUpgrades":true,
|
"autoUpgrades":true,
|
||||||
"autoPurchaseServers":true,
|
"autoPurchaseServers":true,
|
||||||
"batchHacks":50,
|
"batchHacks":100,
|
||||||
"batchFrequency":1000
|
"batchFrequency":50
|
||||||
}}
|
}}
|
||||||
Reference in New Issue
Block a user