This is a read-only snapshot of the ComputerCraft forums, taken in April 2020.
lewisholcombe's profile picture

Public computer room help

Started by lewisholcombe, 27 February 2013 - 06:41 AM
lewisholcombe #1
Posted 27 February 2013 - 07:41 AM
Hey guys.
So i have attached a photo below of what im adding to my server and i just wanted some ideas and maybe a few scripts on how to make computers more secure e.g. people cant edit startup or add passwords and maybe the computer can log who goes on them?
Can someone give me some ideas. My server is a reasonably small server with about 50ish people on?
if that helps?
Acfuffy #2
Posted 27 February 2013 - 09:43 AM
Put an anti virus on them, and use mcedit.
LBPHacker #3
Posted 27 February 2013 - 09:55 AM
Put an anti virus on them, and use mcedit.
I think he's asked about THE anti-virus, not about what to put on the computers.
  • Computers unfortunately can't log who goes on them - unless you build a player detector authentication system (MiscPeripherals).
  • I think you should build something like a cabin around every computer which can be closed or opened only from inside, because nothing prevents the players to get into a computers GUI when somebody is already in it, so they can actually eg. turn off the computer while you are working on it.
  • If you don't feel like rewriting bios.lua, you can disble startup by placing a disk drive behind every computer which cannot be accessed by users. This way the floppy in that drive will be mounted in the folder called "disk". You'd have to write a startup program on that disk that overwrites disk.eject() and prevents ejecting the disk itself.
lewisholcombe #4
Posted 27 February 2013 - 10:11 AM
Thankyou very much LBPhacker :)/> Helped alot. Im going to re write bios.lua :)/>
Thanks :D/>
Bubba #5
Posted 27 February 2013 - 10:36 AM
Thankyou very much LBPhacker :)/> Helped alot. Im going to re write bios.lua :)/>
Thanks :D/>

Actually, you'll want to edit the rom/programs/shell program in order to disable automatic disk startup. The bios file has nothing to do with disk startup.

Relevant code is here:

if parentShell == nil then
    -- Run the startup from the ROM first
    local sRomStartup = shell.resolveProgram( "/rom/startup" )
    if sRomStartup then
        shell.run( sRomStartup )
    end
    
    -- Then run the user created startup, from the disks or the root
    local sUserStartup = shell.resolveProgram( "/startup" )
    for n,sSide in pairs( redstone.getSides() ) do
        if disk.isPresent( sSide ) and disk.hasData( sSide ) then
            local sDiskStartup = shell.resolveProgram( fs.combine(disk.getMountPath( sSide ), "startup") )
            if sDiskStartup then
                sUserStartup = sDiskStartup
                break
            end
        end
    end
    
    if sUserStartup then
        shell.run( sUserStartup )
    end
end
LBPHacker #6
Posted 27 February 2013 - 10:53 AM
Yeah, misworded - you've got a point. (It's the bad habit of mine to call everything "bios.lua" inside ComputerCraft\lua…)
SuicidalSTDz #7
Posted 27 February 2013 - 10:53 AM
Put an anti virus on them, and use mcedit.
I think he's asked about THE anti-virus, not about what to put on the computers.
  • Computers unfortunately can't log who goes on them - unless you build a player detector authentication system (MiscPeripherals).
  • I think you should build something like a cabin around every computer which can be closed or opened only from inside, because nothing prevents the players to get into a computers GUI when somebody is already in it, so they can actually eg. turn off the computer while you are working on it.
  • If you don't feel like rewriting bios.lua, you can disble startup by placing a disk drive behind every computer which cannot be accessed by users. This way the floppy in that drive will be mounted in the folder called "disk". You'd have to write a startup program on that disk that overwrites disk.eject() and prevents ejecting the disk itself.
I am actually currently working on an Anti-Virus software (Pretty much done) that will scan each file and return if any bannedStrings are detected:

The Banned Strings:

{"startup", "fs.delete","rename","copy","move" and many more}

I will love to see this computer room when it's finished ;)/>
Bubba #8
Posted 27 February 2013 - 11:07 AM
I am actually currently working on an Anti-Virus software (Pretty much done) that will scan each file and return if any bannedStrings are detected:

The Banned Strings:

{"startup", "fs.delete","rename","copy","move" and many more}

I will love to see this computer room when it's finished ;)/>

What happens if I do this?

local delete = "fh.del":gsub("h", "s").."ete"
delete = loadstring(delete)
delete("start".."up")

Not to mention the fact that many people's programs would no longer work (how likely is it that somebody might use a variable that is named 'copy' or has text somewhere in the program that says copy?), therefore rendering an OS that implements this unusable.

Better way to do this would be function replacement.
Here's an example:

local nativeDelete = fs.delete
fs.delete = function()
  return false
end
SuicidalSTDz #9
Posted 27 February 2013 - 01:15 PM
I am actually currently working on an Anti-Virus software (Pretty much done) that will scan each file and return if any bannedStrings are detected:

The Banned Strings:

{"startup", "fs.delete","rename","copy","move" and many more}

I will love to see this computer room when it's finished ;)/>/>/>

What happens if I do this?

local delete = "fh.del":gsub("h", "s").."ete"
delete = loadstring(delete)
delete("start".."up")

Not to mention the fact that many people's programs would no longer work (how likely is it that somebody might use a variable that is named 'copy' or has text somewhere in the program that says copy?), therefore rendering an OS that implements this unusable.

Better way to do this would be function replacement.
Here's an example:

local nativeDelete = fs.delete
fs.delete = function()
  return false
end

My anti virus is still in the works. The user can type scan <file> and it will return any "threats" then the user can verify if these are threats and choose to ignore them. So it is more of a file scanner of sorts.
Engineer #10
Posted 28 February 2013 - 07:46 AM
You also could do this as startup, or do this after your login system:

while true do
   local reader = read()
   if string.find(reader, "startup") then
	   print("You are not able to edit startup")
   elseif string.find(reader, "another word they may not use") then
	   print("You are not allowed to use another word they may use.")
   else
	   shell.run(reader)
   end
end

This is very basic, you can work it out ;)/>/>