First commit
This commit is contained in:
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
*.py
|
||||
8
grow.js
Normal file
8
grow.js
Normal file
@@ -0,0 +1,8 @@
|
||||
export async function main(ns) {
|
||||
const args = ns.flags([['help', false]]);
|
||||
const host = args._[0];
|
||||
|
||||
while(true) {
|
||||
await ns.grow(host);
|
||||
}
|
||||
}
|
||||
172
hack-auto.js
Normal file
172
hack-auto.js
Normal file
@@ -0,0 +1,172 @@
|
||||
export async function main(ns) {
|
||||
const args = ns.flags([['help', false]]);
|
||||
const host = args._[0];
|
||||
if (args.help || !host) {
|
||||
ns.tprint("Ce script est destiné à trouver, hacker et déployer un méta-hack sur un serveur ciblé en argument suivant la syntaxe :");
|
||||
ns.tprint(`run ${ns.getScriptName()} "SERVER_NAME"`);
|
||||
return;
|
||||
}
|
||||
|
||||
// Récupération de certaines données fondamentales pour le piratage
|
||||
const hostDetails = ns.getServer(host);
|
||||
// A qui cela appartient
|
||||
let hostname = hostDetails.hostname;
|
||||
let playerOwned = hostDetails.purchasedByPlayer;
|
||||
let organization = hostDetails.organizationName;
|
||||
// RAM et CPU
|
||||
let ramMaximum = hostDetails.maxRam;
|
||||
let ramUsed = hostDetails.ramUsed;
|
||||
let cpuCores = hostDetails.cpuCores;
|
||||
// Hacking nécessaire
|
||||
let portsRequiredToHack = hostDetails.numOpenPortsRequired;
|
||||
let hackingLevelRequired = hostDetails.requiredHackingSkill;
|
||||
// Argent disponible/potentiel
|
||||
let maxMoney = hostDetails.moneyMax;
|
||||
let availableMoney = hostDetails.moneyAvailable;
|
||||
|
||||
ns.tprint(` |-------------------------| `);
|
||||
ns.tprint(` | DEBUT DU SCRIPT | `);
|
||||
ns.tprint(` |‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾| `);
|
||||
ns.tprint(` `);
|
||||
ns.tprint(`Nom du serveur : ${hostname}`);
|
||||
ns.tprint(`M'appartient : ${playerOwned}`);
|
||||
ns.tprint(`Propriétaire : ${organization}`);
|
||||
ns.tprint(` --------------------------------------- `);
|
||||
ns.tprint(`Nombre de coeurs : ${cpuCores}`);
|
||||
ns.tprint(`RAM maximum : ${ramMaximum}`);
|
||||
ns.tprint(`RAM en usage : ${ramUsed}`);
|
||||
ns.tprint(`Ports à ouvrir : ${portsRequiredToHack}`);
|
||||
ns.tprint(`Niveau en piratage requis : ${hackingLevelRequired}`);
|
||||
ns.tprint(` --------------------------------------- `);
|
||||
ns.tprint(`Argent disponible : ${availableMoney}`);
|
||||
ns.tprint(`Argent maximum : ${maxMoney}`);
|
||||
|
||||
//* Savoir si le hack est possible ou pertinent *//
|
||||
|
||||
if (ramMaximum === 0) {
|
||||
ns.tprint(`Le serveur ne fera pas tourner de script, faute de RAM.`);
|
||||
}
|
||||
|
||||
if (playerOwned) {
|
||||
ns.tprint(`Le serveur vous appartient, il n'y a rien à hacker.`);
|
||||
ns.exit();
|
||||
}
|
||||
|
||||
// Savoir si le hack est possible niveau "compétence"
|
||||
const player = ns.getPlayer();
|
||||
const playerHacking = player.skills.hacking;
|
||||
if (playerHacking < hackingLevelRequired) {
|
||||
ns.tprint(`Le niveau requis est trop élevé pour un hack.`);
|
||||
ns.exit();
|
||||
}
|
||||
|
||||
// Savoir si le hack est possible au niveau des ports à ouvrir
|
||||
let portsICanHack = 0;
|
||||
const exploits = ["HTTPWorm", "BruteSSH", "FTPCrack", "SQLInject", "relaySMTP"];
|
||||
|
||||
for (const exploit of exploits) {
|
||||
const file = `${exploit}.exe`;
|
||||
if (ns.fileExists(file, "home")) {
|
||||
portsICanHack++;
|
||||
}
|
||||
}
|
||||
|
||||
if (portsICanHack < portsRequiredToHack) {
|
||||
ns.tprint(`Le pare-feu du serveur est trop renforcé pour un hack.`);
|
||||
ns.exit();
|
||||
}
|
||||
|
||||
ns.tprint(` |----------------------| `);
|
||||
ns.tprint(` | ACCES ADMIN EN COURS | `);
|
||||
ns.tprint(` |‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾| `);
|
||||
ns.tprint(` `);
|
||||
|
||||
//* Lancement des programmes individuellement *//
|
||||
// HTTPWorm
|
||||
if (ns.fileExists("HTTPWorm.exe", "home")) {
|
||||
ns.httpworm(host)
|
||||
if (hostDetails.httpPortOpen) {
|
||||
ns.tprint(`Le programme ${exploits[0]} a été lancé avec succès.`)
|
||||
} else {
|
||||
ns.tprint(`Le programme ${exploits[0]} a échoué.`)
|
||||
}
|
||||
} else {
|
||||
ns.tprint(`Le programme ${exploits[0]} n'est pas présent.`)
|
||||
}
|
||||
// BruteSSH
|
||||
if (ns.fileExists("BruteSSH.exe", "home")) {
|
||||
ns.brutessh(host)
|
||||
if (hostDetails.sshPortOpen) {
|
||||
ns.tprint(`Le programme ${exploits[1]} a été lancé avec succès.`)
|
||||
} else {
|
||||
ns.tprint(`Le programme ${exploits[1]} a échoué.`)
|
||||
}
|
||||
} else {
|
||||
ns.tprint(`Le programme ${exploits[1]} n'est pas présent.`)
|
||||
}
|
||||
// FTPCrack
|
||||
if (ns.fileExists("FTPCrack.exe", "home")) {
|
||||
ns.ftpcrack(host)
|
||||
if (hostDetails.ftpPortOpen) {
|
||||
ns.tprint(`Le programme ${exploits[2]} a été lancé avec succès.`)
|
||||
} else {
|
||||
ns.tprint(`Le programme ${exploits[2]} a échoué.`)
|
||||
}
|
||||
} else {
|
||||
ns.tprint(`Le programme ${exploits[2]} n'est pas présent.`)
|
||||
}
|
||||
// SQLInject
|
||||
if (ns.fileExists("SQLInject.exe", "home")) {
|
||||
ns.sqlinject(host)
|
||||
if (hostDetails.sqlPortOpen) {
|
||||
ns.tprint(`Le programme ${exploits[3]} a été lancé avec succès.`)
|
||||
} else {
|
||||
ns.tprint(`Le programme ${exploits[3]} a échoué.`)
|
||||
}
|
||||
} else {
|
||||
ns.tprint(`Le programme ${exploits[3]} n'est pas présent.`)
|
||||
}
|
||||
// relaySMTP
|
||||
if (ns.fileExists("relaySMTP.exe", "home")) {
|
||||
ns.relaysmtp(host)
|
||||
if (hostDetails.smtpPortOpen) {
|
||||
ns.tprint(`Le programme ${exploits[4]} a été lancé avec succès.`)
|
||||
} else {
|
||||
ns.tprint(`Le programme ${exploits[4]} a échoué.`)
|
||||
}
|
||||
} else {
|
||||
ns.tprint(`Le programme ${exploits[4]} n'est pas présent.`)
|
||||
}
|
||||
ns.tprint(`---------------------------`);
|
||||
|
||||
ns.nuke(host);
|
||||
const adminRights = ns.hasRootAccess(host) ? ns.tprint(`Les droits admins ont été accordés.`) : ns.tprint(`Les droits admins n'ont pas été accordés.`);
|
||||
|
||||
if (ramMaximum === 0) {
|
||||
ns.tprint(`Le serveur ne peut pas faire tourner de script, faute de RAM.`);
|
||||
ns.exit();
|
||||
}
|
||||
|
||||
ns.tprint(` |------------------------| `);
|
||||
ns.tprint(` | HACKING PASSIF DEMARRE | `);
|
||||
ns.tprint(` |‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾| `);
|
||||
ns.tprint(` `);
|
||||
|
||||
const metaScript = "metahack.js";
|
||||
const scriptHack = "hack.js";
|
||||
const scriptGrow = "grow.js";
|
||||
const scriptWeaken = "weaken.js";
|
||||
const ramScript = ns.getScriptRam(metaScript, "home");
|
||||
const threadsPower = Math.floor((ramMaximum - ramUsed) / ramScript);
|
||||
|
||||
//ns.scp(["hack.js", "grow.js", "weaken.js"], host, "home");
|
||||
ns.scp(metaScript, host, "home");
|
||||
ns.scriptKill(metaScript, host);
|
||||
ns.exec(metaScript, host, threadsPower, host);
|
||||
ns.tprint(`${metaScript} est lancé sur le serveur ${host} avec ${threadsPower} coeurs.`);
|
||||
// Lancement de scripts de hack en local
|
||||
ns.exec(scriptGrow, "home", 8, host);
|
||||
ns.exec(scriptWeaken, "home", 8, host);
|
||||
ns.exec(scriptHack, "home", 12, host);
|
||||
ns.tprint(`${scriptGrow}, ${scriptWeaken} et ${scriptHack} ont été lancés sur le PC local.`);
|
||||
}
|
||||
8
hack.js
Normal file
8
hack.js
Normal file
@@ -0,0 +1,8 @@
|
||||
export async function main(ns) {
|
||||
const args = ns.flags([['help', false]]);
|
||||
const host = args._[0];
|
||||
|
||||
while(true) {
|
||||
await ns.hack(host);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user