i will make these settings adjustable in the future.
along with the option to teleport these accounts to maybe another server and have them complete the captchas there to ensure security
of course this only happens to bots and suspected accounts and only happens upon joining
the current captcha system currently has four methods for captchas Addition - Subtraction - Multiplication - and Division.
iām going to add image verification soon as i know that is more robust.
before any of you go ahead and talk about vulnerabilities the client has no idea what the answer is to the captcha they only know the prompt and everytime they get it wrong it regenerates. i understand the math is insecure thats why im adding image captchas soon
please note the suspicious account filter is currently not enabled
I thought this was interesting so I remade, if anyone wants the code here it is
server:
function captcha(player)
local chosenOperation = math.random(1,2)
local randomFirstNumber = math.random(1,5)
local randomSecondNumber = math.random(1,5)
local await = player.PlayerGui:WaitForChild("Captcha")
player.PlayerGui.Captcha.Enabled = true
if chosenOperation == 1 then
player.PlayerGui.Captcha.Frame.Question.Text = randomFirstNumber.."+"..randomSecondNumber
player.PlayerGui.Captcha.Frame.Confirm.MouseButton1Click:Connect(function()
if game.ReplicatedStorage.GetEntery:InvokeClient(player) == randomFirstNumber + randomSecondNumber then
print('Correct')
player.PlayerGui.Captcha.Enabled = false
else
player:Kick()
end
end)
elseif chosenOperation == 2 then
if randomSecondNumber > randomFirstNumber then
repeat
randomFirstNumber = math.random(1,5)
randomSecondNumber = math.random(1,5)
until randomSecondNumber <= randomFirstNumber
end
player.PlayerGui.Captcha.Frame.Question.Text = randomFirstNumber.."-"..randomSecondNumber
player.PlayerGui.Captcha.Frame.Confirm.MouseButton1Click:Connect(function()
if game.ReplicatedStorage.GetEntery:InvokeClient(player) == randomFirstNumber - randomSecondNumber then
print('Correct')
player.PlayerGui.Captcha.Enabled = false
else
player:Kick()
end
end)
end
end
game.Players.PlayerAdded:Connect(function(player)
task.spawn(captcha, player)
end)
client:
game.ReplicatedStorage:WaitForChild("GetEntery").OnClientInvoke = function()
return tonumber(script.Parent.PlrAnswer.Text)
end