Bonk IP logger

Steals IP addresses on Bonk.io with a fancy UI

当前为 2025-01-16 提交的版本,查看 最新版本

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         Bonk IP logger
// @namespace    https://greasyfork.org/
// @version      2025-01-15
// @description  Steals IP addresses on Bonk.io with a fancy UI
// @author       Pugsby, with some help from Aspect#8445
// @match        *://bonk.io/
// @icon         https://www.google.com/s2/favicons?sz=64&domain=bonk.io
// @grant        none
// @license MIT
// ==/UserScript==

/* jshint esversion: 6 */
(() => {
    console.log('████████████████████████████▀█████▀█████████████\n█▄─▄█▄─▄▄─███▄─▄███─▄▄─█─▄▄▄▄█─▄▄▄▄█▄─▄▄─█▄─▄▄▀█\n██─███─▄▄▄████─██▀█─██─█─██▄─█─██▄─██─▄█▀██─▄─▄█\n▀▄▄▄▀▄▄▄▀▀▀▀▀▄▄▄▄▄▀▄▄▄▄▀▄▄▄▄▄▀▄▄▄▄▄▀▄▄▄▄▄▀▄▄▀▄▄▀\nIP Logger made by Pugsby on greasyfork.')

    const loggedIPs = [];

    // Replace contents of div with id "descriptioninner"
    const descriptionDiv = document.getElementById("descriptioninner");
    if (descriptionDiv) {
        descriptionDiv.innerHTML = `
            <h1>Bonk.io - IP logger</h1>
            <p>
                <small>Made by <a href="https://greasyfork.org/en/users/1422616-pugsby" style="color:black">Pugsby</a></small><br>
                I don't know what to put here lol.<br>
                If you have any suggestions for the IP logger, DM me on discord. <b>@Pugsbyy</b><br>
                Please don't blame me if you go to prison for doxxing people.
            </p>
            <div id="ipBox" style="margin-top: 15px; max-height: 200px; overflow-y: auto; border-top: 1px solid #ccc; padding-top: 10px;">
                <strong>Logged IPs:</strong><br>No IPs logged yet.
            </div>
        `;
    }

    // Create UI elements
    const button = document.createElement('button');
    button.textContent = 'Show IPs';
    button.style.position = 'absolute';
    button.style.top = '10px';
    button.style.left = '10px';
    button.style.zIndex = '9999';
    button.style.padding = '10px 15px';
    button.style.border = 'none';
    button.style.backgroundColor = '#050510';
    button.style.color = 'white';
    button.style.fontSize = '16px';
    button.style.cursor = 'pointer';
    button.style.borderRadius = '5px';
    document.body.appendChild(button);

    const menu = document.createElement('div');
    menu.style.position = 'fixed';
    menu.style.top = '50%';
    menu.style.left = '20px'; // Position the menu on the left
    menu.style.transform = 'translateY(-50%)'; // Center vertically
    menu.style.backgroundColor = '#fff';
    menu.style.border = '2px solid #4CAF50';
    menu.style.borderRadius = '10px';
    menu.style.padding = '20px';
    menu.style.boxShadow = '0 4px 20px rgba(0, 0, 0, 0.2)';
    menu.style.display = 'none';
    menu.style.zIndex = '10000';
    document.body.appendChild(menu);

    const closeButton = document.createElement('button');
    closeButton.textContent = 'X'; // Change text to "X"
    closeButton.style.padding = '5px 10px';
    closeButton.style.border = 'none';
    closeButton.style.backgroundColor = 'transparent';
    closeButton.style.color = '#f44336';
    closeButton.style.fontSize = '16px';
    closeButton.style.cursor = 'pointer';
    closeButton.style.position = 'absolute';
    closeButton.style.top = '10px';
    closeButton.style.right = '10px'; // Move to the right side of the menu
    closeButton.onclick = () => {
        menu.style.display = 'none';
    };
    menu.appendChild(closeButton);

    // Override addIceCandidate method
    window.onload = () => {
        let iframe = document.getElementById("maingameframe");
        let w = iframe.contentWindow;

        w.RTCPeerConnection.prototype.addIceCandidate2 = w.RTCPeerConnection.prototype.addIceCandidate;
        w.RTCPeerConnection.prototype.addIceCandidate = function(...args) {
            if (!args[0].address.includes(".local")) {
                loggedIPs.push(args[0].address);
                console.log(args[0].address)
                updateIPList();
            }
            this.addIceCandidate2(...args);
        }
    };

    // Update the IP list display
    function updateIPList() {
        const ipBox = document.getElementById("ipBox");
        if (ipBox) {
            ipBox.innerHTML = '<strong><h2>Logged IPs</h2></strong><br>' + (loggedIPs.length > 0 ? loggedIPs.join('<br>') : 'No IPs logged yet.');
        }
    }

    // Scroll to the IP box on button click
    button.onclick = () => {
        const ipBox = document.getElementById("ipBox");
        if (ipBox) {
            ipBox.scrollIntoView({ behavior: 'smooth' });
        }
    };
})();