Diferencias
Muestra las diferencias entre dos versiones de la página.
| Próxima revisión | Revisión previa | ||
| epub:libro01:notas:start [2026/06/16 14:40] – creado webmaster | epub:libro01:notas:start [2026/06/16 16:26] (actual) – webmaster | ||
|---|---|---|---|
| Línea 6: | Línea 6: | ||
| * que requerimientos tiene | * que requerimientos tiene | ||
| - | BASE | + | BASE SERVIDOR |
| + | * que es xampp | ||
| + | * descarga | ||
| + | * instalación | ||
| + | |||
| + | BASE CLIENTE (DOKU) | ||
| * descarga | * descarga | ||
| * instalación | * instalación | ||
| Línea 16: | Línea 21: | ||
| * configurando plugins | * configurando plugins | ||
| - | AVANZADO | + | AVANZADO |
| - | * | + | * descripción del sistema normal (ver en anexo) |
| + | * descripción del sistema implementado | ||
| + | * nada en htdocs | ||
| + | * xampp/ | ||
| + | * xampp/ | ||
| + | * xampp/ | ||
| + | |||
| + | AVANZADO 2 | ||
| + | * creación de un certificado local que no de problemas (windows) | ||
| + | |||
| + | AVANZADO 3 (VARIOS DOKUS) (experimental) | ||
| + | |||
| + | Es posible que esta estructura genere algún tipo de error desconocido hasta el momento. No parece ser así. No obstante, es reversible. Solo habría que restablecer las posiciones físicas de los archivos donde se han puesto simbólicamente. Y todas ellas son perfectamente conocidas. | ||
| + | |||
| + | Este es un diseño para evitar repetir archivos que son de solo lectura en multiples dokus y destinados a ser utilizados por un único usuario y de forma local. Se desconoce su funcionalidad en otros ámbitos. | ||
| + | |||
| + | * ubicación compartida de plantilla en xampp/ | ||
| + | * ubicación compartida de plugins en xampp/ | ||
| + | * script para activar/ | ||
| + | * Enviar al usuario al lugar correcto (a mí) y al falso al incorrecto | ||
| + | |||
| + | LUGAR INCORRECTO | ||
| + | |||
| + | Primero decirle como desviar | ||
| + | |||
| + | f: | ||
| + | |||
| + | <code text .htaccess> | ||
| + | RewriteEngine On | ||
| + | |||
| + | # CONDICIÓN: Si la IP NO es la mía (reemplaza 127.0.0.1 por tu IP si accedes desde red) | ||
| + | RewriteCond %{REMOTE_ADDR} !^127\.0\.0\.1$ | ||
| + | |||
| + | # ACCIÓN: Enviar al usuario incorrecto a un destino falso o un callejón sin salida | ||
| + | RewriteRule ^(.*)$ http:// | ||
| + | </ | ||
| + | |||
| + | Esto significaría dejar de usar https:// | ||
| + | |||
| + | Se crea la carpeta f: | ||
| + | |||
| + | <code php index.php> | ||
| + | <?php | ||
| + | // ========================================== | ||
| + | // CAPA 1: EXTRACCIÓN HARDCORE DE RED (PHP) | ||
| + | // ========================================== | ||
| + | $ip = $_SERVER[' | ||
| + | $puerto = $_SERVER[' | ||
| + | $metodo = $_SERVER[' | ||
| + | $protocolo = $_SERVER[' | ||
| + | $hora = date(' | ||
| + | $user_agent = $_SERVER[' | ||
| + | $accept = $_SERVER[' | ||
| + | $encoding = isset($_SERVER[' | ||
| + | $idioma = isset($_SERVER[' | ||
| + | $conexion_header = isset($_SERVER[' | ||
| + | |||
| + | // Captura de cabeceras de proxy o modificaciones de red | ||
| + | $forwarded_for = isset($_SERVER[' | ||
| + | $via = isset($_SERVER[' | ||
| + | ?> | ||
| + | < | ||
| + | <html lang=" | ||
| + | < | ||
| + | <meta charset=" | ||
| + | < | ||
| + | < | ||
| + | body { background-color: | ||
| + | .panel { border: 2px solid #00ff55; background-color: | ||
| + | h1 { color: #ff2222; font-size: 22px; margin-top: 0; border-bottom: | ||
| + | h2 { color: #2299ff; font-size: 16px; margin-top: 30px; border-bottom: | ||
| + | .fila { display: flex; border-bottom: | ||
| + | .label { color: #88bb88; width: 350px; font-weight: | ||
| + | .valor { color: #ffffff; word-break: break-all; } | ||
| + | .alerta-roja { color: #ff3333; font-weight: | ||
| + | @keyframes parpadeo { 0% { opacity: 1; } 50% { opacity: 0.4; } 100% { opacity: 1; } } | ||
| + | </ | ||
| + | </ | ||
| + | < | ||
| + | |||
| + | <div class=" | ||
| + | <h1>[ EXTRACCIÓN PERICIAL INTEGRAL - PROTOCOLO DE EXPOSICIÓN DE TELEMETRÍA ]</ | ||
| + | < | ||
| + | |||
| + | < | ||
| + | <div class=" | ||
| + | <div class=" | ||
| + | <div class=" | ||
| + | <div class=" | ||
| + | <div class=" | ||
| + | <div class=" | ||
| + | <div class=" | ||
| + | <div class=" | ||
| + | <div class=" | ||
| + | <div class=" | ||
| + | <div class=" | ||
| + | <div class=" | ||
| + | |||
| + | < | ||
| + | <div id=" | ||
| + | <p style=" | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | let auditoriaOk = false; | ||
| + | |||
| + | try { | ||
| + | // ---- 1. HARDWARE FÍSICO Y COMPONENTES ---- | ||
| + | const cores = navigator.hardwareConcurrency ? navigator.hardwareConcurrency + " hilos lógicos" | ||
| + | const ram = navigator.deviceMemory ? navigator.deviceMemory + " GB estimados" | ||
| + | |||
| + | // Tarjeta Gráfica y Renderizador (WebGL masivo) | ||
| + | let gpu_fabricante = " | ||
| + | let gpu_renderizador = " | ||
| + | const canvas = document.createElement(' | ||
| + | const gl = canvas.getContext(' | ||
| + | if (gl) { | ||
| + | const debugInfo = gl.getExtension(' | ||
| + | if (debugInfo) { | ||
| + | gpu_fabricante = gl.getParameter(debugInfo.UNMASKED_RENDERER_VENDOR_SGIX); | ||
| + | gpu_renderizador = gl.getParameter(debugInfo.UNMASKED_RENDERER_INFO_SGIX); | ||
| + | } | ||
| + | } | ||
| + | |||
| + | // Subsistema de Audio (Hardware de sonido integrado) | ||
| + | let subsistema_audio = " | ||
| + | try { | ||
| + | const AudioContext = window.AudioContext || window.webkitAudioContext; | ||
| + | if (AudioContext) { | ||
| + | const ctx = new AudioContext(); | ||
| + | subsistema_audio = ctx.sampleRate + " Hz (Frecuencia de muestreo física)"; | ||
| + | ctx.close(); | ||
| + | } | ||
| + | } catch(e){} | ||
| + | |||
| + | // ---- 2. ENTORNO DE PANTALLA Y MONITORES ---- | ||
| + | const resolucion_pantalla = window.screen.width + " | ||
| + | const area_utilizable = window.screen.availWidth + " | ||
| + | const profundidad_color = window.screen.colorDepth + " bits"; | ||
| + | const orientacion = (window.screen.orientation && window.screen.orientation.type) ? window.screen.orientation.type : "No reportada"; | ||
| + | |||
| + | // ---- 3. ESTADO INTERNO DEL SISTEMA ---- | ||
| + | const plataforma_raw = navigator.platform ? navigator.platform : "No declarada"; | ||
| + | const cookies_habilitadas = navigator.cookieEnabled ? " | ||
| + | const zona_horaria_placa = Intl.DateTimeFormat().resolvedOptions().timeZone; | ||
| + | const offset_gmt = "GMT " + (new Date().getTimezoneOffset() / -60); | ||
| + | |||
| + | // Detección de automatización (Herramientas como Puppeteer/ | ||
| + | const automatizado = navigator.webdriver ? "SÍ (Posible bot/script automatizado)" | ||
| + | |||
| + | // Inspección de persistencia (Ver si usa almacenamiento local en disco) | ||
| + | let almacenamiento_local = " | ||
| + | try { | ||
| + | localStorage.setItem(' | ||
| + | localStorage.removeItem(' | ||
| + | almacenamiento_local = " | ||
| + | } catch(e){} | ||
| + | |||
| + | // Control de pantalla completa (Ver si está maximizado o en modo ventana) | ||
| + | const pantalla_completa = (window.innerWidth == window.screen.width && window.innerHeight == window.screen.height) ? " | ||
| + | |||
| + | // Si el navegador ha falseado u ocultado la GPU y cores esenciales, forzamos la caída al modo de protección inverso | ||
| + | if (navigator.hardwareConcurrency === undefined && gpu_fabricante === " | ||
| + | // Permitimos que actúe el temporizador por falta de datos verídicos | ||
| + | } else { | ||
| + | auditoriaOk = true; | ||
| + | document.getElementById(' | ||
| + | <div class=" | ||
| + | <div class=" | ||
| + | <div class=" | ||
| + | <div class=" | ||
| + | <div class=" | ||
| + | <div class=" | ||
| + | <div class=" | ||
| + | <div class=" | ||
| + | <div class=" | ||
| + | <div class=" | ||
| + | <div class=" | ||
| + | <div class=" | ||
| + | <div class=" | ||
| + | <div class=" | ||
| + | <div class=" | ||
| + | `; | ||
| + | } | ||
| + | } catch (e) { | ||
| + | // Si rompe la ejecución por medidas defensivas del cliente, se mantiene en false | ||
| + | } | ||
| + | |||
| + | // ========================================== | ||
| + | // CAPA 3: LÓGICA DE DETECCIÓN INVERSA (MODO CONTENCIÓN FRONTAL) | ||
| + | // ========================================== | ||
| + | setTimeout(() => { | ||
| + | if (!auditoriaOk) { | ||
| + | document.getElementById(' | ||
| + | <div style=" | ||
| + | <p style=" | ||
| + | [ ANOMALÍA: BLOQUEO CRÍTICO DE AUDITORÍA DETECTADO ] | ||
| + | </ | ||
| + | |||
| + | <p style=" | ||
| + | "Vaya, veo que no he obtenido absolutamente ningún dato de su computadora. | ||
| + | Si estaba tan bien protegida accediendo a un servidor web local y privado, | ||
| + | es porque sabe ocultarse muy bien." | ||
| + | </ | ||
| + | |||
| + | <div style=" | ||
| + | <p style=" | ||
| + | 🚨 AVISO DE VIOLACIÓN DE PROTOCOLO PERICIAL: | ||
| + | </ | ||
| + | <p style=" | ||
| + | "Este proceso no está supuesto a ser bloqueado. Si aparece este mensaje, es una | ||
| + | evidencia inequívoca de un ataque deliberado para detener el proceso de registro | ||
| + | en curso y enmascarar la identidad del cliente." | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | <p style=" | ||
| + | > ACCIÓN: Interrupción forzosa de la telemetría estándar. El motor local ha catalogado este vector como ' | ||
| + | </ | ||
| + | </ | ||
| + | `; | ||
| + | } | ||
| + | }, 800); | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||