Advertisement
Guest User

m1m

a guest
May 12th, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 5.13 KB | None | 0 0
  1. function clear()
  2.   term.clear()
  3.   term.setCursorPos(1,1)
  4. end
  5.  
  6. function rKey()
  7.   local key = math.randomseed(os.time() * (10^9))
  8.   key = math.random(0,9999999999)
  9.   key = string.format("%x", key)
  10.   return key
  11. end
  12.  
  13.  
  14. function hash(pw, key)
  15.  
  16.   local pw = pw
  17.   local key = key
  18.  
  19.   local ascii   = {}
  20.   local ascii_2 = {}
  21.  
  22.   for i = 1, #key do
  23.     ascii[i] = string.byte(key, i)
  24.   end
  25.  
  26.   for j = 1, #pw do
  27.     ascii_2[j] = string.byte(pw, j)
  28.   end
  29.  
  30.   local n = string.reverse(table.concat(ascii))
  31.         n = tonumber(n)
  32.   local m = string.reverse(table.concat(ascii_2))
  33.         m = tonumber(m)
  34.  
  35.   local key_n = math.randomseed(n)
  36.         key_n = math.random(0,9999999999)
  37.   local key_m = math.randomseed(m)
  38.         key_m = math.random(0,9999999999)
  39.  
  40.   local mod_n = key_n % #key
  41.   local mod_m = key_m % #pw
  42.  
  43.   local xor = bit.bxor(key_n, key_m)
  44.   local hex = string.format("%x", xor * (mod_n+mod_m+1))
  45.  
  46.   return hex
  47.  
  48. end
  49.  
  50. function store(user, key, pw)
  51.  
  52.   local user = user
  53.   local key = key
  54.   local pw = pw
  55.  
  56.   if fs.exists("/.users") == false then
  57.     fs.makeDir("/.users")
  58.   end
  59.  
  60.   local t = {"/.users/"}
  61.   table.insert(t, user)
  62.   t = table.concat(t)
  63.  
  64.   if fs.exists(t) == false then
  65.     local x = fs.open(t, "w")
  66.     x.writeLine(key)
  67.     x.writeLine(pw)
  68.     x.close()
  69.     return true
  70.   else
  71.     printError("Username already taken")
  72.     sleep(1)
  73.     clear()
  74.     return false
  75.   end
  76.  
  77. end
  78.  
  79. function login()
  80.   local a, b = 0, 0
  81.   local t
  82.   local u
  83.  
  84.   while true do
  85.     term.setTextColor(colors.orange)
  86.     print("Logging in")
  87.     term.setTextColor(colors.white)
  88.     term.write("Username: ")
  89.     u = read()
  90.     t = {"/.users/"}
  91.     table.insert(t,u)
  92.     t = table.concat(t)
  93.    
  94.     if fs.exists(t) == false then
  95.       printError("User doesn't exist")
  96.       a = a + 1
  97.       print("Attempt: "..a)
  98.       os.sleep(2)
  99.       clear()
  100.       if a >= 3 then
  101.         printError("Shutting down")
  102.         os.sleep(2)
  103.         os.shutdown()
  104.       end
  105.     else
  106.       break
  107.     end
  108.   end
  109.  
  110.      
  111.   while true do
  112.    
  113.     local file = fs.open(t, "r")
  114.     term.write("Password: ")
  115.     local p = read('*')
  116.     local nKey = file.readLine()
  117.     local key = nKey
  118.     nKey = file.readLine()
  119.     local pw = nKey
  120.     local comp = hash(p, key)
  121.     file.close()
  122.    
  123.     if pw ~= comp then
  124.       printError("Wrong password!")
  125.       os.reboot()
  126.     else
  127.       term.setTextColor(colors.green)
  128.       print("Succesfully logged in!")
  129.       term.setTextColor(colors.white)
  130.       os.sleep(2)
  131.       clear()
  132.       break
  133.     end
  134.   end
  135.  
  136.   return t
  137. end
  138.  
  139.  
  140. function register()
  141.   while true do
  142.     term.setTextColor(colors.orange)
  143.     print("Registering!")
  144.     term.setTextColor(colors.white)
  145.     term.write("Username: ")
  146.     local x = read()
  147.     local y = rKey()
  148.     term.write("Password: ")
  149.     local z = read('*')
  150.     local z = hash(z, y)
  151.     if store(x,y,z) then
  152.       term.setTextColor(colors.green)
  153.       print("Succesfully registered")
  154.       term.setTextColor(colors.white)
  155.       os.sleep(2)
  156.       clear()
  157.       break
  158.     end
  159.   end
  160.   login()
  161. end
  162.  
  163. function deleteUser()  
  164.   user = login()
  165.   term.setTextColor(colors.orange)
  166.   print("Deleting account")
  167.   term.setTextColor(colors.white)
  168.   print("Are you sure? [y/n]")
  169.   while true do
  170.     event, key = os.pullEvent("key")
  171.     if key == keys.y then
  172.       fs.delete(user)
  173.       term.setTextColor(colors.green)
  174.       print("Deleted user")
  175.       term.setTextColor(colors.white)
  176.       os.sleep(2)
  177.       clear()
  178.       break
  179.     elseif key == keys.n then
  180.       term.setTextColor(colors.green)
  181.       print("Cancelled deleting")
  182.       term.setTextColor(colors.white)
  183.       os.sleep(2)
  184.       clear()
  185.     end
  186.   end
  187.   selector()
  188. end
  189.  
  190. function selector()
  191.  
  192.   local selector = 1
  193.  
  194.   term.setTextColor(colors.blue)
  195.   print("[Login]")
  196.   term.setTextColor(colors.white)
  197.   print("Register")
  198.   print("Delete user")
  199.  
  200.   while true do
  201.    
  202.     local event, key = os.pullEvent("key")
  203.  
  204.     if key == keys.down and selector < 3 then
  205.       selector = selector + 1
  206.     elseif key == keys.up and selector > 1 then
  207.       selector = selector - 1
  208.     end
  209.  
  210.     if selector == 1 then
  211.       clear()
  212.       term.setTextColor(colors.blue)
  213.       print("[Login]")
  214.       term.setTextColor(colors.white)
  215.       print("Register")
  216.       print("Delete user")
  217.     elseif selector == 2 then
  218.       clear()
  219.       term.setTextColor(colors.white)
  220.       print("Login")
  221.       term.setTextColor(colors.blue)
  222.       print("[Register]")
  223.       term.setTextColor(colors.white)
  224.       print("Delete user")
  225.     elseif selector == 3 then
  226.       clear()
  227.       term.setTextColor(colors.white)
  228.       print("Login")
  229.       print("Register")
  230.       term.setTextColor(colors.blue)
  231.       print("[Delete user]")
  232.     end
  233.    
  234.     if key == keys.enter and selector == 1 then
  235.       clear()
  236.       login()
  237.       break
  238.     elseif key == keys.enter and selector == 2 then
  239.       clear()
  240.       register()
  241.       break
  242.     elseif key == keys.enter and selector == 3 then
  243.       clear()
  244.       deleteUser()
  245.       break
  246.     end
  247.   end
  248. end
  249.  
  250. selector()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement