【发布时间】:2023-01-08 06:18:05
【问题描述】:
我正在构建一个脚本来一次扫描/分发/破解所有服务器。我的问题是我似乎无法弄清楚如何将我的第一个数组(代码中的 spider())传递给我的第二个函数(probe())。我想将第一个数组用作第二个函数中的“目标”变量。我已经离开我的 cmets 来解释我的想法和我一直试图弄清楚的事情。
/** @param {NS} ns**/
export async function main(ns){
//functions under here to make things pretty
function spider() { //Used to scan all servers
let serversSeen = ['home']
for (let i=0; i < serversSeen.length; i++) {
let thisScan = ns.scan(serversSeen[i]);
for (let j=0; j < thisScan.length; j++) {
if (serversSeen.indexOf(thisScan[j]) === -1) {
serversSeen.push(thisScan[j]);
} //Make the array an argument to pass into probe function
}
}
return serversSeen;
}
function probe() { //Used to open all server ports, gain root access, and run distro function
function can(action) {
return ns.fileExists(action + ".exe", "home"); //Checks for .exes
}
spider();
for (let x=0; x < serversSeen.length;) {
let target = serversSeen.length;
let ports = 0;
if (can( "BruteSSH" )) { ns.brutessh (target); ++ports; } //Opens all ports on server//Rewrite ns.brutessh (etc) to be strings
if (can( "FTPCrack" )) { ns.ftpcrack (target); ++ports; }
if (can( "RelaySMTP")) { ns.relaysmtp (target); ++ports; }
if (can( "HTTPWorm" )) { ns.httpworm (target); ++ports; }
if (can( "SQLInject")) { ns.sqlinject (target); ++ports; }
if (ns.getServerNumPortsRequired(target) <= ports && ns.hasRootAccess(target) == false) {
ns.nuke(target);
++x
//create an argument of rooted servers (rootedTarget)
} else {
if (ns.hasRootAccess(target) == true) {
//Push any previously/manually rooted targets to the rootedTarget index(argument)
}
}
}
return ;//Args of targets (rootedTarget)
}
我研究过让我的数组成为一个参数,但我发现的所有内容似乎都假定该数组是预定义的。
我试过在 probe() 函数内部运行 spider() 函数,但这似乎也没有任何作用。
我也相信我必须重写 ns.ftpcrack 等代码行,但现在我一直在寻找一种方法来传递数组。
【问题讨论】:
标签: javascript arrays function arguments