1. Welcome to our bug report and feature request forum.
    • For game exploits, post in the Private Issues forum. Please provide details in your message.
    • For all other suggestions and reports:
      • Apply the appropriate prefix to your post
      • Please include every detail (such as how a mechanic works or how to reproduce a bug)
      • Remember that new features need to be balanced and fair.

Make a few blocks able to be used in a protection

Discussion in 'Suggest + Report Bugs + Get Help' started by gknova61, Sep 15, 2013.

  1. gknova61

    gknova61 Farbes Lover

    Joined:
    Mar 17, 2012
    Messages:
    1,238
    Likes Received:
    350
    I'm baaaaaaacckkk! Can you guys add a few blocks that can be interacted (right-clicked) with in a chunk protection? These would be:
    1. Immibis' Mag-stripe reader/writer
    2. Computers
    3. Monitors so people can touch them
    4. Perhaps disk drives? It can be worked around thou since disk drives have pipe interaction now
     
  2. Pathaleon

    Pathaleon Forum & Server Administrator
    Staff Member

    Joined:
    Jul 3, 2012
    Messages:
    1,014
    Likes Received:
    670
    Me personally I would rather that others are not poking around on my code. Especially is the code is for a door locking system in which the random can add their name to the authorised list.
     
  3. NolanSyKinsley

    NolanSyKinsley IRC lurker

    Joined:
    Nov 2, 2012
    Messages:
    497
    Likes Received:
    179
    Isn't there a [public] sign like the [lock] sign that you can make the attached block usable?
     
  4. gknova61

    gknova61 Farbes Lover

    Joined:
    Mar 17, 2012
    Messages:
    1,238
    Likes Received:
    350
    Code it right and you'll have no problems with CTRL+T aka people accessing your code. Google pcall, os.pullEventRaw and a while loop, dude. The only way to get to root is if you place and access a disk drive or of course you return in your program.

    I challenge anyone to get "ACCESS GRANTED" and/or to root on this program without disk drives or reading/modifying the program
    Code:
    function run()
    -- 
    --  Adaptation of the Secure Hashing Algorithm (SHA-244/256)
    --  Found Here: http://lua-users.org/wiki/SecureHashAlgorithm
    -- 
    --  Using an adapted version of the bit library
    --  Found Here: https://bitbucket.org/Boolsheet/bslf/src/1ee664885805/bit.lua
    -- 
     
    local MOD = 2^32
    local MODM = MOD-1
     
    local function memoize(f)
    local mt = {}
    local t = setmetatable({}, mt)
    function mt:__index(k)
    local v = f(k)
    t[k] = v
    return v
    end
    return t
    end
     
    local function make_bitop_uncached(t, m)
    local function bitop(a, b)
    local res,p = 0,1
    while a ~= 0 and b ~= 0 do
    local am, bm = a % m, b % m
    res = res + t[am][bm] * p
    a = (a - am) / m
    b = (b - bm) / m
    p = p*m
    end
    res = res + (a + b) * p
    return res
    end
    return bitop
    end
     
    local function make_bitop(t)
    local op1 = make_bitop_uncached(t,2^1)
    local op2 = memoize(function(a) return memoize(function(b) return op1(a, b) end) end)
    return make_bitop_uncached(op2, 2 ^ (t.n or 1))
    end
     
    local bxor1 = make_bitop({[0] = {[0] = 0,[1] = 1}, [1] = {[0] = 1, [1] = 0}, n = 4})
     
    local function bxor(a, b, c, ...)
    local z = nil
    if b then
    a = a % MOD
    b = b % MOD
    z = bxor1(a, b)
    if c then z = bxor(z, c, ...) end
    return z
    elseif a then return a % MOD
    else return 0 end
    end
     
    local function band(a, b, c, ...)
    local z
    if b then
    a = a % MOD
    b = b % MOD
    z = ((a + b) - bxor1(a,b)) / 2
    if c then z = bit32_band(z, c, ...) end
    return z
    elseif a then return a % MOD
    else return MODM end
    end
     
    local function bnot(x) return (-1 - x) % MOD end
     
    local function rshift1(a, disp)
    if disp < 0 then return lshift(a,-disp) end
    return math.floor(a % 2 ^ 32 / 2 ^ disp)
    end
     
    local function rshift(x, disp)
    if disp > 31 or disp < -31 then return 0 end
    return rshift1(x % MOD, disp)
    end
     
    local function lshift(a, disp)
    if disp < 0 then return rshift(a,-disp) end
    return (a * 2 ^ disp) % 2 ^ 32
    end
     
    local function rrotate(x, disp)
    x = x % MOD
    disp = disp % 32
    local low = band(x, 2 ^ disp - 1)
    return rshift(x, disp) + lshift(low, 32 - disp)
    end
     
    local k = {
    0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,
    0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
    0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
    0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
    0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,
    0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
    0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,
    0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
    0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,
    0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
    0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,
    0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
    0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,
    0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
    0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,
    0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2,
    }
     
    local function str2hexa(s)
    return (string.gsub(s, ".", function(c) return string.format("%02x", string.byte(c)) end))
    end
     
    local function num2s(l, n)
    local s = ""
    for i = 1, n do
    local rem = l % 256
    s = string.char(rem) .. s
    l = (l - rem) / 256
    end
    return s
    end
     
    local function s232num(s, i)
    local n = 0
    for i = i, i + 3 do n = n*256 + string.byte(s, i) end
    return n
    end
     
    local function preproc(msg, len)
    local extra = 64 - ((len + 9) % 64)
    len = num2s(8 * len, 8)
    msg = msg .. "\128" .. string.rep("\0", extra) .. len
    assert(#msg % 64 == 0)
    return msg
    end
     
    local function initH256(H)
    H[1] = 0x6a09e667
    H[2] = 0xbb67ae85
    H[3] = 0x3c6ef372
    H[4] = 0xa54ff53a
    H[5] = 0x510e527f
    H[6] = 0x9b05688c
    H[7] = 0x1f83d9ab
    H[8] = 0x5be0cd19
    return H
    end
     
    local function digestblock(msg, i, H)
    local w = {}
    for j = 1, 16 do w[j] = s232num(msg, i + (j - 1)*4) end
    for j = 17, 64 do
    local v = w[j - 15]
    local s0 = bxor(rrotate(v, 7), rrotate(v, 18), rshift(v, 3))
    v = w[j - 2]
    w[j] = w[j - 16] + s0 + w[j - 7] + bxor(rrotate(v, 17), rrotate(v, 19), rshift(v, 10))
    end
     
    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]
    for i = 1, 64 do
    local s0 = bxor(rrotate(a, 2), rrotate(a, 13), rrotate(a, 22))
    local maj = bxor(band(a, b), band(a, c), band(b, c))
    local t2 = s0 + maj
    local s1 = bxor(rrotate(e, 6), rrotate(e, 11), rrotate(e, 25))
    local ch = bxor (band(e, f), band(bnot(e), g))
    local t1 = h + s1 + ch + k[i] + w[i]
    h, g, f, e, d, c, b, a = g, f, e, d + t1, c, b, a, t1 + t2
    end
     
    H[1] = band(H[1] + a)
    H[2] = band(H[2] + b)
    H[3] = band(H[3] + c)
    H[4] = band(H[4] + d)
    H[5] = band(H[5] + e)
    H[6] = band(H[6] + f)
    H[7] = band(H[7] + g)
    H[8] = band(H[8] + h)
    end
     
    function sha256(msg)
    msg = preproc(msg, #msg)
    local H = initH256({})
    for i = 1, #msg, 64 do digestblock(msg, i, H) end
    return str2hexa(num2s(H[1], 4) .. num2s(H[2], 4) .. num2s(H[3], 4) .. num2s(H[4], 4) ..
    num2s(H[5], 4) .. num2s(H[6], 4) .. num2s(H[7], 4) .. num2s(H[8], 4))
    end
    while true do
    term.clear()
    term.setCursorPos(1,1)
    print("Pathy's Term Lock")
    print()
    print("Access code required: ")
    local input = sha256(read("*"))
    if input == "04ead045b10c1a7f4a3afb07f8f19339ac98ad1bf2aa09d08df8385c4cd62498" then print("ACCESS GRANTED") break
    else
    error = true
    end
    end
    return
    end
    while true do
    local ok, val = pcall(run)
     
    if ok then
    return
    end
     
    if not ok or error then
    print()
    print("Hah, nice try")
    print()
    sleep(2)
    end
    end
    
    I don't believe so... could you check for me since I'm not on my regular computer right now and can't access my normal account?

    Sidenote: Edited OP. We need monitors as well because I forgot about touchscreens.
     
  5. hsun324

    hsun324 Programmer, Gamer

    Joined:
    May 14, 2012
    Messages:
    362
    Likes Received:
    90
    Not to rain on this party but the SHA256 hash of the password is 04ead045b10c1a7f4a3afb07f8f19339ac98ad1bf2aa09d08df8385c4cd62498.

    [​IMG]
    Next to that computer is a ME Bridge and Terminal Glasses Bridge, FYI.
     
    Fluttermine likes this.
  6. gknova61

    gknova61 Farbes Lover

    Joined:
    Mar 17, 2012
    Messages:
    1,238
    Likes Received:
    350
    I thought it was obvious that you weren't suppose to know the password but nice job anyways :p
    My point is that noo one will get into the computer without knowing the password.

    Btw, how the **** did you reverse the hash?
     
  7. hsun324

    hsun324 Programmer, Gamer

    Joined:
    May 14, 2012
    Messages:
    362
    Likes Received:
    90
    Yea. The way I got the password would be moot if you had no access to the code. (PSST: The comment at the top made it very easy.)

    EDIT: Rainbow Table
     
  8. gknova61

    gknova61 Farbes Lover

    Joined:
    Mar 17, 2012
    Messages:
    1,238
    Likes Received:
    350
    How the **** did you reverse it thou? I thought it was infeasible to try and reverse :p

    Also, would you be willing to test vulnerabilities in my upcoming programs? I can't find mk352 anywhere (made the first CC virus to actually crash a server), and I'd pay you real $$
     
  9. sk89q

    sk89q Administrator
    Staff Member

    Joined:
    Dec 1, 2011
    Messages:
    2,490
    Likes Received:
    1,504
    Most people are not going to know to protect their computers, so that's probably not the best idea, but there could be a [Public].

    Give me the IDs for the other things.
     
  10. gknova61

    gknova61 Farbes Lover

    Joined:
    Mar 17, 2012
    Messages:
    1,238
    Likes Received:
    350
    [Public] would be amazing! I'm not at my computer atm, sorry. Can someone give this kind, sexy gentleman the IDs for the following?
    1. mag-reader
    2. monitor
    3. disk drive
     
  11. hsun324

    hsun324 Programmer, Gamer

    Joined:
    May 14, 2012
    Messages:
    362
    Likes Received:
    90
    Rainbow tables are really easy to use. I don't need $$$$. Just ask me and I can try to do it in my free time.
     
  12. gknova61

    gknova61 Farbes Lover

    Joined:
    Mar 17, 2012
    Messages:
    1,238
    Likes Received:
    350
    Oh, I see your edit :p
    Oh wellz, I guess I need to beef this up a bit. I'll be contacting you soon... no expense is to be spared in my upcoming project.