- // ==UserScript==
- // @name Kour.io Invisible hack
- // @match *://kour.io/*
- // @license MIT
- // @version 1.3.0
- // @description kour.io hacks with togglable options for invisibility and instant kill
- // @run-at document-start
- // @grant unsafeWindow
- // @namespace https://gf.qytechs.cn/users/1422179
- // ==/UserScript==
-
- const Signatures = {
- ping: "f3 07 01 00 00",
- pong: "f3 06 01 01 01",
- anotherPing: "f3 04 e2 03 e3",
- createGame: "f3 02 e3 03 ff 07 06",
- updateState: "f3 02 fd 02 f4 03 c8",
- damageTaken: "f3 04 c8 02 f5 15 04",
- connectStarts: "f3 02 e",
- connectEnds: "f1 1c e8 1c bf 0b 23"
- };
-
- class Kour {
- constructor() {
- this.sockets = [];
- this.config = {
- Invisible: false,
- InstantKill: false
- };
- this.packets = 0;
-
- unsafeWindow.WebSocket = class extends WebSocket {
- constructor() {
- super(...arguments);
- this.addEventListener("open", event => {
- kourInstance.sockets.push(this);
- kourInstance.hook(this);
- });
- }
- };
- }
-
- hook(socket) {
- const send = socket.send;
- const onmessage = socket.onmessage;
-
- socket.onmessage = (event) => {
- if (!event.data) return onmessage.call(socket, event);
-
- this.packets++;
-
- let hexArray = Array.from(new Uint8Array(event.data)).map(byte => byte.toString(16).padStart(2, '0'));
- let stringHexArray = hexArray.join(" ");
-
- if (stringHexArray.startsWith(Signatures.ping) || stringHexArray.startsWith(Signatures.anotherPing)) {
- return onmessage.call(socket, event);
- }
-
- if (stringHexArray.startsWith(Signatures.damageTaken) && this.config.Invisible) {
- return;
- }
-
- return onmessage.call(socket, event);
- };
-
- socket.send = (data) => {
- this.packets++;
-
- let hexArray = Array.from(new Uint8Array(data)).map(byte => byte.toString(16).padStart(2, '0'));
- let stringHexArray = hexArray.join(" ");
-
- if (stringHexArray.startsWith(Signatures.pong)) {
- return send.call(socket, data);
- }
-
- if (stringHexArray.startsWith(Signatures.updateState) && this.config.InstantKill) {
- for (let i = 0; i < 40; i++) {
- send.call(socket, data);
- }
- return send.call(socket, data);
- }
-
- return send.call(socket, data);
- };
- }
-
- createMenu() {
- const menu = document.createElement("div");
- menu.style.position = "fixed";
- menu.style.top = "20px";
- menu.style.right = "20px";
- menu.style.background = "linear-gradient(145deg, #4f4f4f, #2f2f2f)";
- menu.style.padding = "15px";
- menu.style.borderRadius = "10px";
- menu.style.boxShadow = "0 4px 6px rgba(0, 0, 0, 0.3), 0 -4px 6px rgba(0, 0, 0, 0.2)";
- menu.style.color = "white";
- menu.style.fontFamily = "'Roboto', sans-serif";
- menu.style.fontSize = "14px";
- menu.style.zIndex = "9999";
- menu.style.cursor = "move";
- menu.style.display = "flex";
- menu.style.flexDirection = "column";
- menu.style.alignItems = "center";
- menu.style.transition = "none"; // Remover transição aqui para evitar a borda preta
-
- // Título estilizado "LC Mod Menu"
- const title = document.createElement("div");
- title.textContent = "LC Mod Menu";
- title.style.fontSize = "22px";
- title.style.fontWeight = "bold";
- title.style.marginBottom = "15px";
- title.style.color = "#ff6f61";
- title.style.textShadow = "2px 2px 5px rgba(0, 0, 0, 0.3)";
- title.style.fontFamily = "'Poppins', sans-serif";
- menu.appendChild(title);
-
- let isDragging = false;
- let offsetX, offsetY;
-
- menu.addEventListener("mousedown", (e) => {
- isDragging = true;
- offsetX = e.clientX - menu.getBoundingClientRect().left;
- offsetY = e.clientY - menu.getBoundingClientRect().top;
- });
-
- document.addEventListener("mousemove", (e) => {
- if (isDragging) {
- menu.style.left = `${e.clientX - offsetX}px`;
- menu.style.top = `${e.clientY - offsetY}px`;
- }
- });
-
- document.addEventListener("mouseup", () => {
- isDragging = false;
- menu.style.transition = "transform 0.2s ease-in-out"; // Adicionar transição após o movimento
- });
-
- const createOption = (label, configKey) => {
- const button = document.createElement("button");
- button.textContent = `${label}: OFF`;
- button.style.margin = "5px";
- button.style.padding = "10px 15px";
- button.style.border = "none";
- button.style.borderRadius = "5px";
- button.style.backgroundColor = "#444";
- button.style.color = "white";
- button.style.cursor = "pointer";
- button.style.fontWeight = "bold";
- button.style.transition = "all 0.3s";
-
- button.addEventListener("mouseover", () => {
- button.style.backgroundColor = "#555";
- });
-
- button.addEventListener("mouseout", () => {
- button.style.backgroundColor = this.config[configKey] ? "#4CAF50" : "#444";
- });
-
- button.addEventListener("click", () => {
- this.config[configKey] = !this.config[configKey];
- button.textContent = `${label}: ${this.config[configKey] ? 'ON' : 'OFF'}`;
- button.style.backgroundColor = this.config[configKey] ? "#4CAF50" : "#444";
- });
-
- menu.appendChild(button);
- };
-
- createOption("INSTANT KILL", "InstantKill");
- createOption("INVISIBLE", "Invisible");
-
- document.body.appendChild(menu);
- }
- }
-
- const kourInstance = new Kour();
- window.addEventListener("load", () => {
- kourInstance.createMenu();
- });