DAWN Token Extractor

Extract DAWN token.

Dovrai installare un'estensione come Tampermonkey, Greasemonkey o Violentmonkey per installare questo script.

Dovrai installare un'estensione come Tampermonkey o Violentmonkey per installare questo script.

Dovrai installare un'estensione come Tampermonkey o Violentmonkey per installare questo script.

Dovrai installare un'estensione come Tampermonkey o Userscripts per installare questo script.

Dovrai installare un'estensione come ad esempio Tampermonkey per installare questo script.

Dovrai installare un gestore di script utente per installare questo script.

(Ho già un gestore di script utente, lasciamelo installare!)

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

(Ho già un gestore di stile utente, lasciamelo installare!)

// ==UserScript==
// @name         DAWN Token Extractor
// @namespace    forestarmy
// @version      4.0
// @description  Extract DAWN token.
// @match        https://dashboard.dawninternet.com/*
// @grant        none
// @author.      Itsmesatyavir
// @license      MIT
// ==/UserScript==

(function () {
    'use strict';

    let token = null;

    // === Create UI box (Top-Right Corner) ===
    const box = document.createElement('div');
    box.style.position = 'fixed';
    box.style.top = '10px';
    box.style.right = '10px';
    box.style.zIndex = '999999';
    box.style.background = '#000';
    box.style.color = '#0ff';
    box.style.padding = '12px';
    box.style.border = '2px solid #0ff';
    box.style.borderRadius = '12px';
    box.style.fontSize = '12px';
    box.style.width = '300px';
    box.style.fontFamily = 'monospace';
    box.style.boxShadow = '0 0 12px #0ff';

    const title = document.createElement('div');
    title.textContent = 'DAWN Token Extractor FORESTARMY';
    title.style.fontWeight = 'bold';
    title.style.fontSize = '14px';
    title.style.marginBottom = '6px';

    const tokenDisplay = document.createElement('div');
    tokenDisplay.textContent = 'Detecting...';
    tokenDisplay.style.maxHeight = '32px';
    tokenDisplay.style.overflow = 'hidden';
    tokenDisplay.style.textOverflow = 'ellipsis';
    tokenDisplay.style.whiteSpace = 'nowrap';
    tokenDisplay.style.marginBottom = '8px';
    tokenDisplay.style.color = '#fff';

    const copyBtn = document.createElement('button');
    copyBtn.textContent = '📋 Copy Token';
    copyBtn.style.background = '#0ff';
    copyBtn.style.color = '#000';
    copyBtn.style.border = 'none';
    copyBtn.style.padding = '6px 10px';
    copyBtn.style.cursor = 'pointer';
    copyBtn.style.borderRadius = '6px';
    copyBtn.style.width = '100%';
    copyBtn.disabled = true;

    copyBtn.onclick = () => {
        if (token) {
            navigator.clipboard.writeText(token).then(() => {
                copyBtn.textContent = '✅ Copied';
                setTimeout(() => copyBtn.textContent = '📋 Copy Token', 2000);
            });
        }
    };

    box.appendChild(title);
    box.appendChild(tokenDisplay);
    box.appendChild(copyBtn);
    document.body.appendChild(box);

    // === Telegram Widget Embed ===
    const telegram = document.createElement('script');
    telegram.async = true;
    telegram.src = 'https://telegram.org/js/telegram-widget.js?22';
    telegram.setAttribute('data-telegram-post', 'forestarmy/3954');
    telegram.setAttribute('data-width', '100%');
    document.body.appendChild(telegram);

    // === Token Updater ===
    function updateToken(newToken) {
        if (!newToken || newToken === token) return;
        token = newToken;
        tokenDisplay.textContent = newToken;
        copyBtn.disabled = false;
        console.log('[FORESTARMY] Token:', token);
    }

    // === 1. Try localStorage.user ===
    try {
        const userData = localStorage.getItem('user');
        if (userData) {
            const parsed = JSON.parse(userData);
            if (parsed.token) updateToken(parsed.token);
        }
    } catch (e) {}

    // === 2. Hook fetch ===
    const origFetch = window.fetch;
    window.fetch = async function (...args) {
        const response = await origFetch.apply(this, args);

        // Check headers
        const config = args[1];
        if (config?.headers?.Authorization?.startsWith('Bearer ')) {
            updateToken(config.headers.Authorization.split(' ')[1]);
        }

        // Check JSON response
        try {
            const cloned = response.clone();
            const type = cloned.headers.get('content-type') || '';
            if (type.includes('application/json')) {
                const json = await cloned.json();
                if (json?.token) updateToken(json.token);
            }
        } catch (e) {}

        return response;
    };

    // === 3. Hook XHR ===
    const origOpen = XMLHttpRequest.prototype.open;
    XMLHttpRequest.prototype.open = function () {
        this.addEventListener('readystatechange', function () {
            if (this.readyState === 4) {
                try {
                    const type = this.getResponseHeader('content-type') || '';
                    if (type.includes('application/json')) {
                        const json = JSON.parse(this.responseText);
                        if (json?.token) updateToken(json.token);
                    }
                } catch (e) {}
            }
        });
        origOpen.apply(this, arguments);
    };
})();