kizz12

startup

Apr 21st, 2015
848
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 11.88 KB | None | 0 0
  1. osEvent = os.pullEvent
  2. os.pullEvent = os.pullEventRaw
  3.  
  4.  
  5. --  
  6. --  Adaptation of the Secure Hashing Algorithm (SHA-244/256)
  7. --  Found Here: http://lua-users.org/wiki/SecureHashAlgorithm
  8. --  
  9. --  Using an adapted version of the bit library
  10. --  Found Here: https://bitbucket.org/Boolsheet/bslf/src/1ee664885805/bit.lua
  11. --  
  12.  
  13. local MOD = 2^32
  14. local MODM = MOD-1
  15.  
  16. local function memoize(f)
  17.         local mt = {}
  18.         local t = setmetatable({}, mt)
  19.         function mt:__index(k)
  20.                 local v = f(k)
  21.                 t[k] = v
  22.                 return v
  23.         end
  24.         return t
  25. end
  26.  
  27. local function make_bitop_uncached(t, m)
  28.         local function bitop(a, b)
  29.                 local res,p = 0,1
  30.                 while a ~= 0 and b ~= 0 do
  31.                         local am, bm = a % m, b % m
  32.                         res = res + t[am][bm] * p
  33.                         a = (a - am) / m
  34.                         b = (b - bm) / m
  35.                         p = p*m
  36.                 end
  37.                 res = res + (a + b) * p
  38.                 return res
  39.         end
  40.         return bitop
  41. end
  42.  
  43. local function make_bitop(t)
  44.         local op1 = make_bitop_uncached(t,2^1)
  45.         local op2 = memoize(function(a) return memoize(function(b) return op1(a, b) end) end)
  46.         return make_bitop_uncached(op2, 2 ^ (t.n or 1))
  47. end
  48.  
  49. local bxor1 = make_bitop({[0] = {[0] = 0,[1] = 1}, [1] = {[0] = 1, [1] = 0}, n = 4})
  50.  
  51. local function bxor(a, b, c, ...)
  52.         local z = nil
  53.         if b then
  54.                 a = a % MOD
  55.                 b = b % MOD
  56.                 z = bxor1(a, b)
  57.                 if c then z = bxor(z, c, ...) end
  58.                 return z
  59.         elseif a then return a % MOD
  60.         else return 0 end
  61. end
  62.  
  63. local function band(a, b, c, ...)
  64.         local z
  65.         if b then
  66.                 a = a % MOD
  67.                 b = b % MOD
  68.                 z = ((a + b) - bxor1(a,b)) / 2
  69.                 if c then z = bit32_band(z, c, ...) end
  70.                 return z
  71.         elseif a then return a % MOD
  72.         else return MODM end
  73. end
  74.  
  75. local function bnot(x) return (-1 - x) % MOD end
  76.  
  77. local function rshift1(a, disp)
  78.         if disp < 0 then return lshift(a,-disp) end
  79.         return math.floor(a % 2 ^ 32 / 2 ^ disp)
  80. end
  81.  
  82. local function rshift(x, disp)
  83.         if disp > 31 or disp < -31 then return 0 end
  84.         return rshift1(x % MOD, disp)
  85. end
  86.  
  87. local function lshift(a, disp)
  88.         if disp < 0 then return rshift(a,-disp) end
  89.         return (a * 2 ^ disp) % 2 ^ 32
  90. end
  91.  
  92. local function rrotate(x, disp)
  93.     x = x % MOD
  94.     disp = disp % 32
  95.     local low = band(x, 2 ^ disp - 1)
  96.     return rshift(x, disp) + lshift(low, 32 - disp)
  97. end
  98.  
  99. local k = {
  100.         0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,
  101.         0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
  102.         0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
  103.         0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
  104.         0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,
  105.         0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
  106.         0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,
  107.         0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
  108.         0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,
  109.         0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
  110.         0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,
  111.         0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
  112.         0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,
  113.         0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
  114.         0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,
  115.         0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2,
  116. }
  117.  
  118. local function str2hexa(s)
  119.         return (string.gsub(s, ".", function(c) return string.format("%02x", string.byte(c)) end))
  120. end
  121.  
  122. local function num2s(l, n)
  123.         local s = ""
  124.         for i = 1, n do
  125.                 local rem = l % 256
  126.                 s = string.char(rem) .. s
  127.                 l = (l - rem) / 256
  128.         end
  129.         return s
  130. end
  131.  
  132. local function s232num(s, i)
  133.         local n = 0
  134.         for i = i, i + 3 do n = n*256 + string.byte(s, i) end
  135.         return n
  136. end
  137.  
  138. local function preproc(msg, len)
  139.         local extra = 64 - ((len + 9) % 64)
  140.         len = num2s(8 * len, 8)
  141.         msg = msg .. "\128" .. string.rep("\0", extra) .. len
  142.         assert(#msg % 64 == 0)
  143.         return msg
  144. end
  145.  
  146. local function initH256(H)
  147.         H[1] = 0x6a09e667
  148.         H[2] = 0xbb67ae85
  149.         H[3] = 0x3c6ef372
  150.         H[4] = 0xa54ff53a
  151.         H[5] = 0x510e527f
  152.         H[6] = 0x9b05688c
  153.         H[7] = 0x1f83d9ab
  154.         H[8] = 0x5be0cd19
  155.         return H
  156. end
  157.  
  158. local function digestblock(msg, i, H)
  159.         local w = {}
  160.         for j = 1, 16 do w[j] = s232num(msg, i + (j - 1)*4) end
  161.         for j = 17, 64 do
  162.                 local v = w[j - 15]
  163.                 local s0 = bxor(rrotate(v, 7), rrotate(v, 18), rshift(v, 3))
  164.                 v = w[j - 2]
  165.                 w[j] = w[j - 16] + s0 + w[j - 7] + bxor(rrotate(v, 17), rrotate(v, 19), rshift(v, 10))
  166.         end
  167.  
  168.         local a, b, c, d, e, f, g, h = H[1], H[2], H[3], H[4], H[5], H[6], H[7], H[8]
  169.         for i = 1, 64 do
  170.                 local s0 = bxor(rrotate(a, 2), rrotate(a, 13), rrotate(a, 22))
  171.                 local maj = bxor(band(a, b), band(a, c), band(b, c))
  172.                 local t2 = s0 + maj
  173.                 local s1 = bxor(rrotate(e, 6), rrotate(e, 11), rrotate(e, 25))
  174.                 local ch = bxor (band(e, f), band(bnot(e), g))
  175.                 local t1 = h + s1 + ch + k[i] + w[i]
  176.                 h, g, f, e, d, c, b, a = g, f, e, d + t1, c, b, a, t1 + t2
  177.         end
  178.  
  179.         H[1] = band(H[1] + a)
  180.         H[2] = band(H[2] + b)
  181.         H[3] = band(H[3] + c)
  182.         H[4] = band(H[4] + d)
  183.         H[5] = band(H[5] + e)
  184.         H[6] = band(H[6] + f)
  185.         H[7] = band(H[7] + g)
  186.         H[8] = band(H[8] + h)
  187. end
  188.  
  189. local function sha256(msg)
  190.         msg = preproc(msg, #msg)
  191.         local H = initH256({})
  192.         for i = 1, #msg, 64 do digestblock(msg, i, H) end
  193.         return str2hexa(num2s(H[1], 4) .. num2s(H[2], 4) .. num2s(H[3], 4) .. num2s(H[4], 4) ..
  194.                 num2s(H[5], 4) .. num2s(H[6], 4) .. num2s(H[7], 4) .. num2s(H[8], 4))
  195. end
  196.  
  197.  
  198.  
  199.  
  200.     while access~=1 do
  201.     term.clear()
  202.     term.setCursorPos(1,1)
  203.     term.setTextColor(colors.orange)
  204.     print'KOS 1.6'
  205.     term.setTextColor(colors.white)
  206.     if not fs.exists("users") then
  207.         print'No users!'
  208.         print'Create default user now.'
  209.         user=3
  210.         shell.run("newuser")
  211.         return
  212.     end
  213.     print'Enter User:'
  214.     usern=read()
  215.    
  216.     print'Enter Password:'
  217.     pass=read("*")
  218.     local stringToHash = pass
  219.     passHash = sha256(stringToHash)
  220.     --print(passHash)
  221.     --sleep(100)
  222.     access=0
  223.         --sleep(1)
  224.         term.clear()
  225.         term.setCursorPos(1,1)
  226.        
  227.        
  228.     if usern==nil or usern=='' or usern=='.' or pass==nil or pass=='' or pass=='.' then
  229.     print'Invalid username or password!'
  230.     sleep(1)
  231.     os.reboot()
  232.     end
  233.        
  234.  
  235.     if fs.exists("users") then
  236.         local h = fs.open("users", "r")
  237.         getUsers=h.readAll()
  238.         h.close()
  239.         unSearch=string.find(getUsers,usern..":")
  240.         if unSearch==nil then
  241.             print'Could not find user!'
  242.             sleep(2)
  243.         end
  244.         if unSearch~=nil then
  245.             fullSearch=string.find(getUsers,usern..":"..passHash..":")
  246.             if fullSearch==nil then
  247.                 print'Password incorrect!'
  248.                 sleep(2)
  249.             end
  250.             if fullSearch~=nil then
  251.            
  252.             f1Search=string.find(getUsers,usern..":"..passHash..":0")
  253.             f2Search=string.find(getUsers,usern..":"..passHash..":1")
  254.             if f1Search==nil and f2Search==nil then
  255.             print'Failed to get auth!'
  256.             end
  257.             if f1Search~=nil and f2Search==nil then
  258.             access=1
  259.             shell.openTab("guest")
  260.             ---------------------------------------------------------
  261.             os.loadAPI("guiapi")
  262.             user=0
  263.             box = guiapi.createDialogueBox("Enable GUI?",{"Would you like","to enable GUI?"},"yn") --#Creates a dialogue box with the title "GUI API" ,two body lines: "This is a dialogue box!" and "Do you like it?" and the box type is "yn"
  264.             boxResult=box:draw( 20,5,5,colors.gray,colors.lightBlue,colors.white ) --#Makes a text box at (20,5) with a width of 5, a gray background color, white text color, and lightBlue title bar color.
  265.  
  266.             if boxResult==true then
  267.                 box:clear(colors.black)
  268.                 term.clear()
  269.                 term.setCursorPos(20,7)
  270.                 print'KOS Loading...'
  271.                 bar = guiapi.createBar( "KOS Loading" ) --#This creates a new bar with the name
  272.                 bar:draw( 10,9,30,colors.white,colors.green,true,colors.black,colors.white ) --#This draws the bar at (5,8) with a length of 30. The first color is the bar color, the second color is the progress color, the next argument is whether or not to display the percent, the third color is the text background color (for displaying the percent) and the fifth is the percent text color.
  273.                 percent=0
  274.                 while percent<100 do
  275.                     bar:update( percent ) --#Re-draws the bar with the new percent
  276.                     percent=percent+5
  277.                     sleep(.1)
  278.                 end
  279.                 shell.run("gui")
  280.             end
  281.             if boxResult==false then
  282.                 box:clear(colors.black)
  283.                 term.clear()
  284.                 term.setCursorPos(1,1)
  285.             end
  286.             -------------------------------------
  287.             print'KOS Loading...'
  288.             sleep(1)
  289.             term.clear()
  290.             term.setCursorPos(1,1)
  291.             term.setTextColor(colors.orange)           
  292.             print('Welcome, '..usern..', to Kizz OS!')
  293.             term.setTextColor(colors.blue)
  294.             print'Commands: '
  295.             term.setTextColor(colors.white)
  296.             print'logout - Logs user out. '
  297.             print'extend - Extends logout timer by x min.'
  298.             print'help - Shows more commands'
  299.    
  300.             end
  301.             if f1Search==nil and f2Search~=nil then
  302.             access=1
  303.             shell.openTab("master")
  304.             ---------------------------------------------------------
  305.             os.loadAPI("guiapi")
  306.             user=1
  307.             box = guiapi.createDialogueBox("Enable GUI?",{"Would you like","to enable GUI?"},"yn") --#Creates a dialogue box with the title "GUI API" ,two body lines: "This is a dialogue box!" and "Do you like it?" and the box type is "yn"
  308.             boxResult=box:draw( 20,5,5,colors.gray,colors.lightBlue,colors.white ) --#Makes a text box at (20,5) with a width of 5, a gray background color, white text color, and lightBlue title bar color.
  309.  
  310.             if boxResult==true then
  311.                 box:clear(colors.black)
  312.                 term.clear()
  313.                 term.setCursorPos(20,7)
  314.                 print'KOS Loading...'
  315.                 bar = guiapi.createBar( "KOS Loading" ) --#This creates a new bar with the name
  316.                 bar:draw( 10,9,30,colors.white,colors.green,true,colors.black,colors.white ) --#This draws the bar at (5,8) with a length of 30. The first color is the bar color, the second color is the progress color, the next argument is whether or not to display the percent, the third color is the text background color (for displaying the percent) and the fifth is the percent text color.
  317.                 percent=0
  318.                 while percent<100 do
  319.                     bar:update( percent ) --#Re-draws the bar with the new percent
  320.                     percent=percent+5
  321.                     sleep(.1)
  322.                 end
  323.                 shell.run("gui")
  324.             end
  325.             if boxResult==false then
  326.                 box:clear(colors.black)
  327.                 term.clear()
  328.                 term.setCursorPos(1,1)
  329.             end
  330.             -------------------------------------
  331.             if boxResult==false then
  332.             print'KOS Loading...'
  333.             end
  334.             sleep(1)
  335.             term.clear()
  336.             term.setCursorPos(1,1)
  337.             term.setTextColor(colors.orange)       
  338.             print('Welcome, '..usern..', to Kizz OS!')
  339.             term.setTextColor(colors.blue)
  340.             print'Commands: '
  341.             term.setTextColor(colors.white)
  342.             print'logout - Logs user out. '
  343.             print'extend - Extends logout timer by x min.'
  344.             print'help - Shows more commands'
  345.            
  346.             end
  347.             end
  348.         end
  349.     end
  350. end
  351.  
  352.    
  353.    
  354.    
  355.    
  356.    
  357.     function logme()
  358.         userName=usern
  359.        
  360.        
  361.         if not fs.exists("log") then
  362.         local h = fs.open("log", "a")
  363.         h.write(" ")
  364.         h.close()
  365.         end
  366.        
  367.         if fs.exists("log") then
  368.             local h = fs.open("log", "r")
  369.             loglen=h.readAll()
  370.             --print(loglen)
  371.             if string.len(loglen)>1000000 then
  372.             h.close()
  373.             fs.delete("log")
  374.             end
  375.             h.close()
  376.             local h = fs.open("log", "a")
  377.             h.write(userName.." - Day: "..os.day().." | Time: "..os.time()..". \n")
  378.             h.close()
  379.         end
  380.    
  381.    
  382.     end
  383.    
  384.    
  385.     logme()
  386. --os.pullEvent=osEvent
Advertisement
Add Comment
Please, Sign In to add comment