Remote Event Obsfucator

Hello I have made a RemoteEvent & BindableEvent obsfucator, I wanna know if the code is really good or not

here is the code:

local codes = math.random(90, 101)
local timeBeforeRedoingIt = 0

local lettersLibrary = {
	'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',
	'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',
	'1', '2', '3', '4', '5', '6', '7', '8', '9', '&', 'é', '(', ')', 'è', 'à', '!',':', '§', '%', 'ù', ';', '.', '?', ','
}

local function generateLetters() return lettersLibrary[math.random(1, #lettersLibrary)]; end

while true do
	repeat wait(); until game.IsLoaded;
	if codes > 1 then
		for _, object in pairs(game:GetDescendants()) do
			if object:IsA('RemoteEvent') or object:IsA('BindableFunction') then
				object.Name = generateLetters()
				for i=1, codes - 1 do object.Name = object.Name .. generateLetters(); end
			end
		end
		
	else
		warn("Please enter a number between 2 and 101 for the variable 'codes'.")
		break
		
	end
	if timeBeforeRedoingIt >= 0 then
		wait(timeBeforeRedoingIt)
		
	else
		warn("Please enter a number greater or equal to 0 to the variable named 'timeBeforeRedoingIt'.")
		break
		
	end
end

Here is the video of what it’s doing:

5 Likes

Just naming them an empty string or doing game:GetService(“HttpService”):GenerateGUID(true) works just fine also thats not obfuscation thats just giving them random names

7 Likes

what does game:GetService(“HttpService”):GenerateGUID(true) do?

3 Likes

Just basically generates a random string the true argument passed just makes the string enclosed in { }, try print it and have a look

3 Likes

What would probably be a better idea is have a modulescript handle firing and receiving remotes and after you’ve fired the remote you can just parent it to nil, also if you store the FireServer function in a variable it allows you to just fire the remote instantly and allows you to reparent the remote to nil again without any issues and .OnClientEvent should still work even if the remote isn’t parented to ReplicatedStorage ( at least last time i tried)

3 Likes

Thanks for responding, this will really help for my future games, if anybody who have others idea, I would love to hear it!

3 Likes

How would you use the events if you were to use this method?

2 Likes

I would probably do that:

repeat wait() until	game.IsLoaded

for _, remotes in pairs(game:GetDescendants()) do
	if remotes:IsA('RemoteEvent') or remotes:IsA('BindableEvent') then
		remotes.Parent = game;
		
	end
end

while wait(1) do
	for _, remotes in pairs(game:GetChildren()) do
		if remotes:IsA('RemoteEvent') or remotes:IsA('BindableEvent') then
			remotes.Name = game:GetService("HttpService"):GenerateGUID(true)
			
		end
	end
end

also for having the remote I just need to make a variable before the game is loaded

2 Likes

remote securities are a waste of time because at the end of the day, remotes are being fired from the client and anything done on the client can be manipulated.

also it might be better to use custom function to generate random strings / remote keys

3 Likes

I thinks it is better to have a protection even if it’s small, you can stop a lot of players to exploit in your game

3 Likes

are you able to help me obscure my remotes? I am having issues with some remotes being fired by exploiters as my game heavily relies on data from the client.

2 Likes

for avoiding exploiters to fire remotes, I used a framework named BridgeNet, I though they could not fire it until I saw that yes they can so now im trying to have the best one to avoid a maximum of exploiters

3 Likes

I’ll see to make a perfect one and i’ll show you the script

3 Likes

Do you validate the data serverside?

3 Likes

yes, but it gets annoying to validate the data. I’d just like some extra security.

2 Likes

A good way of doing it like i said earlier is having a modulescript handle remotes and parent them to nil when you’re not using them so they can’t be fired

2 Likes
local times = 1
local codes = 4

local randomLocation = {
	game,
	game:GetService('SoundService'),
	game:GetService('StarterPlayer'),
	game:GetService('MaterialService'),

}

repeat wait() until	game.IsLoaded

while true do
	for _, remotes in pairs(game:GetDescendants()) do
		if remotes:IsA('RemoteEvent') or remotes:IsA('BindableEvent') then
			remotes.Name = ''
			
			if codes >= 1 then 
				for i=1, codes do
					remotes.Name = remotes.Name .. ' ' .. game:GetService("HttpService"):GenerateGUID(true)
					
				end
			else
				warn("The variable code need to be a number and be greater than 0.")
				break
				
			end
			
			remotes.Parent = randomLocation[math.random(1, #randomLocation)]

		end
	end
	
	if times >= 0 then
		wait(times)
		
	else
		warn("The variable code need to be a number and be greater or equals to 0.")
		break
		
	end
end

I’ve made this code, is it good or not? (fixed the bug)

2 Likes

Is there any post similar to what you are referring to? I am not quite sure I understand how to make a module script handle remotes.

2 Likes
  1. Remotes need to be in ReplicatedStorage to be fired
  2. Remote:GetPropertyChangedSignal(“Parent”): Connect(function() Remote.Parent = game:GetService(“ReplicatedStorage”) end) is all an exploiter would have to do
2 Likes

@iotalua this post that im replying to

2 Likes