New Chat Filter Bypass Concern

I will explain things briefly.

Since the launch of Solara executor (As far as I know), I’ve noticed a huge spike of exploiters in my game doing bad stuff. And one of them being able to explicitly chat without any filters. Bad words from Filerunner5674 - Album on Imgur

So I did a research and found this https://www.reddit.com/r/robloxhackers/comments/1goje2p/chat_filter_bypass_script/?rdt=33549

This is really concerning because it works on every Roblox games that uses new TextChatService and matter of fact mostly every game uses it.

So if this isn’t fixed immediately, every exploiters will take advantage of it.

Here’s the code from that Reddit link

--[[ SETTINGS ]]--
local CHAT_MESSAGE = "the message to send using the bypass"
local CHANNEL = "RBXGeneral" -- dont change this unless you know what youre doing

--[[ DONT CHANGE ANYTHING BELOW HERE ]]--

local separator = string.char(239, 191, 184)

local function insertSeparator(text)
	local result = ""
	for i = 1, #text do
		result = result .. text:sub(i, i)
		if i < #text then
			result = result .. separator
		end
	end
	return result
end

local formattedText = insertSeparator(CHAT_MESSAGE)
game:GetService("TextChatService").TextChannels:WaitForChild(CHANNEL):SendAsync("</>\r" .. formattedText)
-- created by claytontdm
5 Likes

This shouldnt be in forum bugs, as it isnt a bug on the forum. Try getting this in either #help-and-feedback:platform-usage-support or #bug-reports

3 Likes

Yea sorry it’s my first time here. How do I do that?

2 Likes

I’ve figured it out thank you so much

2 Likes

The worst part is how accessible these scripts are, if you join a literal baseplate. - Roblox for example, you will see a lot of people using that kind of scripts. The part that raises the concert is how inappropriate those bypasses are, minors exposed to that language and literally being threaten to get r**ed is NOT normal, Roblox should take an action on that immediately.

The real worst part is roblox forcing all users to migrate to TextChatService while it still has bugs, easy bypasses, and has been proven to be less safer

2 Likes

I doubt that it’s the fault of new TextChatService unless the old system was removing invisible characters that are getting used.

Im assuming this is something similar to what crosswords games do? I’m not entirely sure. I also know there are report exploits, so…

Made a quick fix for this chat bypass, it will kick the users attempting to use it. Should be in a server script.

local Players = game:GetService('Players')
local TextChatService = game:GetService('TextChatService')
local General: TextChannel = TextChatService:WaitForChild('TextChannels').RBXGeneral

local blacklistCharacters = {
	string.char(239),
	string.char(191),
	string.char(184)
}

General.ShouldDeliverCallback = function(message, textSource)
	for _, char in blacklistCharacters do
		if string.find(message.Text, char) then
			if message.TextSource.UserId then
				local player = Players:GetPlayerByUserId(message.TextSource.UserId)
				if player then
					player:Kick('Chat filter violation')
					return nil
				end
			end
		end
	end
end
2 Likes

Did you test this yet? Are you sure this works? I might make a bug report about this ngl.

I’ve tested it with multiple players and it indeed works. Message doesn’t get delivered to other players too.

1 Like

It has to do with their text filtering service I guess. What they’re doing is adding extra characters into their text to trick the text filtering system. This is what they did with emojis back then.

Yes fixable if Roblox gives this some attention

I do not recommend using this script because some UTF characters like chinese characters sometimes use these specific UTF codes. This script just leads to a false kick in rare occasion.

This could be improved

chinese people cant even play roblox

I feel like this issue is too critical to just ignore it, a lot of people use that bypass innapropriately while talking to minors. If roblox doesn’t protect children on thier platform, someone else should do that, even if you are possibly making it harder for Chinese/Korean/etc people to chat.

Not just chinese characters. Japanese, arabic, and korean too. They use UTF8 and those bytes value ranges between 0-255. I can’t explain how UTF works.

1 Like

Best thing we can do is to make a working anticheat into our game until this is resolved by Roblox.

I wish I can code an anticheat right now but it’s literally 2am here lol

then like

how do you expect to prevent this, that is an anticheat lmao, or at least an anti bypass

Making an entire anticheat just because of that is pointless, you have to detect the exploit on injection too, since it doesn’t tamper anything and just fires a roblox internal remote. If you are really worried about false kicks, you can make it ignore certain character combinations or make it kick only on 3 exact characters used in the script.

I will sacrifice my bodyclock for this and write a simple anti cheat on my phone

local separator = string.char(239, 191, 184)
local badwords = {
    "bad" -- add more here
}

local textToCheck = "I like chicken"

textToCheck = textToCheck:lower()
textWithoutSeparator = ""
for _,txt in pairs(textToCheck:split(separator) do
    textWithoutSeparator ..= txt
end

isBadWord = false
for _,badword in pairs(badwords) do
    if textWithoutSeparator:find(badword) then
        isBardWord = true
        break
    end
end

print(isBadWord)