下载客户端

主枢纽工具套件

2026-03-20 16:00:37
发布在Grey Hack
转载

AI智能总结导读

这是为《Grey Hack》游戏打造的开源主枢纽工具套件,包含攻击、防御和实用脚本,如createcache、testdatabase、targetedhack等攻击链脚本,还有secure、pulltools等防御及实用工具,脚本采用模块化设计,仅用于该游戏,不可用于真实网络安全活动。

这是我为你准备的开源分享,一份我长期制作的自定义脚本合集。服下你的软糖维生素,打开第三只眼(黑客抑制剂)的盖子,是时候去那些不属于你的地方了。这些脚本采用模块化设计,便于导入所需功能,无需使用第三方工具,同时保持代码的可读性。来寻找你的下一个优势吧。 简介

这是我在游玩期间编写的攻击、防御和实用脚本集合。你可以使用它们、修改它们,或将它们用作参考资料,随你喜欢。 记住:不要闭源。 所有脚本均用于《Grey Hack》游戏,不可用于任何网络安全活动。 主要攻击链第一部分(createcache) 本部分包含我使用的主要攻击链脚本。如果你想使用它们,必须将这三个脚本作为单独的文件导入到/bin目录中(将它们命名为createcache、testdatabase和targetedhack)。 以下是这三个脚本的工作流程: 1. createcache权限:以root身份运行(使用工具链前,先执行sudo -s登录为root用户) 参数:目标的IP地址和端口;-l以及本地库的路径。使用方法: createcache 10.0.0.xxx 22 或 createcache -l /lib/init.so 功能说明: 简单来说:该命令会记录服务的漏洞,并将其作为缓存文件存储在/Databases目录中。 createcache会在根目录中创建一个Databases文件夹,然后检查目标IP地址上的指定端口所使用的服务,并在Databases文件夹中使用该服务的名称和版本(例如ssh_1.0.0.dat)创建一个新的数据库文件。接着,它会扫描该服务或库以查找漏洞,并将这些漏洞记录到该缓存文件中。 运行后单个漏洞记录的示例: 1|||22|10.0.0.xx|0x08827|instans 其中的空值将由testdatabase命令填充。split("/")[-1]+" [IP地址] [端口] 或 -l [本地库路径]</b>") isLocal = false if params[0] == "-l" then isLocal = true end if metax = include_lib("/lib/metaxploit.so") if not metax then metax = include_lib(current_path + "/metaxploit.so") end if if not metax then exit("错误:在/lib路径或当前文件夹中找不到metaxploit库") address = params[0] port = params[1].to_int hostComputer = get_shell.host_computer file_contents = [] if isLocal == false then address = params[0] port = params[1].to_int netSession = metax.net_use( address, port ) if not netSession then exit("错误:无法连接到网络会话") metaLib = netSession.dump_lib else if isLocal == true then address = "本地" port = "本地" metaLib = metax.load(params[1]) end if database_key = metaLib.lib_name[3:] + "_" + metaLib.version + ".dat" database_folder = hostComputer.File("/Databases") available_databases = database_folder.get_files database_matched = false //检查数据库目录中是否存在给定软件和版本的数据库。 for database in available_databases if database.name == database_key then database_file = hostComputer.File("/Databases/" + database.name) file_contents = deserialize_astm(database_file) database_matched = true end if end for if database_matched == false then print("错误:未找到目标库的数据库。") exit end if reserialized_content = "" //执行攻击,然后记录返回的类型和权限。 loop_counter = 0 for entry in file_contents memory_address = entry[5] vuln_value = entry[6] result = metaLib.overflow(内存地址, 漏洞值) 返回类型 = check_return_type(结果) 如果 返回类型 == "Computer" 则 返回权限 = getUserFromHandler(结果) 否则 如果 返回类型 == "Shell" 则 返回权限 = getUserFromHandler(结果.主机计算机) 否则 如果 返回类型 == "File" 则 返回权限 = 结果.路径() 否则 返回权限 = "?" 结束 如果 打印(返回类型) 重新序列化内容 = 重新序列化内容 + 重新序列化(条目[0], 返回类型, 返回权限, 条目[3], 条目[4], 条目[5], 条目[6]) 循环计数器 = 循环计数器 + 1 结束 循环 //将重新序列化的内容写回数据库。 数据库文件.设置内容(重新序列化内容) 如果 是本地 == false 则 checkForUsers(网络会话) 结束 如果 打印(数据库文件.主要攻击链第三部分(目标入侵) 3. 目标入侵权限:以root权限运行 参数:目标的IP地址和端口;-l以及本地库的路径。 用法: targetedhack 10.0.0.xxx 22 或 targetedhack -l /lib/init.so 功能: 目标入侵指向某个IP和端口后,会自动在你的数据库中搜索匹配的服务/版本,然后允许你选择一种攻击方式对目标发起攻击。 重要说明:如果目标服务/版本的数据库尚未存在,目标入侵会提供自动调用创建缓存和测试数据库来创建该数据库的选项。除首次设置/Databases外,你无需手动使用createcache和testdatabase命令,除非有特殊需求,targetedhack(定向黑客)会自动运行它们。 代码分为两部分。将前半部分复制粘贴到文件中,然后将后半部分复制粘贴到下一行。 deserialize_astm = function(file) return_list = [] content = file.get_content() split_records = content[:-2].split(" n") //返回列表。格式为[[1, , ,xx,等], []] for record in split_records return_list.push(record.split(" |")) end for return return_list end function //用于从远程计算机下载文件。 tryPullFile = function(remoteComputer, file) hostShell = get_shell hostComputer = get_shell.host_computer if hostComputer.File(file) != null then uploadSuccess = remoteComputer.scp(文件, "/root/下载", 主机外壳, 0) 如果 上传成功 != 1 则 打印("上传错误: " + 文件) 结束 如果 否则 打印("查找错误: " + 文件 + " 文件不存在或用户没有访问权限。") 结束 如果 结束 函数 //检查远程计算机上是否存在文件。 检查文件 = 函数(远程计算机, 文件) 文件存在 = 远程计算机.文件(文件) 如果 文件存在 != null 则 打印("找到文件,可用权限: " + 文件存在.权限) 否则 打印("远程计算机上未找到文件。") 结束 如果 结束 函数 打印文件= 函数(远程计算机, 文件) 文件存在 = 远程计算机.文件(文件) 如果 文件存在 != null 则 打印("文件内容: n") 打印(文件存在.获取内容) 否则 打印("远程计算机上未找到文件。end if end function corruptLog = function(remoteComputer) makeLog = remoteComputer.touch("/", "system.log") if makeLog != 1 then print("创建干净日志时出错: " + makeLog) else logPresent = remoteComputer.File("/system.log") if logPresent != null then print("正在损坏日志...") logResult = logPresent.move("/var", "system.log") if logResult != 1 then print("损坏日志时出错: " + logResult) else if logResult == 1 then print("日志损坏成功") else print("损坏日志时发生未知错误。") end if else print("未找到日志文件。") end if end if end function //检查/home文件夹中的用户,打印出名称。 printUsers = function(remoteComputer) users = remoteComputer.File("/home").get_folders if users.len == 0 then print("未找到用户账户。")") else for user in users print(user.name) end for end if end function //检查密码文件 checkPassword = function(remoteComputer) passwordPresent = remoteComputer.File("/etc/passwd") if passwordPresent == null then print("密码文件不存在或因权限问题无法读取。") else crypto = include_lib("/lib/crypto.so") if not crypto then crypto = include_lib(current_path + "/crypto.so") end if if not crypto then exit("错误:在/lib路径和当前文件夹中均未找到加密库。n") passwords = [] passwordContents = passwordPresent.get_content splitPasswords = passwordContents.split(char(10)) //char(10)是换行符的Unicode值。 splitPasswords.pop //需要移除最后一项,因为文件末尾的/n会导致该项为空。for password in splitPasswords splitUserAndPass = password.split(":") decryptedPass = crypto.decipher(splitUserAndPass[1]) if decryptedPass != null then print(splitUserAndPass[0] + ":" + decryptedPass) else print("处理密码时出错。n") end if end for end if end function //损坏系统并重启 corruptSystem = function(remoteComputer) kernel = remoteComputer.File("/boot/kernel.img") systemMap = remoteComputer.File("/boot/System.map") initFile = remoteComputer.File("/boot/initrd.img") if kernel == null or systemMap == null or initFile == null then print("系统损坏失败,文件缺失。") else kernel.delete systemMap.delete initFile.delete remoteComputer.重启 打印("系统已损坏") 结束条件 结束函数 //检查网络会话中的活跃用户 checkForUsers = 函数(网络会话) 如果 网络会话.是否有活跃用户 == 1 则 如果 网络会话.是否有root活跃用户 == 1 则 打印("Root用户在线。") 否则 打印("有用户在线。") 结束条件 否则 打印("无用户在线。") 结束条件 结束函数 //程序 如果 参数长度 != 2 或 参数[0] == "-h" 或 参数[0] == "--help" 则 退出("<b>用法: "+程序路径.分割("/")[-1]+" [ip地址] [端口]</b>") metax = 包含库("/lib/metaxploit.so") 如果 非 metax 则 metax = 包含库(当前路径 + "/metaxploit.so") 结束条件 如果 非 metax 则 退出("错误: 无法在/lib路径或当前文件夹中找到metaxploit库") 地址 = 参数[0] 端口 = 参数[1]info_to_record = function(seq_number, port, ip_address, memory_address, value) return_string = str(seq_number) + "|||" + port + "|" + ip_address + "|" + memory_address + "|" + value return return_string end function checkForUsers = function(netSession) if netSession.is_any_active_user == 1 then if netSession.is_root_active_user == 1 then print("超级用户在线。") else print("有用户在线。") end if else print("无用户在线。") end if end function //程序 if params.len != 2 or params[0] == "-h" or params[0] == "--help" then exit("<b>用法:"+program_path.split("/")[-1]+" [ip地址] [端口] 或 -l [本地库路径]</b>") isLocal = false if params[0] == "-l" then isLocal = true end if metax = include_lib("/lib/metaxploit.to_int hostShell = 获取_外壳 hostComputer = 获取_外壳.主机_电脑 file_contents = [] netSession = 元数据.网络_使用(地址, 端口) 如果 非 netSession 则 退出("错误: 无法连接到网络会话") 检查_用户(netSession) metaLib = netSession.转储_库 database_key = metaLib.库_名称[3:] + "_" + metaLib.版本 + ".dat" database_folder = 主机_电脑.文件("/数据库") available_databases = database_folder.获取_文件 database_matched = 假 //检查数据库目录中是否存在给定软件和版本的数据库。 对于 数据库 在 available_databases 中 如果 数据库.名称 == database_key 则 database_file = 主机_电脑.文件("/数据库/" + 数据库.name) file_contents = deserialize_astm(database_file) database_matched = true end if end for //若未找到已存在的数据库,启动createcache和testdatabase,然后重新运行数据库检查。 if database_matched == false then createDBResult = user_input("未找到已存在的数据库,是否创建一个?(Y)或(N):") if (createDBResult == "y" or createDBResult == "Y")then hostShell.launch("/bin/createcache", address + " " + params[1]) hostShell.launch("/bin/testdatabase", address + " " + params[1]) available_databases = database_folder.get_files for database in available_databases if database.name == database_key then database_file = hostComputer.File("/Databases/" + database.name) file_contents = 反序列化_astm(database_file) database_matched = true end if end for else print("退出程序... n") exit end if end if print(database_file.get_content()) // 读取 selected_int = 用户输入("输入你想要运行的黑客程序对应的整数: ") if selected_int == "exit" then exit("用户退出程序...") end if //执行溢出。 selected_entry = file_contents[selected_int.val - 1] memory_address = selected_entry[5] print(memory_address) overflow_value = selected_entry[6] result = 元库.溢出(memory_address, overflow_value) //结果输出。 if not result then exit("程序结束") if 类型(result) == "shell" then result.launch("/bin/bash") targetedhack continued //添加检查文件存在、访问文件、复制文件、移动文件/损坏日志的选项。 else if typeof(result) == "computer" then print("已获取对计算机的访问权限: " + result.get_name) while(true) user_answer = user_input(" 请选择子例程: (1)打印用户账户 (2)破解密码 (3)检查文件 (4)打印文件内容 (5)复制文件 (6)清除日志 (7)损坏系统 (8)创建访客用户 (9)退出 输入整数: ") answer = user_answer.val print(" n") if answer == 1 then printUsers(result) else if answer == 2 then checkPassword(result) else if answer == 3 then filePath = user_input("输入要打印的文件路径: ") checkFile(result, filePath) else if answer == 4 then filePath = user_input("输入要打印的文件路径: ") printFile(result, filePath) else if answer == 5 then filePath = user_input("输入要下载的文件路径: ") tryPullFile(result, filePath) else if answer == 6 then corruptLog(result) else if answer == 7 then corruptSystem(result) else if answer == 8 then accountCreateResult = result.create_user("guest", "Bonzai") if accountCreateResult == 1 then print("用户 guest@Bonzai 创建成功") else print("创建新用户失败: " + accountCreateResult) end if else if answer == 9 then print("正在退出程序...")") exit else print("无效选择。正在退出程序...") exit end if end while //添加尝试删除或解密子内容的选项。 else if typeof(result) == "file" then filename = result.name print("获取到一个文件") print(filename) print("权限:" + result.permissions) print("所有者:" + result.owner) if result.is_folder == 1 then files = result.get_files folders = result.get_folders if filename == "etc" then for folder in folders print("找到文件夹:" + folder.name) end for for file in files print(file.name + " 内容:n") print(file.get_content) end for else for folder in folders print("找到文件夹:" + folder.name) end for for file in files print(file.name + " 内容:n") print(file.get_content) end for end if else print("内容:n" + result.get_content) end if else print("错误:预期为shell、文件或计算机,实际获得:" + result) end if 当运行targetedhack后,它将根据使用的漏洞类型执行以下操作:如果使用的是shell漏洞,将打开返回的shell(它使用.launch("/bin/bash"),因此退出时不会留下断开连接的消息);如果返回的是文件夹,将读取该文件夹中的所有值(例如来自/etc的密码);或者打开计算机子菜单,在该菜单中你可以检查特定文件是否存在、解码密码、查看用户、清除日志等。服务器设置与防御(secure,pulltools) secure权限:以root身份运行 参数:home或server 用法: secure home 或 secure server 功能: 自动为家用或服务器电脑配置严格的权限设置,以阻止入侵者并删除攻击面,例如密码文件、银行文件、电子邮件文件、来宾账户等。如果以“home”为参数运行,将创建例外,允许使用终端、sudo以及其他一些功能,避免用户被锁定在自己的电脑之外。建议经常运行。运行后,由于权限限制,必须使用sudo -s登录终端以root身份进行操作。 tryDeleteFile = function(file_path, computer) if computer.File(file_path) != null then successOrFail = computer.File(file_path).delete if successOrFail.len > 0 then print("删除" + file_path + "时出错: " + successOrFail) else print("已删除" + file_path) end if end if end function getUsers = function(computer) users = computer.File("/home").get_folders if users.len == 0 then print("未找到用户账户。") return [] else return users end if end function //程序入口 if params.len != 1 or params[0] == "-h" or params[0] == "--help" then exit("<b>用法: "+program_path.split("/")[-1]+" [home or server]</b>") homeOrServer = params[0] computer = get_shell.host_computer if active_user != "root" then print("程序只能由root用户运行。") exit end if //锁定系统,为终端、bash和sudo设置例外,然后删除/etc/passwd、home/user/Config文件(Bank.txt和Mail.txt),确保来宾用户已被删除 //例外应仅为g+x,由于root是所有者,用户设置不适用。 //passwd是一个文本文件,但没有.txt后缀,仅为/etc/passwd。 if homeOrServer == "home" or homeOrServer == "Home" then rootFile = computer.File("/") terminalFile = computer.File("/usr/bin/Terminal.exe") bashFile = computer.File("/bin/bash") sudoFile = computer.File("/bin/sudo") manualFile = computer.File("/usr/bin/Manual.exe") mailFile = computer.File("/usr/bin/Mail.exe") browserFile = computer.File("/usr/bin/Browser.exe") textEditorFile = computer.File("/usr/bin/Notepad.so") if not metax then metax = include_lib(current_path + "/metaxploit.so") end if if not metax then exit("错误:在/lib路径或当前文件夹中找不到metaxploit库") hostComputer = get_shell.host_computer exploits = {} if hostComputer.File("/Databases") == null then folder_created = hostComputer.create_folder("/", "Databases") if folder_created == 1 then print("/Databases文件夹已创建...") else print("创建/Databases文件夹失败...") end if end if if isLocal == false then address = params[0] port = params[1].to_int netSession = metax.net_use( address, port ) if not netSession then exit("错误:无法连接到网络会话") checkForUsers(netSession) metaLib = netSession.dump_lib else if isLocal == true then address = "本地" port = "本地" metaLib = metax.exe\") settingsFile = computer.File(\"/usr/bin/Settings.exe\") users = getUsers(computer) rootFile.set_owner(\"root\", 1) //1 代表递归 rootFile.chmod(\"o-rwx\", 1) rootFile.chmod(\"g-rwx\", 1) rootFile.chmod(\"u-rwx\", 1) terminalFile.chmod(\"g+x\") bashFile.chmod(\"g+x\") sudoFile.chmod(\"g+x\") manualFile.chmod(\"g+x\") mailFile.chmod(\"g+x\") browserFile.chmod(\"g+x\") textEditorFile.chmod(\"g+x\") settingsFile.chmod(\"g+x\") if computer.File(\"/home/guest\") != null then successOrFail = computer.File(\"/home/guest\").delete if successOrFail.len > 0 then print(\"删除访客用户时出错: \" + successOrFail) else print(\"已删除访客用户。") end if end if tryDeleteFile("/etc/passwd", computer) if users.len > 0 then for user in users tryDeleteFile("/home/" + user.name + "/Config/Bank.txt", computer) tryDeleteFile("/home/" + user.name + "/Config/Mail.txt", computer) if computer.File("/home/" + user.name + "/Config/Browser.txt") != null then computer.File("/home/" + user.name + "/Config/Browser.txt").chmod("g+rw") end if end for end if print("安全脚本执行完毕。") exit else if homeOrServer == "server" or homeOrServer == "Server" then rootFile = computer.File("/") users = getUsers(computer) rootFile.set_owner("root", 1) //1 表示递归 rootFile.chmod("o-rwx", 1) rootFile.chmod("g-rwx", 1) rootFile.chmod("u-rwx", 1) if computer.File("/home/guest") != null then successOrFail = computer.File("/home/guest").delete if successOrFail.len > 0 then print("删除guest用户时出错: " + successOrFail) else print("已删除guest用户。") end if end if tryDeleteFile("/etc/passwd", computer) if users.len > 0 then for user in users tryDeleteFile("/home/" + user + "/Config/Bank.txt", computer) tryDeleteFile("/home/" + user + "/Config/Mail.txt", computer) end for end if print("安全脚本执行完毕。")") exit end if pulltoolsPrivileges: 以root权限运行 parameters: 无 用法: pulltools 功能说明: 在远程服务器/电脑上运行,自动将你的黑客工具/库文件拉取到该设备。 //用于获取root shell后上传工具。 tryPullFile = function(file, hostShell) hostComputer = get_shell.host_computer uploadSuccess = hostShell.scp(file, "/bin", null, 1) if uploadSuccess != 1 then print("上传错误: " + file) end if end function //用于获取root shell后上传库文件。 tryPullLib = function(libPath, hostShell) hostComputer = get_shell.host_computer currentPath = current_path uploadSuccess = hostShell.scp(libPath, "/lib", null, 1) if uploadSuccess != 1 then print("上传错误: " + libPath + " 至 /lib,尝试当前路径...") retryUpload = hostShell.scp(库路径, 当前路径, null, 1) 如果 重试上传 == 1 则 打印("成功将" + 库路径 + "上传至当前路径。") 否则 打印("上传" + 库路径 + "至当前路径失败。") 结束如果 结束如果 结束函数 //程序 如果 参数长度 > 0 则 退出("<b>用法:在远程电脑上运行程序以从连接的电脑拉取工具</b>") 主机外壳 = 获取外壳 尝试拉取文件("/bin/nmap", 主机外壳) 尝试拉取库("/lib/metaxploit.so", 主机外壳) 尝试拉取库("/lib/crypto.so", hostShell) tryPullFile("/bin/createcache", hostShell) tryPullFile("/bin/testdatabase", hostShell) tryPullFile("/bin/targetedhack", hostShell) tryPullFile("/bin/readdatabase", hostShell) tryPullFile("/bin/clearlog", hostShell) tryPullFile("/bin/secure", hostShell) tryPullFile("/bin/nethack", hostShell) tryPullFile("/bin/ssh", hostShell) print("pulltools finished.") exit 工具(better_nmap,safe_ssh) nmap权限:用户/root 参数:IP 用法: nmap 10.0.1.xx 功能: 这是增强版nmap。它会映射网络并显示所有端口(包括常规nmap无法扫描到的关闭端口和内部端口),还会显示路由器信息。用它替换默认nmap。它还有彩色显示效果。load(params[1]) end if scanResult = metax.scan(metaLib) loop_counter = 0 for area in scanResult scanAddress = metax.scan_address(metaLib, scanResult[loop_counter]) segments = scanAddress.split("Unsafe check: ")[1:] overflowvalues = [] for segment in segments labelStart = segment.indexOf("<b>") labelEnd = segment.indexOf("</b>") overflowvalues.push(segment[labelStart + 3: labelEnd]) end for exploits[scanResult[loop_counter]] = overflowvalues loop_counter = loop_counter + 1 end for //文件写入。 hostComputer = get_shell.host_computer filePath = metaLib.lib_name[3:] + "_" + metaLib.version + ".dat" hostComputer.touch("/Databases/", filePath) file = hostComputer.文件("/Databases/" + 文件路径) // 写入 如果 文件 == 空 则 打印 "错误:无法打开文件进行写入。" 退出 结束 如果 写入计数器 = 1 内容 = "" 对于 漏洞中的键值对 对于 键值对.值中的值 内容 = 内容 + 信息转记录(写入计数器, 端口, 地址, 键值对.键, 值) + " n" 写入计数器 = 写入计数器 + 1 结束 对于 结束 对于 文件.设置内容(内容) 打印(文件.获取内容()) // 读取 主要攻击链第二部分(测试数据库) 2. 测试数据库权限:以root身份运行 参数:目标的IP地址和端口;-l以及本地库的路径。 用法: testdatabase 10.0.0.xxx 22 或者 testdatabase -l /lib/init.功能说明: testdatabase会测试已发现漏洞的返回对象类型(shell、file、computer、other),并将这些信息更新到缓存文件中。 运行后的单个漏洞记录示例: 1|shell|root|22|10.0.0.xx|0x08827|instans 注意:此操作会针对目标测试缓存文件中的所有漏洞,因此可能会在目标电脑上留下日志记录。请注意你所测试的对象。 deserialize_astm = function(file) return_list = [] content = file.get_content() split_records = content[:-2].split(" n") //返回列表。格式为[[1, , ,xx,等], []] for record in split_records return_list.push(record.split(" |")) end for return return_list end function check_return_type = function(returned_value) if typeof(returned_value) == "file" then return "文件" else if typeof(returned_value) == "computer" then return "计算机" else if typeof(returned_value) == "shell" then return " Shell" else if typeof(returned_value) == "number" then if returned_value == 1 then return "其他" else if returned_value == 0 then return "失败" else return "错误: 1" end if else if typeof(returned_value) == "string" then print(returned_value) return "失败" else if returned_value == null then return "失败" else return "错误: 2" end if end function getUserFromHandler = function (handler) rootFile = handler.File("/root") if rootFile != null and rootFile.如果拥有写入权限则返回"root",否则获取/home目录文件。若该文件不为空,遍历其下文件夹,跳过guest用户,若找到有写入权限的用户则返回其名称。若未找到,检查/home/guest文件是否存在且has_permission("w") then return "访客" end if end if return "未知" end function //程序 reserialize = function(seq, object_type, privilege, port, ip, memory, value) return_string = seq + "|" + object_type + "|" + privilege + "|" + port + "|" + ip + "|" + memory + "|" + value +" n" return return_string end function checkForUsers = function(netSession) if netSession.is_any_active_user == 1 then if netSession.is_root_active_user == 1 then print("超级用户在线。") else print("有用户在线。") end if else print("无用户在线。") end if end function if params.len != 2 or params[0] == "-h" or params[0] == "--help" then exit("<b>用法: "+program_path.

//Nmap替代工具。 如果参数长度不等于1或参数[0]等于"-h"或"--help",则退出并显示"nmap_usage"命令信息 如果不是有效IP地址,则退出并提示"nmap: 无效的IP地址" 如果当前shell主机的网络未激活,则退出并提示"nmap: 无网络连接。" IP地址 = 参数[0] 是否为局域网IP = 检查是否为局域网IP(IP地址) 如果是局域网IP 路由器 = 获取路由器 否则 路由器 = 获取路由器(IP地址) 结束如果 如果路由器为空,则退出并提示"nmap: 未找到IP地址" 已使用端口 = 空 //device_ports也会返回转发到设备的端口,即使这些端口属于不同的IP。 //检查唯一键以防止重复。 如果不是局域网IP 已使用端口 = 路由器.已使用端口 设备局域网IP = 路由器.devices_lan_ip ports = [] unique = {} for ip in devicesLanIP devicePorts = 路由器.设备端口(ip) for port in devicePorts key = port.get_lan_ip + ":" + port.port_number if not unique.hasIndex(key) then unique[key] = true ports.push(port) end if end for end for else usedPorts = 路由器.设备端口(ipAddress) ports = usedPorts end if if usedPorts == null then exit("nmap: ip地址未找到") if typeof(usedPorts) == "string" then exit(usedPorts) info = "端口 状态 已转发 服务 版本 局域网" print(" 开始扫描于 " + current_date) print("目标" + params[0] + " 上的开放端口 n") if(ports.len == 0) then exit("扫描完成。未发现开放端口。") for port in ports service_info = 路由器.由于你的单人游戏可能会有不同的值(或者在多人游戏中,可能是不同的init.so版本),你需要运行createcache和testdatabase命令,并使用-l /lib/init.so参数,然后检查哪个值会返回具有用户或root权限的计算机对象(用户权限是成功入侵所需的最低权限)。 getUsers = function(comp) homeFile = comp.File("/home") result = homeFile.get_folders return result end function searchEmails = function(computers) for comp in computers users = getUsers(comp) for user in users emailFile = comp.File("/home/" + user.name + "/Config/Mail.txt") if emailFile == null then print("No email found for user " + user.name + " on pc " + comp.local_ip + " n") else 打印("来自" + 计算机.local_ip + "的邮件 用户:" + 用户.名称 + " n" + 邮件文件.获取内容 + " n") end if end for end for end function 搜索银行 = function(计算机列表) for 计算机 in 计算机列表 用户列表 = 获取用户(计算机) for 用户 in 用户列表 邮件文件 = 计算机.文件("/home/" + 用户.名称 + "/Config/Bank.txt") if 邮件文件 == null then 打印("在电脑 " + 计算机.local_ip + " 上的用户 " + 用户.名称 + " 未找到银行信息 n") else 打印("来自" + 计算机.local_ip + "的银行信息 用户:" + 用户.名称 + " n" + 邮件文件.获取内容 + " n") end if end for end for end function 搜索密码 = function(计算机列表) for 计算机 in 计算机列表 结果 = 计算机.文件("/etc/passwd") 如果 结果 == 空 则 打印("未找到计算机的密码文件: " + 计算机.本地IP + " n") 否则 打印("来自 " + 计算机.本地IP + " 的密码: n" + 结果.获取内容 + " n") 结束 如果 结束 循环 结束 函数 //入侵连接到路由器的计算机。 如果 参数.长度 > 0 则 退出("<b>用法:安装在路由器上,无参数运行。</b>") 元渗透 = 包含库("/lib/metaxploit.so") 如果 非 元渗透 则 元渗透 = 包含库(当前路径 + "/metaxploit.so") 结束 如果 如果 非 元渗透 则 退出("错误:在/lib路径或当前文件夹中找不到元渗透库") 路由器 = 获取_路由器; 设备局域网IP = 路由器.设备局域网IP 元库 = 元渗透.加载("/lib/init.so") 内存值 = "0x16CC4CB7" 漏洞值 = "selengthsdyn_dtreelite" 计算机列表 = [] 对于 设备局域网IP 中的每个设备 计算机 = 元库.溢出(内存值, 漏洞值, 设备) 如果 计算机存在 则 将计算机添加到计算机列表 结束循环 打印("已获取的计算机: ") 对于 计算机列表中的每个计算机 打印(计算机.本地IP) 结束循环 循环(真) 选择 = 用户输入("选择子程序: (1)打印电子邮件 (2)打印银行信息 (3)搜索密码 (4)退出 输入整数: ").值 如果 选择 == 1 则 搜索电子邮件(计算机列表) 否则如果 选择 == 2 则 搜索银行(计算机列表) 否则如果 选择 == 3 则 搜索密码(计算机列表) 否则如果 选择 == 4 则 打印("正在退出程序...") 退出 否则 打印("输入无效。请仅输入1到4之间的整数。服务器连接(connect) 连接权限:用户/管理员 参数:无 用法: connect 功能: 允许你使用单个命令连接到你租用的服务器。请注意,你需要硬编码IP地址和密码。 如果参数长度大于0,则退出并显示“用法:运行程序以连接到你的跳转服务器。” 主机外壳 = 获取外壳 IP = *你的私人服务器IP* 用户 = "管理员" 密码 = *你的私人服务器管理员密码* 端口 = 22 连接 = 主机外壳.连接服务(IP, 端口, 用户, 密码, "ssh") 如果连接的类型不是"外壳",则 打印("连接服务器时出错:" + 连接) 否则 连接.启动("/bin/bash") 结束条件 链锯密码破解器 作者:NitroCynic 链锯权限:访客/用户/管理员 参数:无 使用方法: 链锯 运行 功能说明: 自动破解任何NPC机器的管理员密码(获取访客或用户权限后,我会手动将其上传到机器,然后通过"链锯 运行"命令执行)。 免责声明:我并未创建此脚本,仅对其进行了编辑以使其可导入游戏,因为游戏内代码编辑器存在问题,且Greybel的构建功能无法正常工作(出于此原因,我还移除了链锯标志,字符串闭合括号导致了问题)。 这是NitroCynic的作品,你可以在他的代码库上找到完整项目。我发布此内容是为了解释如何使其在游戏中正常运行。 许可证:MIT获取电锯程序设置 最初我打算发布代码,但在Steam指南中发布太长了。所以请前往代码托管平台复制chainsaw.gs、samples.gs和pregens.gs文件。 在chainsaw.gs中,删除电锯标志以及任何使用其引用变量的打印/日志语句。然后将编辑后的chainsaw.gs保存在根目录下的/data文件夹中。另外,搜索所有“+=”的实例,并根据上下文将其替换为“x = x + y”。Miniscript不支持“+=”,开发者本打算让Greybel在构建过程中移除它们,但由于构建未成功,我们需要手动操作。 然后打开samples.gs和pregens.gs。对于这两个文件,分别按下ctrl + a全选,然后将所有行合并成一行(游戏内代码编辑器仅接受所有数值在同一行的格式)。这可以在vscode或其他文本编辑器中完成。确保提前删除注释,或在合并行后将其移除。 当你将samples.gs和pregen.gs分别合并成单行后,将它们作为单独的.src文件导入到/data文件夹中,与chainsaw.src放在一起(总共三个文件:chainsaw.src、pregens.src、samples.src)。然后打开chainsaw.src并进行构建。这样你就拥有了一个密码破解器。之后你可以根据喜好删除/data文件夹。端口信息(端口) 局域网IP = 端口.获取局域网IP 端口状态 = "开放" 转发状态 = "否" 如果(端口已关闭 且 非局域网IP) 则 端口状态 = "关闭" 否则 如果 是局域网IP 则 端口状态 = "开放" 否则 端口状态 = "内部" 结束如果 对于 已使用端口 中的 转发端口 如果(端口.获取局域网IP == 转发端口.获取局域网IP 且 端口.端口号 == 转发端口.端口号) 则 转发状态 = "是" 如果(端口已关闭) 则 端口状态 = "关闭" 否则 端口状态 = "开放" 结束如果 结束如果 结束循环 信息 = 信息 + " n" + 端口.端口号 + " " + 端口状态 + " " + 转发状态 + " " + 服务信息 + " " + 局域网IP 结束循环 防火墙规则 = 路由器.firewall_rules() print("路由器内核版本: " + router.kernel_version()) print("防火墙规则: " + firewallRules.join(", ")) colorlessInfo = format_columns(info) + " n" //由于颜色标签会影响format_columns的对齐,因此必须在格式化后添加颜色。 colorInfo = colorlessInfo.replace("open", "<color=#27F53F>开放</color>").replace("true", "<color=#27F53F>是</color>").replace("closed", "<color=#ED2000>关闭</color>").replace("false", "<color=#ED2000>否</color>")替换("internal", "<color=#dcdcaa>internal</color>") 打印(颜色信息) //关闭/错误颜色: <color=#ED2000> //开启/正确颜色: <color=#27F53F> //内部颜色: <color=#dcdcaa> ssh权限: 用户/根用户 参数: 用户@密码 IP 用法: ssh 根用户@chud 10.0.0.xxx 功能说明: 这是普通的ssh,但使用.launch("/bin/bash")而非start_shell,因此不会留下断开连接消息。用此命令替换ssh。 //命令: ssh 如果参数长度<2或>3,则退出(命令信息("ssh_usage")) 凭证 = 参数[0].分割("@") 用户 = 凭证[0] 密码 = 凭证[1] 端口 = 22 //参数是字符串列表,因此必须转换为整数,这是connect_service接受的类型。 如果参数长度 == 3,则端口 = 参数[2]to_int 如果 typeof(port) 不等于 "number" 则 exit("无效端口: " + port) print("连接中...") shell = get_shell.connect_service(params[1], port, user, password, "ssh") 如果 typeof(shell) 等于 "string" 则 exit(shell) 如果 shell 则 shell.launch("/bin/bash") 否则 print("连接失败") 结束 如果 实用工具 第2部分(破解WiFi、清除日志、读取数据库) 破解WiFi权限:用户/根用户 参数:无 用法: 破解WiFi 功能: 自动获取所有信号强度大于15%的WiFi网络密码,然后显示密码供你手动输入或复制粘贴。只需运行一次,之后即可删除。 crypto = include_lib("/lib/crypto.so") 如果 非 crypto 则 crypto = include_lib(current_path + "/crypto.结束条件 如果不存在加密库,则退出并显示“错误:在/lib路径或当前文件夹中找不到加密库” 主机电脑 = 获取外壳.主机电脑 网络列表 = 主机电脑.无线局域网网络("wlan0") 加密.无线监控模式("启动", "wlan0") 网络密码列表 = [] 循环计数器 = 0 对于 网络列表中的每个网络 分割网络信息 = 网络.分割(" ") 基本服务集标识符 = 分割网络信息[0] 信号强度 = 分割网络信息[1][:-1].数值 扩展服务集标识符 = 分割网络信息[2] 如果 信号强度 < 15 则 打印("网络:" + 扩展服务集标识符 + "因信号强度低而跳过。继续...") 继续 结束条件 无线重放结果 = 加密.无线重放(基本服务集标识符, 扩展服务集标识符, 300000 / (信号强度 + 15)) 如果 (无线重放结果 == 空) 则 结果 = 加密.无线破解(当前路径 + "/file.cap") 网络密码列表.添加(扩展服务集标识符 + ": " + 结果 ) 主机电脑.文件(当前路径+ "/file.cap").删除 结束条件判断 结束循环 crypto.airmon("停止", "wlan0") 打印(" n") 遍历网络密码中的密码 打印密码 结束循环 清除日志权限:root 参数:无 用法: clearlog 功能: 通过用干净副本覆盖现有日志来清除日志。也适用于路由器(必须手动上传到路由器才能使用)。 //通过覆盖本地系统日志使其损坏(防止新日志出现“已删除文件”条目)。以root身份运行。 主机计算机 = 获取_shell.主机_计算机 创建日志 = 主机计算机.创建文件("/", "system.log") 如果创建日志不等于1 则 打印("创建干净日志时出错:" + 创建日志) 否则 日志存在 = 主机计算机.文件("/system.log") 如果日志存在不等于空 则 打印("正在损坏日志...") 日志结果 = 日志存在.移动("/var", "system.log") 如果日志结果 !如果大于1则 打印("损坏日志时出错:" + 日志结果) 否则如果日志结果等于1则 打印("日志损坏成功") 否则 打印("损坏日志时发生未知错误。") 结束如果 否则 打印("未找到日志文件。") 结束如果 结束如果 读取数据库权限:用户/根用户 参数:无 用法: 读取数据库 功能: 显示电脑上所有可用的数据库,并允许你选择一个打开并查看其内容。 主机电脑 = 获取_外壳.主机电脑 数据库文件夹 = 主机电脑.文件("/数据库") 数据库列表 = 数据库文件夹.获取_文件() 序号计数器 = 1 对于数据库列表中的每个数据库 打印("[" + 序号计数器 + "] " + 数据库.name()) seq_counter = seq_counter + 1 end for selected_int = user_input("请选择要读取的数据库编号: ") if selected_int == "exit" then print("正在退出程序...") exit end if print(databases[selected_int.val - 1].get_content()) 路由器入侵(nethack) nethack权限:root 参数:无 用法: nethack 功能: 上传到你拥有root权限的路由器,运行后可访问连接到该路由器的所有计算机的电子邮件、密码和银行文件。 重要说明:使用前必须编辑第60行和第61行:mem_value = "0x16CC4CB7" vuln_value = "selengthsdyn_dtreelite" 此脚本通过硬编码的溢出值攻击连接计算机上的init.so库。

评论

共0条评论
face
inputImg
相关阅读
最新更新

《Grey Hack》海盗手册(v0.8版黑客指南)

《Grey Hack》游戏系统指南、基础玩法及技巧提示 请完成教程任务 本指南由onikidokuz的英文原版指南翻译而来 旧工具 sshcrack、sshgu…

2026-03-20 22:000赞 · 0评论

自动化Wi-Fi破解(初级脚本编写教程)

一个新手示例——逐步创建脚本以自动执行《Grey Hack》新游戏中的首要任务。 方法: 每次开始游戏时,我们都必须做一件事——破解Wi-Fi以获取互联网连接。…

2026-03-20 10:000赞 · 0评论

《Grey Hack》基础 - 如何测试软件是否存在恶意程序

如何处理你并非完全信任的软件的基本概述 本指南将让你具备一些判断某款软件是否可能包含恶意元素的基本能力。 如果你对本指南中的某些网络渗透步骤不太清楚,可以参考底…

2026-03-22 04:000赞 · 0评论

WiFi破解与自动切换

这是两个旨在在《Grey Hack》中编译和运行的工具。第一个名为xwifi。它会自动破解所有可用WiFi网络的密码,跳过信号强度低的网络和已破解的网络。结果会…

2026-03-20 16:000赞 · 0评论

《Grey Hack》基础知识 - 安全迈出多人游戏第一步

《Grey Hack》多人模式初入指南 欢迎来到《Grey Hack》多人模式!毕竟单人模式通常只是徒劳的练习,加入我们体验更优质的游戏模式吧! 本指南将帮助你…

2026-03-20 13:000赞 · 0评论

泰伯利亚黎明触发器机制详解 - 它们的真实运作方式

Anyone who has messed with scripting in Tiberian Dawn, and has done some slightl…

2026-02-16 01:000赞 · 0评论

生活记录 【主观锐评】二重螺旋脚本想开就开 管好自己 拒绝玩家内斗

骂我我就骂你 烂完了社区

2025-10-21 19:240赞 · 0评论

原创 斗罗大陆h5GM后台在线发助力

-

2025-08-05 18:140赞 · 0评论

《比特燃烧者》新手黑客指南

A short &amp; comprehensive guide including simple working scripts for beginning…

2026-02-15 22:000赞 · 0评论

射击游戏 普坝脚本号,泛滥成灾了

-

2025-11-16 00:330赞 · 0评论
暂无更多

最新更新

  • 安全脚本 - 因为安全并非首要之事。 — 本指南提供了一个用于保护游戏内家用电脑或服务器安全的脚本。 路径/安全漏洞说明: 过去两年,我无需费力进行黑客攻击就能轻松得手。原因很简单,人们经常使用通用或低…
  • 基础脚本漏洞利用 — 本指南将说明如果你完成了教程任务却不知道接下来该做什么。 简介 游戏更新了新的【漏洞利用】机制后,旧程序已从游戏中移除,你无法再使用教程中提供的那些程序。 在制…
  • 脚本小子的网络忍者养成指南 — 由脚本小子为脚本小子们打造 成为网络忍者
  • 简易无线网络自动破解 — 在本指南中,我想分享每次重置存档后运行的第一个脚本。它会自动破解最佳的无线网络并连接,此外还会创建一些我后续脚本常用的文件夹。这个脚本简单易懂,你也可以轻松添加…
  • 离开教程后的首次攻击 — 帮助无从下手的新玩家开始第一次攻击 前言 目前版本(v0.8)的教程中只会进行WiFi密码破解,随后注册邮箱即可进入黑客商店,导致新玩家接取第一个任务之后难以下…
  • 《Grey Hack》基础 - 如何测试软件是否存在恶意程序 — 如何处理你并非完全信任的软件的基本概述 本指南将让你具备一些判断某款软件是否可能包含恶意元素的基本能力。 如果你对本指南中的某些网络渗透步骤不太清楚,可以参考底…
  • 黑客指南 v0.8(翻译版) — 系统操作指南、游戏基础、提示与建议…… (本指南使用翻译工具翻译,并进行了个人修改) 官方英文指南 本指南,确切地说是另一篇指南的翻译版本,旨在帮助俄语玩家了解…
  • Bash历史记录和安全日志功能 — 这个/bin/bash脚本既能添加bash历史记录功能,又能保证你的日志安全 操作方法: 将以下代码复制粘贴到代码编辑器中然后编译,编译完成后确保删除当前的/b…
  • Metaxploit入门 - 又名如何摆脱付费漏洞利用 — 一份教你摆脱预打包漏洞工具的付费束缚和合规枷锁的指南。卸下你的辅助轮,坐上精英黑客的高座(享受过这般视野后便会重重摔落)。 装备
  • 黑客手册【土耳其语版】(v0.8.5版本黑客指南) — 系统攻击相关信息、游戏信息、提示与技巧。 所需工具 系统中已安装的工具 whois:可详细获取服务器所有者信息,用于获取域名、姓名、邮箱、电话号码等信息。 Sc…