-
Автор темы
- #1
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
hwid:
local ffi = require("ffi")
ffi.cdef[[
typedef struct {
unsigned char cpu[32];
unsigned char gpu[32];
unsigned char ram[32];
} HardwareInfo;
void get_hardware_info(HardwareInfo* info);
]]
local hardware = ffi.new("HardwareInfo")
-- Вместо вызова библиотеки, можно вставить ваш собственный код для получения аппаратной информации
-- Пример:
-- hardware.cpu = "CPU_IDENTIFIER"
-- hardware.gpu = "GPU_IDENTIFIER"
-- hardware.ram = "RAM_IDENTIFIER"
local sha2 = require("sha2")
local cpuHash = sha2.sha256(ffi.string(hardware.cpu))
local gpuHash = sha2.sha256(ffi.string(hardware.gpu))
local ramHash = sha2.sha256(ffi.string(hardware.ram))
local expectedCPUHash = "здесь вставьте ожидаемый хэш для CPU"
local expectedGPUHash = "здесь вставьте ожидаемый хэш для GPU"
local expectedRAMHash = "здесь вставьте ожидаемый хэш для RAM"
if cpuHash == expectedCPUHash and gpuHash == expectedGPUHash and ramHash == expectedRAMHash then
print("Аппаратная проверка прошла успешно. Вы можете продолжить выполнение скрипта.")
else
print("Аппаратная проверка не пройдена. Скрипт не может быть выполнен.")
end
libka:
-- sha2.lua
local bit = require("bit")
local sha256 = {}
local function ROTR(n, x)
return bit.bor(bit.rshift(x, n), bit.lshift(x, 32 - n))
end
local function Ch(x, y, z)
return bit.bxor(bit.band(x, y), bit.band(bit.bnot(x), z))
end
local function Maj(x, y, z)
return bit.bxor(bit.bxor(bit.band(x, y), bit.band(x, z)), bit.band(y, z))
end
local function Sigma0(x)
return bit.bxor(bit.bxor(ROTR(2, x), ROTR(13, x)), ROTR(22, x))
end
local function Sigma1(x)
return bit.bxor(bit.bxor(ROTR(6, x), ROTR(11, x)), ROTR(25, x))
end
local function sigma0(x)
return bit.bxor(bit.bxor(bit.rshift(x, 7), bit.rshift(x, 18)), bit.rshift(x, 3))
end
local function sigma1(x)
return bit.bxor(bit.bxor(bit.rshift(x, 17), bit.rshift(x, 19)), bit.rshift(x, 10))
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
}
function sha256.hash(msg)
local H = {
0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,
0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19
}
local function preprocess(msg)
local len = #msg
local extra = 64 - ((len + 9) % 64)
if extra == 64 then
extra = 0
end
msg = msg .. "\x80" .. ("\x00"):rep(extra) .. string.char(bit.rshift(len, 56) & 0xFF) .. string.char(bit.rshift(len, 48) & 0xFF) .. string.char(bit.rshift(len, 40) & 0xFF) .. string.char(bit.rshift(len, 32) & 0xFF) .. string.char(bit.rshift(len, 24) & 0xFF) .. string.char(bit.rshift(len, 16) & 0xFF) .. string.char(bit.rshift(len, 8) & 0xFF) .. string.char(len & 0xFF)
return msg
end
msg = preprocess(msg)
for i = 1, #msg, 64 do
local chunk = msg:sub(i, i + 63)
local w = {}
for j = 1, 16 do
local start = (j - 1) * 4 + 1
w[j] = bit.bor(bit.lshift(chunk:byte(start), 24), bit.bor(bit.lshift(chunk:byte(start + 1), 16), bit.bor(bit.lshift(chunk:byte(start + 2), 8), chunk:byte(start + 3))))
end
for j = 17, 64 do
w[j] = sigma1(w[j - 2]) + w[j - 7] + sigma0(w[j - 15]) + w[j - 16]
end
local a, b, c, d, e, f, g, h = table.unpack(H)
for j = 1, 64 do
local T1 = h + Sigma1(e) + Ch(e, f, g) + K[j] + w[j]
local T2 = Sigma0(a) + Maj(a, b, c)
h = g
g = f
f = e
e = d + T1
d = c
c = b
b = a
a = T1 + T2
end
H[1] = (H[1] + a) & 0xFFFFFFFF
H[2] = (H[2] + b) & 0xFFFFFFFF
H[3] = (H[3] + c) & 0xFFFFFFFF
H[4] = (H[4] + d) & 0xFFFFFFFF
H[5] = (H[5] + e) & 0xFFFFFFFF
H[6] = (H[6] + f) & 0xFFFFFFFF
H[7] = (H[7] + g) & 0xFFFFFFFF
H[8] = (H[8] + h) & 0xFFFFFFFF
end
local function tohex(num, len)
local hex = string.format("%x", num)
if len then
hex = string.rep("0", len - #hex) .. hex
end
return hex
end
local hash = ""
for i = 1, #H do
hash = hash .. tohex(H[i], 8)
end
return hash
end
return sha256
Последнее редактирование: