Advertisement
ExluZive

Untitled

Jan 5th, 2025
18
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.49 KB | None | 0 0
  1.  
  2. local service = 976 ;--Set your Platoboost Id
  3. local secret = "80d9b46f-bc7a-481f-b995-f5434d356671"; --Set Your Platoboost
  4. local useNonce = true;
  5. local onMessage = function(message) game:GetService("StarterGui"):SetCore("ChatMakeSystemMessage", { Text = message; }) end;
  6.  
  7.  
  8. repeat task.wait(1) until game:IsLoaded() or game.Players.LocalPlayer;
  9.  
  10.  
  11. local requestSending = false;
  12. local fSetClipboard, fRequest, fStringChar, fToString, fStringSub, fOsTime, fMathRandom, fMathFloor, fGetHwid = setclipboard or toclipboard, request or http_request, string.char, tostring, string.sub, os.time, math.random, math.floor, gethwid or function() return game:GetService("Players").LocalPlayer.UserId end
  13. local cachedLink, cachedTime = "", 0;
  14. local HttpService = game:GetService("HttpService")
  15.  
  16. function lEncode(data)
  17. return HttpService:JSONEncode(data)
  18. end
  19. function lDecode(data)
  20. return HttpService:JSONDecode(data)
  21. end
  22. local function lDigest(input)
  23. local inputStr = tostring(input)
  24.  
  25.  
  26. local hash = {}
  27. for i = 1, #inputStr do
  28. table.insert(hash, string.byte(inputStr, i))
  29. end
  30.  
  31. local hashHex = ""
  32. for _, byte in ipairs(hash) do
  33. hashHex = hashHex .. string.format("%02x", byte)
  34. end
  35.  
  36. return hashHex
  37. end
  38. local host = "https://api.platoboost.com";
  39. local hostResponse = fRequest({
  40. Url = host .. "/public/connectivity",
  41. Method = "GET"
  42. });
  43. if hostResponse.StatusCode ~= 200 or hostResponse.StatusCode ~= 429 then
  44. host = "https://api.platoboost.net";
  45. end
  46.  
  47. function cacheLink()
  48. if cachedTime + (10*60) < fOsTime() then
  49. local response = fRequest({
  50. Url = host .. "/public/start",
  51. Method = "POST",
  52. Body = lEncode({
  53. service = service,
  54. identifier = lDigest(fGetHwid())
  55. }),
  56. Headers = {
  57. ["Content-Type"] = "application/json"
  58. }
  59. });
  60.  
  61. if response.StatusCode == 200 then
  62. local decoded = lDecode(response.Body);
  63.  
  64. if decoded.success == true then
  65. cachedLink = decoded.data.url;
  66. cachedTime = fOsTime();
  67. return true, cachedLink;
  68. else
  69. onMessage(decoded.message);
  70. return false, decoded.message;
  71. end
  72. elseif response.StatusCode == 429 then
  73. local msg = "you are being rate limited, please wait 20 seconds and try again.";
  74. onMessage(msg);
  75. return false, msg;
  76. end
  77.  
  78. local msg = "Failed to cache link.";
  79. onMessage(msg);
  80. return false, msg;
  81. else
  82. return true, cachedLink;
  83. end
  84. end
  85.  
  86.  
  87.  
  88. cacheLink();
  89.  
  90. local generateNonce = function()
  91. local str = ""
  92. for _ = 1, 16 do
  93. str = str .. fStringChar(fMathFloor(fMathRandom() * (122 - 97 + 1)) + 97)
  94. end
  95. return str
  96. end
  97.  
  98.  
  99. for _ = 1, 5 do
  100. local oNonce = generateNonce();
  101. task.wait(0.2)
  102. if generateNonce() == oNonce then
  103. local msg = "platoboost nonce error.";
  104. onMessage(msg);
  105. error(msg);
  106. end
  107. end
  108.  
  109. local copyLink = function()
  110. local success, link = cacheLink();
  111.  
  112. if success then
  113. print("SetClipBoard")
  114. fSetClipboard(link);
  115. end
  116. end
  117.  
  118. local redeemKey = function(key)
  119. local nonce = generateNonce();
  120. local endpoint = host .. "/public/redeem/" .. fToString(service);
  121.  
  122. local body = {
  123. identifier = lDigest(fGetHwid()),
  124. key = key
  125. }
  126.  
  127. if useNonce then
  128. body.nonce = nonce;
  129. end
  130.  
  131. local response = fRequest({
  132. Url = endpoint,
  133. Method = "POST",
  134. Body = lEncode(body),
  135. Headers = {
  136. ["Content-Type"] = "application/json"
  137. }
  138. });
  139.  
  140. if response.StatusCode == 200 then
  141. local decoded = lDecode(response.Body);
  142. if decoded.success == true then
  143. if decoded.data.valid == true then
  144. if useNonce then
  145. if decoded.data.hash == lDigest("true" .. "-" .. nonce .. "-" .. secret) then
  146. return true;
  147. else
  148. onMessage("failed to verify integrity.");
  149. return false;
  150. end
  151. else
  152. return true;
  153. end
  154. else
  155. onMessage("key is invalid.");
  156. return false;
  157. end
  158. else
  159. if fStringSub(decoded.message, 1, 27) == "unique constraint violation" then
  160. onMessage("you already have an active key, please wait for it to expire before redeeming it.");
  161. return false;
  162. else
  163. onMessage(decoded.message);
  164. return false;
  165. end
  166. end
  167. elseif response.StatusCode == 429 then
  168. onMessage("you are being rate limited, please wait 20 seconds and try again.");
  169. return false;
  170. else
  171. onMessage("server returned an invalid status code, please try again later.");
  172. return false;
  173. end
  174. end
  175.  
  176.  
  177. local verifyKey = function(key)
  178. if requestSending == true then
  179. onMessage("a request is already being sent, please slow down.");
  180. return false;
  181. else
  182. requestSending = true;
  183. end
  184.  
  185. local nonce = generateNonce();
  186. local endpoint = host .. "/public/whitelist/" .. fToString(service) .. "?identifier=" .. lDigest(fGetHwid()) .. "&key=" .. key;
  187.  
  188. if useNonce then
  189. endpoint = endpoint .. "&nonce=" .. nonce;
  190. end
  191. local response = fRequest({
  192. Url = endpoint,
  193. Method = "GET",
  194. });
  195.  
  196. requestSending = false;
  197.  
  198. if response.StatusCode == 200 then
  199. local decoded = lDecode(response.Body);
  200. if decoded.success == true then
  201. if decoded.data.valid == true then
  202. if useNonce then
  203. return true;
  204. else
  205. return true;
  206. end
  207. else
  208. if fStringSub(key, 1, 4) == "FREE_" then
  209. return redeemKey(key);
  210. else
  211. onMessage("key is invalid.");
  212. return false;
  213. end
  214. end
  215. else
  216. onMessage(decoded.message);
  217. return false;
  218. end
  219. elseif response.StatusCode == 429 then
  220. onMessage("you are being rate limited, please wait 20 seconds and try again.");
  221. return false;
  222. else
  223. onMessage("server returned an invalid status code, please try again later.");
  224. return false;
  225. end
  226. end
  227.  
  228.  
  229. local getFlag = function(name)
  230. local nonce = generateNonce();
  231. local endpoint = host .. "/public/flag/" .. fToString(service) .. "?name=" .. name;
  232.  
  233. if useNonce then
  234. endpoint = endpoint .. "&nonce=" .. nonce;
  235. end
  236.  
  237. local response = fRequest({
  238. Url = endpoint,
  239. Method = "GET",
  240. });
  241.  
  242. if response.StatusCode == 200 then
  243. local decoded = lDecode(response.Body);
  244. if decoded.success == true then
  245. if useNonce then
  246. if decoded.data.hash == lDigest(fToString(decoded.data.value) .. "-" .. nonce .. "-" .. secret) then
  247. return decoded.data.value;
  248. else
  249. onMessage("failed to verify integrity.");
  250. return nil;
  251. end
  252. else
  253. return decoded.data.value;
  254. end
  255. else
  256. onMessage(decoded.message);
  257. return nil;
  258. end
  259. else
  260. return nil;
  261. end
  262. end
  263.  
  264. task.spawn(function()
  265. local ScreenGui = Instance.new("ScreenGui")
  266. local Frame = Instance.new("Frame")
  267. local Topbar = Instance.new("Frame")
  268. local Exit = Instance.new("TextButton")
  269. local minimize = Instance.new("TextButton")
  270. local Frame_2 = Instance.new("Frame")
  271. local Getkey = Instance.new("TextButton")
  272. local Checkkey = Instance.new("TextButton")
  273. local TextBox = Instance.new("TextBox")
  274. local TextLabel = Instance.new("TextLabel")
  275.  
  276.  
  277. ScreenGui.Parent = game.Players.LocalPlayer:WaitForChild("PlayerGui")
  278. ScreenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
  279.  
  280. Frame.Parent = ScreenGui
  281. Frame.BackgroundColor3 = Color3.fromRGB(76, 76, 76)
  282. Frame.BorderColor3 = Color3.fromRGB(0, 0, 0)
  283. Frame.BorderSizePixel = 0
  284. Frame.Position = UDim2.new(0.286729872, 0, 0.295880139, 0)
  285. Frame.Size = UDim2.new(0, 359, 0, 217)
  286.  
  287. Topbar.Name = "Topbar"
  288. Topbar.Parent = Frame
  289. Topbar.BackgroundColor3 = Color3.fromRGB(0, 0, 0)
  290. Topbar.BorderColor3 = Color3.fromRGB(0, 0, 0)
  291. Topbar.BorderSizePixel = 0
  292. Topbar.Size = UDim2.new(0, 359, 0, 27)
  293.  
  294. Exit.Name = "Exit"
  295. Exit.Parent = Topbar
  296. Exit.BackgroundColor3 = Color3.fromRGB(255, 0, 0)
  297. Exit.BackgroundTransparency = 0.300
  298. Exit.BorderColor3 = Color3.fromRGB(0, 0, 0)
  299. Exit.BorderSizePixel = 0
  300. Exit.Position = UDim2.new(0.905292451, 0, 0.111111112, 0)
  301. Exit.Size = UDim2.new(0, 25, 0, 20)
  302. Exit.Font = Enum.Font.SourceSans
  303. Exit.Text = "X"
  304. Exit.TextColor3 = Color3.fromRGB(255, 255, 255)
  305. Exit.TextScaled = true
  306. Exit.TextSize = 14.000
  307. Exit.TextWrapped = true
  308.  
  309. minimize.Name = "minimize"
  310. minimize.Parent = Topbar
  311. minimize.BackgroundColor3 = Color3.fromRGB(85, 255, 0)
  312. minimize.BackgroundTransparency = 0.300
  313. minimize.BorderColor3 = Color3.fromRGB(0, 0, 0)
  314. minimize.BorderSizePixel = 0
  315. minimize.Position = UDim2.new(0.810584962, 0, 0.111111112, 0)
  316. minimize.Size = UDim2.new(0, 25, 0, 20)
  317. minimize.Font = Enum.Font.SourceSans
  318. minimize.Text = "-"
  319. minimize.TextColor3 = Color3.fromRGB(255, 255, 255)
  320. minimize.TextScaled = true
  321. minimize.TextSize = 14.000
  322. minimize.TextWrapped = true
  323.  
  324. Frame_2.Parent = Frame
  325. Frame_2.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
  326. Frame_2.BackgroundTransparency = 1.000
  327. Frame_2.BorderColor3 = Color3.fromRGB(0, 0, 0)
  328. Frame_2.BorderSizePixel = 0
  329. Frame_2.Position = UDim2.new(0, 0, 0.124423966, 0)
  330. Frame_2.Size = UDim2.new(0, 359, 0, 189)
  331.  
  332. Getkey.Name = "Getkey"
  333. Getkey.Parent = Frame_2
  334. Getkey.BackgroundColor3 = Color3.fromRGB(0, 0, 0)
  335. Getkey.BorderColor3 = Color3.fromRGB(0, 0, 0)
  336. Getkey.BorderSizePixel = 0
  337. Getkey.Position = UDim2.new(0.317548752, 0, 0.523809552, 0)
  338. Getkey.Size = UDim2.new(0, 130, 0, 32)
  339. Getkey.Font = Enum.Font.SourceSans
  340. Getkey.Text = "Getkey"
  341. Getkey.TextColor3 = Color3.fromRGB(255, 255, 255)
  342. Getkey.TextScaled = true
  343. Getkey.TextSize = 14.000
  344. Getkey.TextWrapped = true
  345.  
  346. Checkkey.Name = "Checkkey"
  347. Checkkey.Parent = Frame_2
  348. Checkkey.BackgroundColor3 = Color3.fromRGB(0, 0, 0)
  349. Checkkey.BorderColor3 = Color3.fromRGB(0, 0, 0)
  350. Checkkey.BorderSizePixel = 0
  351. Checkkey.Position = UDim2.new(0.317548752, 0, 0.767195761, 0)
  352. Checkkey.Size = UDim2.new(0, 130, 0, 32)
  353. Checkkey.Font = Enum.Font.SourceSans
  354. Checkkey.Text = "CheckKey"
  355. Checkkey.TextColor3 = Color3.fromRGB(255, 255, 255)
  356. Checkkey.TextScaled = true
  357. Checkkey.TextSize = 14.000
  358. Checkkey.TextWrapped = true
  359.  
  360. TextBox.Parent = Frame_2
  361. TextBox.BackgroundColor3 = Color3.fromRGB(139, 139, 139)
  362. TextBox.BackgroundTransparency = 0.600
  363. TextBox.BorderColor3 = Color3.fromRGB(0, 0, 0)
  364. TextBox.BorderSizePixel = 0
  365. TextBox.Position = UDim2.new(0.0779944286, 0, 0.137566134, 0)
  366. TextBox.Size = UDim2.new(0, 304, 0, 42)
  367. TextBox.Font = Enum.Font.SourceSans
  368. TextBox.Text = ""
  369. TextBox.TextTransparency = 1
  370. TextBox.TextColor3 = Color3.fromRGB(0, 0, 0)
  371. TextBox.TextScaled = true
  372. TextBox.TextSize = 14.000
  373. TextBox.TextWrapped = true
  374.  
  375. TextLabel.Parent = Frame_2
  376. TextLabel.BackgroundColor3 = Color3.fromRGB(211, 211, 211)
  377. TextLabel.BackgroundTransparency = 1.000
  378. TextLabel.BorderColor3 = Color3.fromRGB(0, 0, 0)
  379. TextLabel.BorderSizePixel = 0
  380. TextLabel.Position = UDim2.new(0.0779944286, 0, 0.137566134, 0)
  381. TextLabel.Size = UDim2.new(0, 304, 0, 42)
  382. TextLabel.ZIndex = 2
  383. TextLabel.Font = Enum.Font.SourceSans
  384. TextLabel.Text = "In Put Your Key"
  385. TextLabel.TextColor3 = Color3.fromRGB(0, 0, 0)
  386. TextLabel.TextScaled = true
  387. TextLabel.TextSize = 14.000
  388. TextLabel.TextStrokeTransparency = 0.830
  389. TextLabel.TextTransparency = 0.550
  390. TextLabel.TextWrapped = true
  391.  
  392.  
  393.  
  394.  
  395. TextBox:GetPropertyChangedSignal("Text"):Connect(function(text)
  396. if TextBox.Text == "" then
  397. TextLabel.Text = "In Put Your Key"
  398. else
  399. TextLabel.Text = TextBox.Text
  400. end
  401. end)
  402.  
  403. Checkkey.MouseButton1Down:Connect(function()
  404. if TextBox and TextBox.Text then
  405.  
  406. local Verify = verifyKey(TextBox.Text)
  407. if Verify then
  408. loadstring(game:HttpGet"https://pastebin.com/raw/nQwmDgky")()
  409. else
  410. print("Key Is in valid")
  411. end
  412. end
  413. end)
  414.  
  415. Getkey.MouseButton1Down:Connect(function()
  416. copyLink()
  417. end)
  418.  
  419. Exit.MouseButton1Down:Connect(function()
  420. if ScreenGui then
  421. ScreenGui:Destroy()
  422. end
  423. end)
  424.  
  425.  
  426. minimize.MouseButton1Down:Connect(function()
  427. if ScreenGui then
  428. ScreenGui.Enabled = false
  429. end
  430. end)
  431.  
  432. end)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement