- Версия MoonLoader
- .027.0-preview
Решил сделать авто-логин с GAuth, но столкнулся с проблемой... генерирует НЕ верные коды, секретку проверил раза 4 уже, всё верно. Код ниже не работает
Может важно, у меня часовой пояс +1 к МСК
Lua:
local sha1 = require "sha1"
local basexx = require "basexx"
local band = bit.band
----------------------------
--- Секретный ключ Google Authenticator
secret = ''
--- ID диалога с авторизацией GAuth
ad = 389
----------------------------
function genCode(skey)
skey = basexx.from_base32(skey)
value = math.floor(os.time() / 30)
value = string.char(
0, 0, 0, 0,
band(value, 0xFF000000) / 0x1000000,
band(value, 0xFF0000) / 0x10000,
band(value, 0xFF00) / 0x100,
band(value, 0xFF))
local hash = sha1.hmac_binary(skey, value)
local offset = band(hash:sub(-1):byte(1, 1), 0xF)
local function bytesToInt(a,b,c,d)
return a*0x1000000 + b*0x10000 + c*0x100 + d
end
hash = bytesToInt(hash:byte(offset + 1, offset + 4))
hash = band(hash, 0x7FFFFFFF) % 1000000
return ("%06d"):format(hash)
end
function main()
if not isSampfuncsLoaded() or not isSampLoaded() then return end
while not isSampAvailable() do wait(100) end
while true do
wait(0)
if sampIsDialogActive() then
did = sampGetCurrentDialogId()
wait(0)
if did == ad then
if secret ~= '' then
code = genCode(secret)
sampAddChatMessage("{808080}[GAuth] {FFFFFF}Входим в игру с кодом "..code, 0xC1C1C1)
sampSendDialogResponse(ad, 1, 0, code)
sampCloseCurrentDialogWithButton(1)
else
sampAddChatMessage("{808080}[GAuth] {FFFFFF}Не найден секретный ключ.", 0xC1C1C1)
return
end
end
end
end
end