Help with obfuscation script

I have made an obfuscation script and it errors at line 44 because of the space

local module = {}
module.Obfuscate = function(str)
	local defaultCapitalChars = {"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"}
	local defaultLowercaseChars = {"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"}
	local defaultSpecialChars = {" ","`","~","!","@","#","$","%","^","&","*","(",")","-","_","=","+","[","{","]","}","\\","|",";",":","'",'"',",","<",".",">","/","?"}
	local defaultNumericChars = {"1","2","3","4","5","6","7","8","9","0"}
	local NumericChars = {}
	local CapitalChars = {}
	local LowercaseChars = {}
	local specialChars = {}
	local obfuscatedChars = {}
	local finishedObfuscated
	local part = ""
	for i = 1, 10001 do
		for i,v in pairs(defaultCapitalChars) do
			table.insert(CapitalChars, v)
		end
	end
	for i = 1, 10001 do
		for i,v in pairs(defaultLowercaseChars) do
			table.insert(LowercaseChars, v)
		end
	end
	for i = 1, 10001 do
		for i,v in pairs(defaultSpecialChars) do
			table.insert(specialChars, v)
		end
	end
	print("FinishedAdding, Length:", #CapitalChars)
	local seperateChars = {}
	local obfuscatedChars = {}
	for i = 1, string.len(str) do
		local temp = string.sub(str, i, i)
		table.insert(seperateChars, temp)
	end
	for i,v in pairs(seperateChars) do
		if table.find(defaultCapitalChars, v) ~= nil then
			local finStr = CapitalChars[table.find(CapitalChars, v)+i]
			table.insert(obfuscatedChars, finStr)
		elseif table.find(defaultLowercaseChars, v) ~= nil then
			local finStr = LowercaseChars[table.find(LowercaseChars, v)+i]
			table.insert(obfuscatedChars, finStr)
		elseif table.find(defaultSpecialChars, v) ~= nil then
			local finStr = specialChars[table.find(LowercaseChars, v)-i]
			table.insert(obfuscatedChars, finStr)
		elseif table.find(defaultNumericChars, v) ~= nil then
			local finStr = NumericChars[table.find(LowercaseChars, v)-i]
			table.insert(obfuscatedChars, finStr)
		end
	end
	for i,v in pairs(obfuscatedChars) do
		part = part .. v
		if i == #obfuscatedChars then
			finishedObfuscated = part
		end
	end
	return finishedObfuscated
end
module.UnObfuscate = function(str)
	local defaultCapitalChars = {"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"}
	local defaultLowercaseChars = {"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"}
	local defaultSpecialChars = {"`","~","!","@","#","$","%","^","&","*","(",")","-","_","=","+","[","{","]","}","\\","|",";",":","'",'"',",","<",".",">","/","?"}
	local defaultNumericChars = {"1","2","3","4","5","6","7","8","9","0"}
	local NumericChars = {}
	local CapitalChars = {}
	local LowercaseChars = {}
	local specialChars = {}
	local UnObfuscatedChars = {}
	local finishedUnObfuscated
	local part = ""
	for i = 1, 10001 do
		for i,v in pairs(defaultCapitalChars) do
			table.insert(CapitalChars, v)
		end
	end
	for i = 1, 10001 do
		for i,v in pairs(defaultLowercaseChars) do
			table.insert(LowercaseChars, v)
		end
	end
	for i = 1, 10001 do
		for i,v in pairs(defaultSpecialChars) do
			table.insert(specialChars, v)
		end
	end
	print("FinishedAdding, Length:", #CapitalChars)
	local seperateChars = {}
	local obfuscatedChars = {}
	for i = 1, string.len(str) do
		local temp = string.sub(str, i, i)
		table.insert(seperateChars, temp)
	end
	for i,v in pairs(seperateChars) do
		if table.find(defaultCapitalChars, v) ~= nil then
			local finStr = CapitalChars[table.find(CapitalChars, v)-i]
			table.insert(UnObfuscatedChars, finStr)
		elseif table.find(defaultLowercaseChars, v) ~= nil then
			local finStr = LowercaseChars[table.find(LowercaseChars, v)-i]
			table.insert(UnObfuscatedChars, finStr)
		elseif table.find(defaultSpecialChars, v) ~= nil then
			local finStr = specialChars[table.find(LowercaseChars, v)-i]
			table.insert(UnObfuscatedChars, finStr)
		elseif table.find(defaultNumericChars, v) ~= nil then
			local finStr = NumericChars[table.find(LowercaseChars, v)-i]
			table.insert(UnObfuscatedChars, finStr)
		end
	end
	for i,v in pairs(UnObfuscatedChars) do
		part = part .. v
		if i == #UnObfuscatedChars then
			finishedUnObfuscated = part
		end
	end
	return finishedUnObfuscated
end
return module

and the error I get is: image
script that is calling it:

local ob = require(script.Parent.Obfuscator)
local ToBe = "Hello Hello"
print(ob.UnObfuscate(ob.Obfuscate(ToBe)))

All help is welcome!

Why don’t you add the space character to defaultSpecialChars?

While not necessarily an answer to your problem, if you’re using this for some kind of remote system or using it for server<->client communication, I’d say you’re wasting your time by doing so. Exploits will be able to figure out how your module system works and it will be like it doesn’t even exist to them.

1 Like