Jump to content




KOS- Advanced Secure Handheld PC Operating System


  • You cannot reply to this topic
40 replies to this topic

#1 Kizz

  • Members
  • 99 posts
  • LocationLouisville, Kentucky

Posted 16 April 2015 - 06:29 PM

Kizz Operating System


Or KOS for short, is a basic, lightweight, "high security" operating system for advanced handheld PC's.

KOS is a work in progress!

Version: 1.6

Features:
  • Fully adaptable environment for the Advanced Tablet.
  • Simple and easy to follow usage.
  • First use account creation. Make sure you're the first person to run KOS upon installing, or you may have a security breach!
  • Full username and password auth.
  • Multi-level authentication that supports guest users and the like.
  • Non-terminable runtime and login. Prevents snoopers editing passwords or bypassing the auth.
  • Auto-Logout! After 300 seconds, the system will log out. Users can extend this up to 24 hours.
  • Easy to add multiple accounts.
  • Ready for expansion! Now that you have a safe environment, you can begin building your remote door control systems and the like.
  • Full logging!
  • Password hashing
  • Auto installer!
  • Can't call rom/programs/edit or rom/programs/delete
  • Usable GUI and terminal mode
Coming soon:
  • Terminable programs outside the runtime
  • More OS functions!
  • GUI and UI support
  • Ability to create more auth levels.
I would love to hear suggestions and I am always happy to hear criticisms and comments. Keep it friendly though please.

License: Anyone may use, copy, edit or redistribute KOS, but please cite me in your works. (Kizz). KOS is not to be sold for profit under any circumstance.

The GUI:

Posted Image

Non-Terminable Login:

Posted Image

Logging in:

Posted Image

Homescreen:

Posted Image

Logout and runtime tab:

Posted Image

Auth restrictions:

Posted Image

Loging:

Posted Image


Finally, the download!

Auto installer: http://pastebin.com/UzfMm1hx

KOS can be tracked here: https://github.com/kizz12/KOS

Make sure to remove the .lua from the file names before running!

Credits:
  • I used this (broken) API to help forge my GUI. I would like to credit account.username for the API. I did have to change it a lot though.
  • Thanks to everyone who helped me fix issues in Ask a Pro!
  • Thanks to all those who are posting bugs and specifically TsarN!
  • Just implemented touch

Edited by Kizz, 24 April 2015 - 07:34 PM.


#2 Creator

    Mad Dash Victor

  • Members
  • 2,168 posts
  • LocationYou will never find me, muhahahahahaha

Posted 16 April 2015 - 07:08 PM

Why don't you remove the .lua. I mean you are trying to get us interested in KOS. Add pastebin installer. Nobody'll dowload it from github.

#3 flaghacker

  • Members
  • 655 posts

Posted 16 April 2015 - 07:13 PM

You should probably look into hashing the passwords and maybe even usernames, as storing them in a plain text file isn't secure at all.

#4 Kizz

  • Members
  • 99 posts
  • LocationLouisville, Kentucky

Posted 21 April 2015 - 12:27 PM

Updated to add auto installer from pastebin.

#5 Kizz

  • Members
  • 99 posts
  • LocationLouisville, Kentucky

Posted 21 April 2015 - 01:18 PM

Added password hashing

#6 TsarN

  • Members
  • 29 posts

Posted 21 April 2015 - 02:51 PM

Security issues
You can run
/rom/programs/edit /users
and set your access level to whatever you want(no matter what access level you have now)
You can run
rm *
to delete everything(no matter what access level you have)

Edited by TsarN, 21 April 2015 - 02:51 PM.


#7 Kizz

  • Members
  • 99 posts
  • LocationLouisville, Kentucky

Posted 21 April 2015 - 03:36 PM

Added prevention of deleting core files. (direct path can still be used. Currently no great solutions for this. There is no way to delete or edit files in KOS until the user logs in. Only give guest accounts to beginners and trusted users ;) )

Edited by Kizz, 21 April 2015 - 05:32 PM.


#8 Kizz

  • Members
  • 99 posts
  • LocationLouisville, Kentucky

Posted 21 April 2015 - 05:33 PM

Update: Removed ability to remotely access the rom edit and delete commands.

#9 TsarN

  • Members
  • 29 posts

Posted 21 April 2015 - 06:12 PM

I can't use "edit" and "rm" other than in root directory. Also, you can still edit protected files via lua code.

#10 Kizz

  • Members
  • 99 posts
  • LocationLouisville, Kentucky

Posted 21 April 2015 - 06:14 PM

I doubt this will change. You can still edit FROM the root directory and call the edit files from /edit <filename>.

If you're able to write a program to use fs and edit OS files, then you shouldn't be able to log in. If you're allowing a user into the OS that can do this, then it is your own security flaw. I would have to disable the entire FS api to fix that.

#11 Creator

    Mad Dash Victor

  • Members
  • 2,168 posts
  • LocationYou will never find me, muhahahahahaha

Posted 21 April 2015 - 06:17 PM

Why don't you try sandboxing the apps?

#12 Kizz

  • Members
  • 99 posts
  • LocationLouisville, Kentucky

Posted 21 April 2015 - 06:52 PM

Not exactly sure what sandboxing is. Is there more information on this?

Offhand: Updated to prevent use of ////(etc...)/rom/programs/edit and delete, removed ability to use blank username and pass.

#13 Creator

    Mad Dash Victor

  • Members
  • 2,168 posts
  • LocationYou will never find me, muhahahahahaha

Posted 21 April 2015 - 06:55 PM

Sandboxing is when you assign a custom environement to a function. This means that you can control fs.open() by defining it in a different way. A env is a table. You assing an env to a func by ding this:

setfenv(func,env)

Hope I helped you

#14 Kizz

  • Members
  • 99 posts
  • LocationLouisville, Kentucky

Posted 21 April 2015 - 07:00 PM

Currently this function runs in my runtime to prevent pathing to the old edit file.

function protect()
local combine = fs.combine
local oldFs = fs.open
--print'OS Protect active!'
fs.open = function(path,...)
  if combine("/",path) == "rom/programs/edit" then
   --print'Failed to call edit!'
   return
  end
  if combine("/",path) == "rom/programs/delete" then
   --print'Failed to call delete!'
   return
  end
  if combine("/",path) ~= "rom/programs/delete" then
   return oldFs(path,...)
  end
end
end

Is this similar to what you are describing?

Edited by Kizz, 21 April 2015 - 07:01 PM.


#15 Creator

    Mad Dash Victor

  • Members
  • 2,168 posts
  • LocationYou will never find me, muhahahahahaha

Posted 21 April 2015 - 07:03 PM

This is my env:
Spoiler

Take a look at this if you want to learn some more.

Edited by Creator, 21 April 2015 - 07:05 PM.


#16 Kizz

  • Members
  • 99 posts
  • LocationLouisville, Kentucky

Posted 21 April 2015 - 07:08 PM

That's actually really nice. I will look more into this. I understand it pretty well, and what I have done is similar, but you've overwritten all api's which is nice. And it's taken care of all at once.

#17 Creator

    Mad Dash Victor

  • Members
  • 2,168 posts
  • LocationYou will never find me, muhahahahahaha

Posted 21 April 2015 - 07:17 PM

Modify it to suit you needs if you want. In this case don't forget to give credit. Also look at the github since all the apis work tightly together and the arguments passed may be hard to understand. ;)

#18 Kizz

  • Members
  • 99 posts
  • LocationLouisville, Kentucky

Posted 21 April 2015 - 07:22 PM

Yea I won't be ripping any of your work. I may use a similar method, but in general none of my work is 100% mine. Likely 100's of people have written some of the code I've used. Some things even come directly from the wiki ;D. My OS is just a learning experience for me, plus the community here is soo cool, it's just fun to see how many Lua wizards can improve my work.

This is also my very first larger project, my first OS and my first go at a serious secure program. From inside minecraft, 95% of CC users would never be able to hack into my OS. Specifically with the login system.

Edited by Kizz, 21 April 2015 - 07:24 PM.


#19 biggest yikes

  • Members
  • 573 posts

Posted 21 April 2015 - 08:54 PM

You can crash "master" by setting the second parameter of the "extendme" event to a string
os.queueEvent("extendme", "foo")
It'll try to compare a string with a number, which never goes well, does it?

Edited by Atenefyr, 21 April 2015 - 08:58 PM.


#20 Kizz

  • Members
  • 99 posts
  • LocationLouisville, Kentucky

Posted 22 April 2015 - 12:46 AM

Nice find! Thanks! I'll fix that tomorrow.





1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users