RemoteEvent Pentester OP V2
Key RequiredUniversal

RemoteEvent Pentester OP V2

Universal Scriptnvddnvdd 9K views 182 executesUpdated Nov 1, 2025
1.3/ 5(4 votes)
1325% Positive
Lua Script•589 lines (20224 chars)
--[[
	WARNING: Heads up! This script has not been verified by ScriptBlox. Use at your own risk!
]]
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Workspace = game:GetService("Workspace")
local Lighting = game:GetService("Lighting")
local StarterPack = game:GetService("StarterPack")
local StarterPlayer = game:GetService("StarterPlayer")
local StarterGui = game:GetService("StarterGui")
local UserInputService = game:GetService("UserInputService")
local HttpService = game:GetService("HttpService")

local player = Players.LocalPlayer

-- Remote scanning variables
local scanning = false
local foundRemotes = {}
local workingRemotes = {}
local testedRemotes = {}

-- Create GUI
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "RemoteSelector"
screenGui.ResetOnSpawn = false  -- This line keeps the GUI when you respawn

-- Make sure PlayerGui exists
if not player:FindFirstChild("PlayerGui") then
    player:WaitForChild("PlayerGui")
end

screenGui.Parent = player.PlayerGui

local mainFrame = Instance.new("Frame")
mainFrame.Size = UDim2.new(0, 600, 0, 700)
mainFrame.Position = UDim2.new(0.5, -300, 0.5, -350)
mainFrame.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
mainFrame.BorderSizePixel = 0
mainFrame.Parent = screenGui

local UICorner = Instance.new("UICorner")
UICorner.CornerRadius = UDim.new(0, 8)
UICorner.Parent = mainFrame

-- Title bar for dragging
local titleBar = Instance.new("Frame")
titleBar.Size = UDim2.new(1, 0, 0, 30)
titleBar.Position = UDim2.new(0, 0, 0, 0)
titleBar.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
titleBar.BorderSizePixel = 0
titleBar.Parent = mainFrame

local titleBarCorner = Instance.new("UICorner")
titleBarCorner.CornerRadius = UDim.new(0, 8)
titleBarCorner.Parent = titleBar

local title = Instance.new("TextLabel")
title.Size = UDim2.new(1, 0, 1, 0)
title.Position = UDim2.new(0, 0, 0, 0)
title.BackgroundTransparency = 1
title.TextColor3 = Color3.fromRGB(255, 255, 255)
title.Text = "Remote Selector (Drag Me)"
title.Font = Enum.Font.GothamBold
title.TextSize = 14
title.Parent = titleBar

local closeButton = Instance.new("TextButton")
closeButton.Size = UDim2.new(0, 25, 0, 25)
closeButton.Position = UDim2.new(1, -30, 0, 2)
closeButton.BackgroundColor3 = Color3.fromRGB(255, 60, 60)
closeButton.TextColor3 = Color3.fromRGB(255, 255, 255)
closeButton.Text = "X"
closeButton.Font = Enum.Font.GothamBold
closeButton.TextSize = 12
closeButton.Parent = titleBar

local closeCorner = Instance.new("UICorner")
closeCorner.CornerRadius = UDim.new(0, 4)
closeCorner.Parent = closeButton

-- Content frame
local contentFrame = Instance.new("Frame")
contentFrame.Size = UDim2.new(1, -20, 1, -40)
contentFrame.Position = UDim2.new(0, 10, 0, 35)
contentFrame.BackgroundTransparency = 1
contentFrame.Parent = mainFrame

-- Control buttons
local scanButton = Instance.new("TextButton")
scanButton.Size = UDim2.new(0.48, 0, 0, 40)
scanButton.Position = UDim2.new(0, 0, 0, 0)
scanButton.BackgroundColor3 = Color3.fromRGB(76, 175, 80)
scanButton.TextColor3 = Color3.fromRGB(255, 255, 255)
scanButton.Text = "Scan for Remotes"
scanButton.Font = Enum.Font.Gotham
scanButton.TextSize = 12
scanButton.Parent = contentFrame

local UICorner2 = Instance.new("UICorner")
UICorner2.CornerRadius = UDim.new(0, 6)
UICorner2.Parent = scanButton

local testButton = Instance.new("TextButton")
testButton.Size = UDim2.new(0.48, 0, 0, 40)
testButton.Position = UDim2.new(0.52, 0, 0, 0)
testButton.BackgroundColor3 = Color3.fromRGB(33, 150, 243)
testButton.TextColor3 = Color3.fromRGB(255, 255, 255)
testButton.Text = "Test All Remotes"
testButton.Font = Enum.Font.Gotham
testButton.TextSize = 12
testButton.Parent = contentFrame

local UICorner3 = Instance.new("UICorner")
UICorner3.CornerRadius = UDim.new(0, 6)
UICorner3.Parent = testButton

local generateButton = Instance.new("TextButton")
generateButton.Size = UDim2.new(1, 0, 0, 40)
generateButton.Position = UDim2.new(0, 0, 0, 50)
generateButton.BackgroundColor3 = Color3.fromRGB(156, 39, 176)
generateButton.TextColor3 = Color3.fromRGB(255, 255, 255)
generateButton.Text = "Generate Executor Script"
generateButton.Font = Enum.Font.Gotham
generateButton.TextSize = 12
generateButton.Parent = contentFrame

local UICorner4 = Instance.new("UICorner")
UICorner4.CornerRadius = UDim.new(0, 6)
UICorner4.Parent = generateButton

-- Status labels
local statusLabel = Instance.new("TextLabel")
statusLabel.Size = UDim2.new(1, 0, 0, 30)
statusLabel.Position = UDim2.new(0, 0, 0, 100)
statusLabel.BackgroundTransparency = 1
statusLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
statusLabel.Text = "Ready to scan for remotes"
statusLabel.Font = Enum.Font.Gotham
statusLabel.TextSize = 12
statusLabel.Parent = contentFrame

local statsLabel = Instance.new("TextLabel")
statsLabel.Size = UDim2.new(1, 0, 0, 20)
statsLabel.Position = UDim2.new(0, 0, 0, 130)
statsLabel.BackgroundTransparency = 1
statsLabel.TextColor3 = Color3.fromRGB(200, 200, 200)
statsLabel.Text = "Found: 0 | Working: 0 | Tested: 0"
statsLabel.Font = Enum.Font.Gotham
statsLabel.TextSize = 11
statsLabel.Parent = contentFrame

-- Remote list
local remoteListLabel = Instance.new("TextLabel")
remoteListLabel.Size = UDim2.new(1, 0, 0, 20)
remoteListLabel.Position = UDim2.new(0, 0, 0, 155)
remoteListLabel.BackgroundTransparency = 1
remoteListLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
remoteListLabel.Text = "Discovered Remotes:"
remoteListLabel.Font = Enum.Font.GothamBold
remoteListLabel.TextSize = 12
remoteListLabel.Parent = contentFrame

local remoteListFrame = Instance.new("ScrollingFrame")
remoteListFrame.Size = UDim2.new(1, 0, 0, 200)
remoteListFrame.Position = UDim2.new(0, 0, 0, 180)
remoteListFrame.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
remoteListFrame.BorderSizePixel = 0
remoteListFrame.ScrollBarThickness = 8
remoteListFrame.CanvasSize = UDim2.new(0, 0, 0, 0)
remoteListFrame.Parent = contentFrame

local listCorner = Instance.new("UICorner")
listCorner.CornerRadius = UDim.new(0, 6)
listCorner.Parent = remoteListFrame

local UIListLayout = Instance.new("UIListLayout")
UIListLayout.Padding = UDim.new(0, 2)
UIListLayout.Parent = remoteListFrame

-- Working remotes list
local workingLabel = Instance.new("TextLabel")
workingLabel.Size = UDim2.new(1, 0, 0, 20)
workingLabel.Position = UDim2.new(0, 0, 0, 390)
workingLabel.BackgroundTransparency = 1
workingLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
workingLabel.Text = "Working Remotes:"
workingLabel.Font = Enum.Font.GothamBold
workingLabel.TextSize = 12
workingLabel.Parent = contentFrame

local workingListFrame = Instance.new("ScrollingFrame")
workingListFrame.Size = UDim2.new(1, 0, 0, 150)
workingListFrame.Position = UDim2.new(0, 0, 0, 415)
workingListFrame.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
workingListFrame.BorderSizePixel = 0
workingListFrame.ScrollBarThickness = 8
workingListFrame.CanvasSize = UDim2.new(0, 0, 0, 0)
workingListFrame.Parent = contentFrame

local workingCorner = Instance.new("UICorner")
workingCorner.CornerRadius = UDim.new(0, 6)
workingCorner.Parent = workingListFrame

local workingUIListLayout = Instance.new("UIListLayout")
workingUIListLayout.Padding = UDim.new(0, 2)
workingUIListLayout.Parent = workingListFrame

-- Script output
local outputLabel = Instance.new("TextLabel")
outputLabel.Size = UDim2.new(1, 0, 0, 20)
outputLabel.Position = UDim2.new(0, 0, 0, 575)
outputLabel.BackgroundTransparency = 1
outputLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
outputLabel.Text = "Generated Executor Script:"
outputLabel.Font = Enum.Font.GothamBold
outputLabel.TextSize = 12
outputLabel.Parent = contentFrame

local scriptTextBox = Instance.new("TextBox")
scriptTextBox.Size = UDim2.new(1, 0, 0, 80)
scriptTextBox.Position = UDim2.new(0, 0, 0, 600)
scriptTextBox.BackgroundColor3 = Color3.fromRGB(25, 25, 25)
scriptTextBox.TextColor3 = Color3.fromRGB(255, 255, 255)
scriptTextBox.Text = "-- Generated executor script will appear here"
scriptTextBox.Font = Enum.Font.Code
scriptTextBox.TextSize = 10
scriptTextBox.TextXAlignment = Enum.TextXAlignment.Left
scriptTextBox.TextYAlignment = Enum.TextYAlignment.Top
scriptTextBox.TextWrapped = true
scriptTextBox.ClearTextOnFocus = false
scriptTextBox.MultiLine = true
scriptTextBox.Parent = contentFrame

local textBoxCorner = Instance.new("UICorner")
textBoxCorner.CornerRadius = UDim.new(0, 6)
textBoxCorner.Parent = scriptTextBox

-- Dragging functionality
local dragging = false
local dragStartPos, frameStartPos

local function updateDrag(input)
    if not dragging then return end
    
    local delta = input.Position - dragStartPos
    mainFrame.Position = UDim2.new(
        frameStartPos.X.Scale, 
        frameStartPos.X.Offset + delta.X,
        frameStartPos.Y.Scale, 
        frameStartPos.Y.Offset + delta.Y
    )
end

titleBar.InputBegan:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseButton1 then
        dragging = true
        dragStartPos = input.Position
        frameStartPos = mainFrame.Position
        
        input.Changed:Connect(function()
            if input.UserInputState == Enum.UserInputState.End then
                dragging = false
            end
        end)
    end
end)

titleBar.InputChanged:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseMovement then
        updateDrag(input)
    end
end)

UserInputService.InputChanged:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseMovement then
        updateDrag(input)
    end
end)

-- Function to recursively find all remotes
local function findRemotes(parent, path)
    local remotes = {}
    
    for _, child in ipairs(parent:GetChildren()) do
        local newPath = path .. "." .. child.Name
        
        if child:IsA("RemoteEvent") or child:IsA("RemoteFunction") then
            table.insert(remotes, {
                Object = child,
                Path = newPath,
                Type = child.ClassName
            })
        end
        
        -- Recursively search children (with depth limit for safety)
        if #child:GetChildren() > 0 and #newPath:split(".") < 10 then
            local childRemotes = findRemotes(child, newPath)
            for _, remote in ipairs(childRemotes) do
                table.insert(remotes, remote)
            end
        end
    end
    
    return remotes
end

-- Function to scan for all remotes
local function scanForRemotes()
    if scanning then return end
    
    scanning = true
    foundRemotes = {}
    workingRemotes = {}
    testedRemotes = {}
    
    -- Clear lists
    for _, child in ipairs(remoteListFrame:GetChildren()) do
        if child:IsA("Frame") then
            child:Destroy()
        end
    end
    
    for _, child in ipairs(workingListFrame:GetChildren()) do
        if child:IsA("Frame") then
            child:Destroy()
        end
    end
    
    statusLabel.Text = "Scanning for remotes..."
    
    -- Search in common locations
    local locations = {
        ReplicatedStorage,
        Workspace,
        Lighting,
        StarterPack,
        StarterPlayer,
        StarterGui,
        game:GetService("ServerScriptService"),
        game:GetService("ServerStorage"),
        game:GetService("ReplicatedFirst")
    }
    
    -- Add player's backpack and player scripts
    if player.Character then
        table.insert(locations, player.Character)
    end
    if player:FindFirstChild("Backpack") then
        table.insert(locations, player.Backpack)
    end
    if player:FindFirstChild("PlayerScripts") then
        table.insert(locations, player.PlayerScripts)
    end
    if player:FindFirstChild("PlayerGui") then
        table.insert(locations, player.PlayerGui)
    end
    
    -- Scan all locations
    for _, location in ipairs(locations) do
        local locationRemotes = findRemotes(location, location:GetFullName())
        for _, remote in ipairs(locationRemotes) do
            table.insert(foundRemotes, remote)
        end
    end
    
    -- Update UI with found remotes
    remoteListFrame.CanvasSize = UDim2.new(0, 0, 0, #foundRemotes * 30)
    
    for i, remote in ipairs(foundRemotes) do
        local remoteFrame = Instance.new("Frame")
        remoteFrame.Size = UDim2.new(1, -10, 0, 25)
        remoteFrame.Position = UDim2.new(0, 5, 0, (i-1)*30)
        remoteFrame.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
        remoteFrame.Parent = remoteListFrame
        
        local remoteCorner = Instance.new("UICorner")
        remoteCorner.CornerRadius = UDim.new(0, 4)
        remoteCorner.Parent = remoteFrame
        
        local remoteName = Instance.new("TextLabel")
        remoteName.Size = UDim2.new(0.7, 0, 1, 0)
        remoteName.Position = UDim2.new(0, 5, 0, 0)
        remoteName.BackgroundTransparency = 1
        remoteName.TextColor3 = Color3.fromRGB(255, 255, 255)
        remoteName.Text = remote.Path
        remoteName.Font = Enum.Font.Gotham
        remoteName.TextSize = 10
        remoteName.TextXAlignment = Enum.TextXAlignment.Left
        remoteName.Parent = remoteFrame
        
        local remoteType = Instance.new("TextLabel")
        remoteType.Size = UDim2.new(0.2, 0, 1, 0)
        remoteType.Position = UDim2.new(0.7, 0, 0, 0)
        remoteType.BackgroundTransparency = 1
        remoteType.TextColor3 = Color3.fromRGB(200, 200, 200)
        remoteType.Text = remote.Type
        remoteType.Font = Enum.Font.Gotham
        remoteType.TextSize = 10
        remoteType.Parent = remoteFrame
        
        local testButton = Instance.new("TextButton")
        testButton.Size = UDim2.new(0.1, 0, 0.7, 0)
        testButton.Position = UDim2.new(0.9, 0, 0.15, 0)
        testButton.BackgroundColor3 = Color3.fromRGB(33, 150, 243)
        testButton.TextColor3 = Color3.fromRGB(255, 255, 255)
        testButton.Text = "Test"
        testButton.Font = Enum.Font.Gotham
        testButton.TextSize = 9
        testButton.Parent = remoteFrame
        
        local buttonCorner = Instance.new("UICorner")
        buttonCorner.CornerRadius = UDim.new(0, 4)
        buttonCorner.Parent = testButton
        
        testButton.MouseButton1Click:Connect(function()
            testSingleRemote(remote)
        end)
    end
    
    statusLabel.Text = "Scan complete! Found " .. #foundRemotes .. " remotes"
    statsLabel.Text = "Found: " .. #foundRemotes .. " | Working: " .. #workingRemotes .. " | Tested: " .. #testedRemotes
    scanning = false
end

-- Function to test a single remote
local function testSingleRemote(remote)
    if testedRemotes[remote.Path] then return end
    
    statusLabel.Text = "Testing remote: " .. remote.Path
    
    local success, result = pcall(function()
        if remote.Type == "RemoteEvent" then
            -- Test RemoteEvent
            remote.Object:FireServer("test", 123, true, "remote_selector_test")
        elseif remote.Type == "RemoteFunction" then
            -- Test RemoteFunction
            return remote.Object:InvokeServer("test", 123, true, "remote_selector_test")
        end
    end)
    
    testedRemotes[remote.Path] = true
    
    if success then
        table.insert(workingRemotes, remote)
        statusLabel.Text = "✓ Remote works: " .. remote.Path
        
        -- Add to working list
        local workingFrame = Instance.new("Frame")
        workingFrame.Size = UDim2.new(1, -10, 0, 25)
        workingFrame.Position = UDim2.new(0, 5, 0, #workingRemotes * 30)
        workingFrame.BackgroundColor3 = Color3.fromRGB(50, 80, 50)
        workingFrame.Parent = workingListFrame
        
        local workingCorner = Instance.new("UICorner")
        workingCorner.CornerRadius = UDim.new(0, 4)
        workingCorner.Parent = workingFrame
        
        local remoteName = Instance.new("TextLabel")
        remoteName.Size = UDim2.new(0.8, 0, 1, 0)
        remoteName.Position = UDim2.new(0, 5, 0, 0)
        remoteName.BackgroundTransparency = 1
        remoteName.TextColor3 = Color3.fromRGB(255, 255, 255)
        remoteName.Text = remote.Path
        remoteName.Font = Enum.Font.Gotham
        remoteName.TextSize = 10
        remoteName.TextXAlignment = Enum.TextXAlignment.Left
        remoteName.Parent = workingFrame
        
        local remoteType = Instance.new("TextLabel")
        remoteType.Size = UDim2.new(0.2, 0, 1, 0)
        remoteType.Position = UDim2.new(0.8, 0, 0, 0)
        remoteType.BackgroundTransparency = 1
        remoteType.TextColor3 = Color3.fromRGB(200, 200, 200)
        remoteType.Text = remote.Type
        remoteType.Font = Enum.Font.Gotham
        remoteType.TextSize = 10
        remoteType.Parent = workingFrame
        
        workingListFrame.CanvasSize = UDim2.new(0, 0, 0, #workingRemotes * 30)
    else
        statusLabel.Text = "✗ Remote failed: " .. remote.Path
    end
    
    statsLabel.Text = "Found: " .. #foundRemotes .. " | Working: " .. #workingRemotes .. " | Tested: " .. #testedRemotes
end

-- Function to test all remotes
local function testAllRemotes()
    if scanning then return end
    
    statusLabel.Text = "Testing all remotes..."
    
    for i, remote in ipairs(foundRemotes) do
        if not testedRemotes[remote.Path] then
            testSingleRemote(remote)
            wait(0.1) -- Small delay to avoid flooding
        end
    end
    
    statusLabel.Text = "Testing complete! " .. #workingRemotes .. " working remotes found"
end

-- Function to generate executor script
local function generateExecutorScript()
    if #workingRemotes == 0 then
        scriptTextBox.Text = "-- No working remotes found!\n-- Scan and test remotes first."
        return
    end
    
    local scriptString = [[-- Auto-generated Remote Executor Script
-- Generated with Remote Selector
-- Number of working remotes: ]] .. #workingRemotes .. [[

local function executeRemotes()
    print("Executing ]] .. #workingRemotes .. [[ working remotes...")
    
]]

    -- Add remote execution code
    for i, remote in ipairs(workingRemotes) do
        local safePath = remote.Path:gsub("%.", "_")
        
        if remote.Type == "RemoteEvent" then
            scriptString = scriptString .. string.format([[
    -- RemoteEvent %d: %s
    pcall(function()
        local remote = %s
        if remote and remote:IsA("RemoteEvent") then
            remote:FireServer("executed_by_remote_selector", %d, math.random(1000))
            print("✓ Fired RemoteEvent: %s")
        end
    end)
]], i, remote.Path, remote.Path, i, remote.Path)
        elseif remote.Type == "RemoteFunction" then
            scriptString = scriptString .. string.format([[
    -- RemoteFunction %d: %s
    pcall(function()
        local remote = %s
        if remote and remote:IsA("RemoteFunction") then
            local result = remote:InvokeServer("executed_by_remote_selector", %d, math.random(1000))
            print("✓ Invoked RemoteFunction: %s - Result: " .. tostring(result))
        end
    end)
]], i, remote.Path, remote.Path, i, remote.Path)
        end
        
        if i < #workingRemotes then
            scriptString = scriptString .. "\n"
        end
    end
    
    scriptString = scriptString .. [[

    print("Remote execution completed!")
end

-- Auto-execute
executeRemotes()

-- Return the function for manual execution
return executeRemotes
]]

    scriptTextBox.Text = scriptString
    statusLabel.Text = "Executor script generated with " .. #workingRemotes .. " remotes"
end

-- Connect buttons
scanButton.MouseButton1Click:Connect(scanForRemotes)
testButton.MouseButton1Click:Connect(testAllRemotes)
generateButton.MouseButton1Click:Connect(generateExecutorScript)

-- Close button
closeButton.MouseButton1Click:Connect(function()
    screenGui:Destroy()
end)

-- Initial instructions
scriptTextBox.Text = [[-- Remote Selector Instructions --

1. Click 'Scan for Remotes' to find all RemoteEvents and RemoteFunctions
2. Click 'Test All Remotes' to test which ones work
3. Test individual remotes by clicking their 'Test' button
4. Click 'Generate Executor Script' to create an execution script
5. Copy the script and run it in your executor

Note: Some remotes might require specific arguments to work properly.]]

statusLabel.Text = "Ready to scan for remotes"

Features & Information

The best universal script, can search for remotes to make your own script when executed you can make a script to send actions to the server Used for making high quality exploit scripts remoteevents can be admin actions if they are not protected
#remotevent#script#admin#OP#tool

Community Comments (5)

nvddnvddNov 1, 2025

use this in games made by @platinumfalls works well with them

Replying to @nvdd
DevexProjectSSDevexProjectSSNov 1, 2025

@anonymoouzz Rspy on Infinity yield?

Replying to @DevexProjectSS
nvddnvddNov 1, 2025

@DevexProjectSS this isnt the same exact thing as rspy, this one scans every remote and trys it, rspy is for remotes you activate yourself.

dyanmitedyanmiteNov 1, 2025

Honestly very unsafe with games that have bait remotes lol, otherwise pretty cool script bro!

bemgippybemgippyMay 25, 2026

can someone explain to me on how to use this?

More Scripts for Universal Scripts