Advertisement
minimite

kristvaultautoinstaller

Mar 14th, 2015
231
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 7.88 KB | None | 0 0
  1. local MOD = 2^32
  2. local MODM = MOD-1
  3.  
  4. local function memoize(f)
  5.     local mt = {}
  6.     local t = setmetatable({}, mt)
  7.     function mt:__index(k)
  8.         local v = f(k)
  9.         t[k] = v
  10.         return v
  11.     end
  12.     return t
  13. end
  14.  
  15. local function make_bitop_uncached(t, m)
  16.     local function bitop(a, b)
  17.         local res,p = 0,1
  18.         while a ~= 0 and b ~= 0 do
  19.             local am, bm = a % m, b % m
  20.             res = res + t[am][bm] * p
  21.             a = (a - am) / m
  22.             b = (b - bm) / m
  23.             p = p*m
  24.         end
  25.         res = res + (a + b) * p
  26.         return res
  27.     end
  28.     return bitop
  29. end
  30.  
  31. local function make_bitop(t)
  32.     local op1 = make_bitop_uncached(t,2^1)
  33.     local op2 = memoize(function(a) return memoize(function(b) return op1(a, b) end) end)
  34.     return make_bitop_uncached(op2, 2 ^ (t.n or 1))
  35. end
  36.  
  37. local bxor1 = make_bitop({[0] = {[0] = 0,[1] = 1}, [1] = {[0] = 1, [1] = 0}, n = 4})
  38.  
  39. local function bxor(a, b, c, ...)
  40.     local z = nil
  41.     if b then
  42.         a = a % MOD
  43.         b = b % MOD
  44.         z = bxor1(a, b)
  45.         if c then z = bxor(z, c, ...) end
  46.         return z
  47.     elseif a then return a % MOD
  48.     else return 0 end
  49. end
  50.  
  51. local function band(a, b, c, ...)
  52.     local z
  53.     if b then
  54.         a = a % MOD
  55.         b = b % MOD
  56.         z = ((a + b) - bxor1(a,b)) / 2
  57.         if c then z = bit32_band(z, c, ...) end
  58.         return z
  59.     elseif a then return a % MOD
  60.     else return MODM end
  61. end
  62.  
  63. local function bnot(x) return (-1 - x) % MOD end
  64.  
  65. local function rshift1(a, disp)
  66.     if disp < 0 then return lshift(a,-disp) end
  67.     return math.floor(a % 2 ^ 32 / 2 ^ disp)
  68. end
  69.  
  70. local function rshift(x, disp)
  71.     if disp > 31 or disp < -31 then return 0 end
  72.     return rshift1(x % MOD, disp)
  73. end
  74.  
  75. local function lshift(a, disp)
  76.     if disp < 0 then return rshift(a,-disp) end
  77.     return (a * 2 ^ disp) % 2 ^ 32
  78. end
  79.  
  80. local function rrotate(x, disp)
  81.     x = x % MOD
  82.     disp = disp % 32
  83.     local low = band(x, 2 ^ disp - 1)
  84.     return rshift(x, disp) + lshift(low, 32 - disp)
  85. end
  86.  
  87. local k = {
  88.     0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,
  89.     0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
  90.     0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
  91.     0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
  92.     0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,
  93.     0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
  94.     0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,
  95.     0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
  96.     0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,
  97.     0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
  98.     0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,
  99.     0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
  100.     0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,
  101.     0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
  102.     0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,
  103.     0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2,
  104. }
  105.  
  106. local function str2hexa(s)
  107.     return (string.gsub(s, ".", function(c) return string.format("%02x", string.byte(c)) end))
  108. end
  109.  
  110. local function num2s(l, n)
  111.     local s = ""
  112.     for i = 1, n do
  113.         local rem = l % 256
  114.         s = string.char(rem) .. s
  115.         l = (l - rem) / 256
  116.     end
  117.     return s
  118. end
  119.  
  120. local function s232num(s, i)
  121.     local n = 0
  122.     for i = i, i + 3 do n = n*256 + string.byte(s, i) end
  123.     return n
  124. end
  125.  
  126. local function preproc(msg, len)
  127.     local extra = 64 - ((len + 9) % 64)
  128.     len = num2s(8 * len, 8)
  129.     msg = msg .. "\128" .. string.rep("\0", extra) .. len
  130.     assert(#msg % 64 == 0)
  131.     return msg
  132. end
  133.  
  134. local function initH256(H)
  135.     H[1] = 0x6a09e667
  136.     H[2] = 0xbb67ae85
  137.     H[3] = 0x3c6ef372
  138.     H[4] = 0xa54ff53a
  139.     H[5] = 0x510e527f
  140.     H[6] = 0x9b05688c
  141.     H[7] = 0x1f83d9ab
  142.     H[8] = 0x5be0cd19
  143.     return H
  144. end
  145.  
  146. local function digestblock(msg, i, H)
  147.     local w = {}
  148.     for j = 1, 16 do w[j] = s232num(msg, i + (j - 1)*4) end
  149.     for j = 17, 64 do
  150.         local v = w[j - 15]
  151.         local s0 = bxor(rrotate(v, 7), rrotate(v, 18), rshift(v, 3))
  152.         v = w[j - 2]
  153.         w[j] = w[j - 16] + s0 + w[j - 7] + bxor(rrotate(v, 17), rrotate(v, 19), rshift(v, 10))
  154.     end
  155.  
  156.     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]
  157.     for i = 1, 64 do
  158.         local s0 = bxor(rrotate(a, 2), rrotate(a, 13), rrotate(a, 22))
  159.         local maj = bxor(band(a, b), band(a, c), band(b, c))
  160.         local t2 = s0 + maj
  161.         local s1 = bxor(rrotate(e, 6), rrotate(e, 11), rrotate(e, 25))
  162.         local ch = bxor (band(e, f), band(bnot(e), g))
  163.         local t1 = h + s1 + ch + k[i] + w[i]
  164.         h, g, f, e, d, c, b, a = g, f, e, d + t1, c, b, a, t1 + t2
  165.     end
  166.  
  167.     H[1] = band(H[1] + a)
  168.     H[2] = band(H[2] + b)
  169.     H[3] = band(H[3] + c)
  170.     H[4] = band(H[4] + d)
  171.     H[5] = band(H[5] + e)
  172.     H[6] = band(H[6] + f)
  173.     H[7] = band(H[7] + g)
  174.     H[8] = band(H[8] + h)
  175. end
  176.  
  177. local function sha256(msg)
  178.     msg = preproc(msg, #msg)
  179.     local H = initH256({})
  180.     for i = 1, #msg, 64 do digestblock(msg, i, H) end
  181.     return str2hexa(num2s(H[1], 4) .. num2s(H[2], 4) .. num2s(H[3], 4) .. num2s(H[4], 4) ..
  182.         num2s(H[5], 4) .. num2s(H[6], 4) .. num2s(H[7], 4) .. num2s(H[8], 4))
  183. end
  184. function checkfile(path,default)
  185.   if not fs.exists("kst/"..path) then
  186.     file = fs.open("kst/"..path,"w")
  187.     file.writeLine(default)
  188.     file.close()
  189.     return false
  190.   else
  191.     return true
  192.   end
  193. end
  194. function checkdir()
  195.   if fs.isDir("kst") then
  196.     math.randomseed(os.time())
  197.     checkfile("log","KristWallet log file")
  198.     checkfile("enabled","true")
  199.     checkfile("sweepv1","true")
  200.     checkfile("appendhashes","true")
  201.     checkfile("autoupdate","true")
  202.     checkfile("whitelisted","false")
  203.     checkfile("rebootonexit","false")
  204.     checkfile("locksettings","false")
  205.     checkfile("usev1address","false")
  206.     checkfile("autologin","false")
  207.     checkfile("language","en")
  208.     --Language system is incomplete, so some of these aren't referenced yet
  209.     checkfile("lang/en/kristwallet","KristWallet")
  210.     checkfile("lang/en/release","release")
  211.     checkfile("lang/en/password","Password")
  212.     checkfile("lang/en/overview","  Overview  ")
  213.     checkfile("lang/en/transactions","Transactions")
  214.     checkfile("lang/en/send_krist"," Send Krist ")
  215.     checkfile("lang/en/special_tx"," Special TX ")
  216.     checkfile("lang/en/economicon"," Economicon ")
  217.     checkfile("lang/en/localsetting","LocalSetting")
  218.     checkfile("lang/en/ls_is_locked","LS is locked")
  219.     checkfile("lang/en/exit","    Exit    ")
  220.     checkfile("lang/en/logout","   Logout   ")
  221.     checkfile("lang/en/by","by")
  222.     checkfile("lang/en/sent","Sent")
  223.     checkfile("lang/en/received","Received")
  224.     checkfile("lang/en/mined","Mined")
  225.     checkfile("lang/en/your_address","Your address")
  226.     checkfile("lang/en/your_balance","Your balance")
  227.     checkfile("lang/en/context_pw_1","Please enter your secret password to")
  228.     checkfile("lang/en/context_pw_2","use Krist. If this is your first time")
  229.     checkfile("lang/en/context_pw_3","using Krist, type your desired password.")
  230.     checkfile("lang/en/context_pw_4","You will be able to access your Krist")
  231.     checkfile("lang/en/context_pw_5","on any computer on any server as long")
  232.     checkfile("lang/en/context_pw_6","as you type in the same password! It will")
  233.     checkfile("lang/en/context_pw_7","not be saved or shared with anyone.")
  234.     checkfile("lang/en/context_wl_1","Sorry, this wallet is not on the whitelist for this computer!")
  235.     checkfile("lang/en/context_wl_2","Your wallet is blocked from this computer!")
  236.     checkfile("lang/en/passwordchar","*")
  237.     checkfile("keyAL",sha256(""))
  238.     checkfile("keyLV",sha256(math.random(10)..os.time()))
  239.     checkfile("versionserver","https://raw.githubusercontent.com/BTCTaras/kristwallet/master/staticapi/version")
  240.     checkfile("updateserver","https://raw.githubusercontent.com/BTCTaras/kristwallet/master/kristwallet")
  241.     checkfile("syncnode","http://65.26.252.225/quest/dia/krist/index.php")
  242.     checkfile("whitelist",[[kg5dc1lzo0
  243. a5dfb396d3]])
  244.     checkfile("blacklist",[[krqtnrp18z #Blank string (prevent accidents)
  245. ke3kjplzsz #Same as above
  246. kojddz0uzw #RV main
  247. 8c11bb0d2d #Ransom virus
  248. ]])
  249.   else
  250.     fs.makeDir("kst")
  251.   end
  252. end
  253. fs.makeDir("kst")
  254. checkdir()
  255. local open = fs.open("kristvault", "w")
  256. open.write(http.get("https://raw.githubusercontent.com/cpixelcube/kristvault/master/main").readAll())
  257. open.close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement