GG脚本云验证对接模板

ZZRc4 = {}
ZZMathBit = {}
function ZZMathBit.__xorBit(left, right) return (left + right) == 1 and 1 or 0 end function ZZMathBit.__base(left, right, op) if left < right then left, right = right, left end local res = 0 local shift = 1 while left ~= 0 do local ra = left % 2 local rb = right % 2 res = shift * op(ra,rb) + res shift = shift * 2 left = math.modf( left / 2) right = math.modf( right / 2) end return res end function ZZMathBit.xorOp(left, right) return ZZMathBit.__base(left, right, ZZMathBit.__xorBit) end 
function RC4(key,text,kasi)if kasi==false then str = text str=str:gsub("[%s%p]",""):upper() local index=1 local ret="" for index=1,str:len(),2 do ret=ret..string.char(tonumber(str:sub(index,index+1),16)) end text=ret end local function KSA(key) local keyLen = string.len(key) local schedule = {} local keyByte = {} for i = 0, 255 do schedule[i] = i end for i = 1, keyLen do keyByte[i - 1] = string.byte(key, i, i) end local j = 0 for i = 0, 255 do j = (j + schedule[i] + keyByte[ i % keyLen]) % 256 schedule[i], schedule[j] = schedule[j], schedule[i] end return schedule end local function PRGA(schedule, textLen) local i = 0 local j = 0 local k = {} for n = 1, textLen do i = (i + 1) % 256 j = (j + schedule[i]) % 256 schedule[i], schedule[j] = schedule[j], schedule[i] k[n] = schedule[(schedule[i] + schedule[j]) % 256] end return k end local function output(schedule, text) local len = string.len(text) local c = nil local res = {} for i = 1, len do c = string.byte(text, i,i) res[i] = string.char(ZZMathBit.xorOp(schedule[i], c)) end return table.concat(res) end local textLen = string.len(text) local schedule = KSA(key) local k = PRGA(schedule, textLen) str=output(k, text) if kasi==true then str = tostring(str) local index=1 local ret="" for index=1,str:len() do ret=ret..string.format("%02X",str:sub(index):byte()) end return string.lower(ret) else return str end end
--RC4-2加密和解密配置     RC4("加密内容","密码",false=解密_true=加密)

function md5(code) local code = tostring(code) local HexTable = {"0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"} local A = 0x67452301 local B = 0xefcdab89 local C = 0x98badcfe local D = 0x10325476 local S11 = 7 local S12 = 12 local S13 = 17 local S14 = 22 local S21 = 5 local S22 = 9 local S23 = 14 local S24 = 20 local S31 = 4 local S32 = 11 local S33 = 16 local S34 = 23 local S41 = 6 local S42 = 10 local S43 = 15 local S44 = 21 local function F(x,y,z) return (x & y) | ((~x) & z) end local function G(x,y,z) return (x & z) | (y & (~z)) end local function H(x,y,z) return x ~ y ~ z end local function I(x,y,z) return y ~ (x | (~z)) end local function FF(a,b,c,d,x,s,ac) a = a + F(b,c,d) + x + ac a = (((a & 0xffffffff) << s) | ((a & 0xffffffff) >> 32 - s)) + b return a & 0xffffffff end local function GG(a,b,c,d,x,s,ac) a = a + G(b,c,d) + x + ac a = (((a & 0xffffffff) << s) | ((a & 0xffffffff) >> 32 - s)) + b return a & 0xffffffff end local function HH(a,b,c,d,x,s,ac) a = a + H(b,c,d) + x + ac a = (((a & 0xffffffff) << s) | ((a & 0xffffffff) >> 32 - s)) + b return a & 0xffffffff end local function II(a,b,c,d,x,s,ac) a = a + I(b,c,d) + x + ac a = (((a & 0xffffffff) << s) | ((a & 0xffffffff) >> 32 - s)) + b return a & 0xffffffff end local function MD5StringFill(s) local len = s:len() local mod512 = len * 8 % 512 local fillSize = (448 - mod512) // 8 if mod512 > 448 then fillSize = (960 - mod512) // 8 end local rTab = {} local byteIndex = 1 for i = 1,len do local index = (i - 1) // 4 + 1 rTab[index] = rTab[index] or 0 rTab[index] = rTab[index] | (s:byte(i) << (byteIndex - 1) * 8) byteIndex = byteIndex + 1 if byteIndex == 5 then byteIndex = 1 end end local b0x80 = false local tLen = #rTab if byteIndex ~= 1 then rTab[tLen] = rTab[tLen] | 0x80 << (byteIndex - 1) * 8 b0x80 = true end for i = 1,fillSize // 4 do if not b0x80 and i == 1 then rTab[tLen + i] = 0x80 else rTab[tLen + i] = 0x0 end end local bitLen = math.floor(len * 8) tLen = #rTab rTab[tLen + 1] = bitLen & 0xffffffff rTab[tLen + 2] = bitLen >> 32 return rTab end function getmd5(s) local fillTab = MD5StringFill(s) local result = {A,B,C,D} for i = 1,#fillTab // 16 do local a = result[1] local b = result[2] local c = result[3] local d = result[4] local offset = (i - 1) * 16 + 1 a = FF(a, b, c, d, fillTab[offset + 0], S11, 0xd76aa478) d = FF(d, a, b, c, fillTab[offset + 1], S12, 0xe8c7b756) c = FF(c, d, a, b, fillTab[offset + 2], S13, 0x242070db) b = FF(b, c, d, a, fillTab[offset + 3], S14, 0xc1bdceee) a = FF(a, b, c, d, fillTab[offset + 4], S11, 0xf57c0faf) d = FF(d, a, b, c, fillTab[offset + 5], S12, 0x4787c62a) c = FF(c, d, a, b, fillTab[offset + 6], S13, 0xa8304613) b = FF(b, c, d, a, fillTab[offset + 7], S14, 0xfd469501) a = FF(a, b, c, d, fillTab[offset + 8], S11, 0x698098d8) d = FF(d, a, b, c, fillTab[offset + 9], S12, 0x8b44f7af) c = FF(c, d, a, b, fillTab[offset + 10], S13, 0xffff5bb1) b = FF(b, c, d, a, fillTab[offset + 11], S14, 0x895cd7be) a = FF(a, b, c, d, fillTab[offset + 12], S11, 0x6b901122) d = FF(d, a, b, c, fillTab[offset + 13], S12, 0xfd987193) c = FF(c, d, a, b, fillTab[offset + 14], S13, 0xa679438e) b = FF(b, c, d, a, fillTab[offset + 15], S14, 0x49b40821) a = GG(a, b, c, d, fillTab[offset + 1], S21, 0xf61e2562) d = GG(d, a, b, c, fillTab[offset + 6], S22, 0xc040b340) c = GG(c, d, a, b, fillTab[offset + 11], S23, 0x265e5a51) b = GG(b, c, d, a, fillTab[offset + 0], S24, 0xe9b6c7aa) a = GG(a, b, c, d, fillTab[offset + 5], S21, 0xd62f105d) d = GG(d, a, b, c, fillTab[offset + 10], S22, 0x2441453) c = GG(c, d, a, b, fillTab[offset + 15], S23, 0xd8a1e681) b = GG(b, c, d, a, fillTab[offset + 4], S24, 0xe7d3fbc8) a = GG(a, b, c, d, fillTab[offset + 9], S21, 0x21e1cde6) d = GG(d, a, b, c, fillTab[offset + 14], S22, 0xc33707d6) c = GG(c, d, a, b, fillTab[offset + 3], S23, 0xf4d50d87) b = GG(b, c, d, a, fillTab[offset + 8], S24, 0x455a14ed) a = GG(a, b, c, d, fillTab[offset + 13], S21, 0xa9e3e905) d = GG(d, a, b, c, fillTab[offset + 2], S22, 0xfcefa3f8) c = GG(c, d, a, b, fillTab[offset + 7], S23, 0x676f02d9) b = GG(b, c, d, a, fillTab[offset + 12], S24, 0x8d2a4c8a) a = HH(a, b, c, d, fillTab[offset + 5], S31, 0xfffa3942) d = HH(d, a, b, c, fillTab[offset + 8], S32, 0x8771f681) c = HH(c, d, a, b, fillTab[offset + 11], S33, 0x6d9d6122) b = HH(b, c, d, a, fillTab[offset + 14], S34, 0xfde5380c) a = HH(a, b, c, d, fillTab[offset + 1], S31, 0xa4beea44) d = HH(d, a, b, c, fillTab[offset + 4], S32, 0x4bdecfa9) c = HH(c, d, a, b, fillTab[offset + 7], S33, 0xf6bb4b60) b = HH(b, c, d, a, fillTab[offset + 10], S34, 0xbebfbc70) a = HH(a, b, c, d, fillTab[offset + 13], S31, 0x289b7ec6) d = HH(d, a, b, c, fillTab[offset + 0], S32, 0xeaa127fa) c = HH(c, d, a, b, fillTab[offset + 3], S33, 0xd4ef3085) b = HH(b, c, d, a, fillTab[offset + 6], S34, 0x4881d05) a = HH(a, b, c, d, fillTab[offset + 9], S31, 0xd9d4d039) d = HH(d, a, b, c, fillTab[offset + 12], S32, 0xe6db99e5) c = HH(c, d, a, b, fillTab[offset + 15], S33, 0x1fa27cf8) b = HH(b, c, d, a, fillTab[offset + 2], S34, 0xc4ac5665) a = II(a, b, c, d, fillTab[offset + 0], S41, 0xf4292244) d = II(d, a, b, c, fillTab[offset + 7], S42, 0x432aff97) c = II(c, d, a, b, fillTab[offset + 14], S43, 0xab9423a7) b = II(b, c, d, a, fillTab[offset + 5], S44, 0xfc93a039) a = II(a, b, c, d, fillTab[offset + 12], S41, 0x655b59c3) d = II(d, a, b, c, fillTab[offset + 3], S42, 0x8f0ccc92) c = II(c, d, a, b, fillTab[offset + 10], S43, 0xffeff47d) b = II(b, c, d, a, fillTab[offset + 1], S44, 0x85845dd1) a = II(a, b, c, d, fillTab[offset + 8], S41, 0x6fa87e4f) d = II(d, a, b, c, fillTab[offset + 15], S42, 0xfe2ce6e0) c = II(c, d, a, b, fillTab[offset + 6], S43, 0xa3014314) b = II(b, c, d, a, fillTab[offset + 13], S44, 0x4e0811a1) a = II(a, b, c, d, fillTab[offset + 4], S41, 0xf7537e82) d = II(d, a, b, c, fillTab[offset + 11], S42, 0xbd3af235) c = II(c, d, a, b, fillTab[offset + 2], S43, 0x2ad7d2bb) b = II(b, c, d, a, fillTab[offset + 9], S44, 0xeb86d391) result[1] = result[1] + a result[2] = result[2] + b result[3] = result[3] + c result[4] = result[4] + d result[1] = result[1] & 0xffffffff result[2] = result[2] & 0xffffffff result[3] = result[3] & 0xffffffff result[4] = result[4] & 0xffffffff end local retStr = '' for i = 1,4 do for _ = 1,4 do local temp = result[i] & 0x0F local str = HexTable[temp + 1] result[i] = result[i] >> 4 temp = result[i] & 0x0F retStr = retStr .. HexTable[temp + 1] .. str result[i] = result[i] >> 4 end end return string.lower(retStr) end return getmd5(code) end
--md5加密 md5("加密内容")

--网络请求
function ultra(get,post) c=gg.makeRequest(get,nil,post).content if c==nil then gg.alert("服务器连接失败.或者网络出了问题!出现这个请退出修改器.重新打开执行脚本.你要是执意不退出重新打开的话那你永远也进不去") os.exit() end return c end


local url="http://yyz.tomkj.pro/"--云验证地址-

local appid="1"--appid--这里填写你后台应用的ID

local RC4_config=true--true是开 false是关

local RC4_key="123456"--RC4密匙--这里填写你后台的加密密钥

local app_announcement_url=url.."/api/api.php?type=app_announcement"--应用公告接口

local kami_login_url=url.."/api/api.php?type=kami_login"--卡密登录接口

local imei_relieve_url=url.."/api/api.php?type=imei_relieve"--卡密解绑接口

--机器码配置
local imei_file="/sdcard/Android/."..appid..".ini" imei_files=io.open(imei_file,"r") if imei_files==nil then imei=(math.random(100000,999999)..os.time()) io.open(imei_file,"w"):write(imei):close() else imei=io.open(imei_file,"r"):read("*a") end
local kami_file="/sdcard/Android/."..appid..".kami" kami=io.open(kami_file,"r") if kami==nil then kami="" else kami=io.open(kami_file):read("*a") end

function yz(check)
if check=="0" then
gg.alert("应用不存在")
end
if check=="1" then
gg.alert("应用已关闭")
end
if check=="2" then
gg.alert("卡密解绑已关闭")
end
if check=="4" then
gg.alert("卡密不存在")
end
if check=="5" then
gg.alert("卡密已到期")
end
if check=="7" then
gg.alert("卡密登录失败")
end
if check=="8" then
gg.alert("请用原设备登录")
end
if check=="9" then
gg.alert("卡密未绑定")
end
if check=="11" then
gg.alert("解绑失败\n请重试")
end
if check=="12" then
gg.alert("请用原设备解绑")
end
end



function main()
app_announcement=ultra(app_announcement_url,"appid="..appid)
code=app_announcement:match('code":"(.-)"')
now_time=app_announcement:match('now_time":"(.-)"')
app_announcements=app_announcement:match('msg":"(.-)"')
md5_check=app_announcement:match('md5_check":"(.-)"')
if code=="0" then
gg.alert("应用不存在")
end
if RC4_config==true then
app_announcement=RC4(RC4_key,app_announcement,false)
code=app_announcement:match('code":"(.-)"')
now_time=app_announcement:match('now_time":"(.-)"')
app_announcements=app_announcement:match('msg":"(.-)"')
md5_check=app_announcement:match('md5_check":"(.-)"')
end
while now_time - os.time() > 500 or now_time - os.time() < -500 do
gg.alert("数据过期")
os.exit()
end
while md5_check~= md5(code..now_time..RC4_key) do
gg.alert("免费GG脚本验证提示您可能您的加密强度过高导致无法使用验证.也可能是数据被篡改")
os.exit()
end
if app_announcements==nil then
app_announcements=""
end
::KAMI::
kami_logins=gg.prompt({
"输入1解绑卡密\n公告:"..app_announcements,
},{
kami,
},{
'text',
})
if kami_logins==nil then
print("退出")
os.exit()
end
io.open(kami_file,"w"):write(kami_logins[1])
if kami_logins[1]=="1" then
imei_relieve=gg.prompt({
"请输入解绑卡密:",
},{
kami,
},{
'text',
})

if imei_relieve==nil then
goto KAMI
end

imei_relieves=ultra(imei_relieve_url,"appid="..appid.."&kami="..imei_relieve[1].."&imei="..imei)
code=imei_relieves:match('code":"(.-)"')
now_time=imei_relieves:match('now_time":"(.-)"')
imei_relieve_reduce_time=imei_relieves:match('imei_relieve_reduce_time":"(.-)"')
md5_check=imei_relieves:match('md5_check":"(.-)"')
if code=="0" then
gg.alert("应用不存在")
end
if RC4_config==true then
imei_relieves=RC4(RC4_key,imei_relieves,false)
code=imei_relieves:match('code":"(.-)"')
now_time=imei_relieves:match('now_time":"(.-)"')
imei_relieve_reduce_time=imei_relieves:match('imei_relieve_reduce_time":"(.-)"')
md5_check=imei_relieves:match('md5_check":"(.-)"')
end
while now_time - os.time() > 500 or now_time - os.time() < -500 do
gg.alert("数据过期")
os.exit()
end
while md5_check~= md5(code..now_time..RC4_key) do
gg.alert("免费GG脚本验证提示您可能您的加密强度过高导致无法使用验证.也可能是数据被篡改")
os.exit()
end
if code=="10" then
gg.alert("解绑成功\n扣除卡密"..imei_relieve_reduce_time.."小时")
else
yz(code)
end

else

kami_logins=ultra(kami_login_url,"appid="..appid.."&kami="..kami_logins[1].."&imei="..imei)
code=kami_logins:match('code":"(.-)"')
now_time=kami_logins:match('now_time":"(.-)"')
vip_time=kami_logins:match('vip_time":"(.-)"')
md5_check=kami_logins:match('md5_check":"(.-)"')
if code=="0" then
gg.alert("应用不存在")
end
if RC4_config==true then
kami_logins=RC4(RC4_key,kami_logins,false)
code=kami_logins:match('code":"(.-)"')
now_time=kami_logins:match('now_time":"(.-)"')
vip_time=kami_logins:match('vip_time":"(.-)"')
md5_check=kami_logins:match('md5_check":"(.-)"')
end
while now_time - os.time() > 500 or now_time - os.time() < -500 do
gg.alert("数据过期")
os.exit()
end
while md5_check~= md5(code..now_time..RC4_key) do
gg.alert("免费GG脚本验证提示您可能您的加密强度过高导致无法使用验证.也可能是数据被篡改")
os.exit()
end
if code=="6" then
gg.alert("卡密登录成功\n到期时间:"..os.date("%Y年%m月%d日%H时%M分%S秒",vip_time))
--下面填写你的脚本-------------------------------------------------------------------------------------------------------




















--上面填写你的脚本--------------------------------------------------------------------------------------------------------
else
yz(code)
end

end
end



function maine()
while true do
if gg.isVisible(true) then
XGCK = 1
gg.setVisible(false)
end
gg.clearResults()
if XGCK == 1 then
main()
end
end
end
maine()

  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值