/* global React, ReactDOM */ const { useState, useEffect } = React; const { Icon, useReveal, Navbar, Footer, useSiteTweaks, SiteTweaks, PrivacyBox, Galeria } = window; const SHOTS = [ { src: "assets/maperit/visor_caso.webp", t: "MaPeriT.TN · Panel del caso", d: "Caso abierto en el visor: equipo, fases de adquisición capturadas, artefactos, anomalías y tamaño total." }, { src: "assets/maperit/visor_riesgos.webp", t: "MaPeriT.TN · Puntuación de riesgo", d: "Correlación del análisis profundo: cada usuario, servicio o dispositivo con su puntuación y nivel, coloreado por gravedad." } ]; const MAPERIT_EMAIL = "maperit@masoft.es"; // Compensación de scroll: navbar principal (72) + subcabecera MAPerit (~52). const NAV_OFFSET = 126; // Secciones de la subcabecera propia de MAPerit. const SECTIONS = [ { id: "que-es", label: "Qué es" }, { id: "flujo", label: "Flujo forense" }, { id: "programas", label: "Los 5 programas" }, { id: "pantallas", label: "Pantallas" }, { id: "estandares", label: "Estándares" }, { id: "publico", label: "Para quién" }, { id: "entregables", label: "Entregables" }, { id: "contacto", label: "Contacto" } ]; const scrollToId = (id) => { const el = document.getElementById(id); if (!el) return; const y = el.getBoundingClientRect().top + window.pageYOffset - NAV_OFFSET; window.scrollTo({ top: Math.max(0, y), behavior: "smooth" }); }; /* ---------- Subcabecera propia de MAPerit ---------- */ const MPSubnav = ({ active }) => (
); /* ---------- El flujo forense ---------- */ const PIPELINE = [ { k: "1", label: "Adquisición", sub: "SW · OF", desc: "Se recogen las evidencias del equipo (encendido) o del disco (apagado), siempre en solo lectura." }, { k: "2", label: "Análisis", sub: "AN", desc: "Se interpretan las evidencias: sistema de ficheros, eventos, navegadores, antiforense y correlación." }, { k: "3", label: "Revisión", sub: "TN · SC", desc: "El perito explora los hallazgos con el visor; el cliente los consulta con el asistente guiado." }, { k: "4", label: "Informe", sub: "Entrega", desc: "Informe pericial HTML autocontenido en español, con firmas, apto para presentación en juzgado." } ]; /* ---------- Los 5 programas ---------- */ const PROGRAMS = [ { id: "sw", code: "MaPeriT.SW", version: "v1.7.4", title: "Adquisición forense en vivo", tagline: "Recoge todas las evidencias de un equipo Windows encendido en una sola ejecución, sin modificar nada.", forWho: "Cuando el equipo objetivo está encendido y accesible.", caps: [ "10 fases por orden de volatilidad (RFC 3227): datos volátiles, sistema, MFT, registro, eventos, navegadores, comunicaciones, nube, USB y persistencia.", "Opera en solo lectura y sin ninguna conexión de red.", "Cadena de custodia automática: cada evidencia se firma con SHA-256 en el momento de su adquisición.", "Análisis incluido: detección de anomalías en 9 categorías, extracción de IOC y timeline unificada de más de doce fuentes.", "Acceso a ficheros que el sistema mantiene bloqueados: bases de datos de navegadores, logs de seguridad activos.", "Modos avanzados: -DryRun, -SelfTest, -ExcludePaths, -NetworkIsolationCheck, -ChainOfCustodyStrictMode." ] }, { id: "of", code: "MaPeriT.OF", version: "v1.1.1", title: "Adquisición forense offline", tagline: "Trabaja sobre el disco de un equipo apagado o extraído, sin arrancar su sistema operativo.", forWho: "Cuando el equipo está apagado, es inaccesible o solo se dispone del disco.", caps: [ "Sistema de ficheros completo, registro de Windows offline, registros de eventos, navegadores, USB y nube, persistencia y tareas.", "No escribe absolutamente nada en el disco objetivo; toda la salida va al equipo forense.", "Misma estructura de salida que MaPeriT.SW: compatible de forma directa con AN y TN.", "Compatible con bloqueador de escritura hardware para garantizar la inmutabilidad del disco.", "Cadena de custodia SHA-256 idéntica a la de la adquisición en vivo." ] }, { id: "an", code: "MaPeriT.AN", version: "v1.2.0", title: "Análisis forense profundo", tagline: "Interpreta las evidencias ya recogidas y construye una línea temporal de alta precisión con todo lo encontrado.", forWho: "Segundo paso del flujo: consume la salida de SW u OF, sin volver a tocar el equipo original.", caps: [ "Sistema de ficheros en profundidad: ficheros borrados, árbol reconstruido y detección de manipulación de marcas de tiempo (timestomping).", "Procesado masivo de registros de eventos sin truncar ni muestrear, para investigaciones largas.", "Historial completo de navegadores, caché de ejecución de aplicaciones, diario de cambios del sistema de ficheros y artefactos de precarga.", "Detecta programas ejecutados aunque no queden eventos de proceso.", "Correlación multi-fuente: timeline unificada y puntuación de riesgo por cada usuario y proceso detectado.", "No destructivo por diseño: nunca escribe en el directorio de evidencias." ] }, { id: "tn", code: "MaPeriT.TN", version: "v1.1.1", title: "Visor forense interactivo", tagline: "Interfaz de escritorio para navegar, visualizar y marcar los hallazgos, sin instalación y sin internet.", forWho: "El perito, durante la revisión de un proyecto SW/OF, con o sin el análisis de AN.", caps: [ "Seis visores especializados: CSV, eventos EVTX, MFT, JSON, texto/log y hexadecimal, con filtrado, ordenación y exportación.", "Detección automática de IOC al cargar, con resaltado por severidad.", "Timeline consolidada multi-fuente con capacidad para decenas de miles de eventos.", "Sistema de marcadores a nivel de fichero, fila o celda, con severidad, etiqueta y nota; exportables como informe HTML o CSV.", "Búsqueda global en todos los ficheros del proyecto en segundo plano.", "Dashboard del proyecto: fases presentes, artefactos, anomalías y estado de cada fase." ] }, { id: "sc", code: "MaPeriT.SC", version: "v1.0.0", title: "Consulta guiada para no peritos", tagline: "Respuestas concretas sobre lo ya analizado, para un cliente o una parte interesada, sin interpretar ficheros técnicos.", forWho: "Quien no es perito informático y necesita entender qué pasó y cuándo.", caps: [ "Asistente de 8 pasos con variables predefinidas: usuario, categoría, ventana temporal, franja horaria y palabra clave.", "Ofrece una lista real de usuarios detectados en el proyecto, no un campo de texto libre.", "Distingue siempre si el usuario de un hallazgo viene confirmado por la fuente o inferido de la ruta del fichero.", "Cada resultado cita la fuente exacta y la ruta del fichero de MaPeriT.AN donde se encontró.", "Genera dos informes de los mismos hechos: uno pericial formal y otro en lenguaje llano.", "Independiente de MaPeriT.TN: ninguno de los dos necesita al otro." ] } ]; const STANDARDS = [ { s: "RFC 3227 (IETF)", a: "Las fases de adquisición siguen estrictamente el orden de volatilidad — lo más efímero primero — y la cadena de custodia se documenta de forma automática." }, { s: "NIST SP 800-86", a: "Metodología de adquisición, verificación de integridad y documentación de procedimientos conforme a la guía del Instituto Nacional de Estándares de EE. UU." }, { s: "FIPS 180-4", a: "Todas las evidencias se firman con SHA-256 en el momento exacto de su adquisición; cualquier modificación posterior queda detectada al recalcular la huella." } ]; const AUDIENCE = [ { icon: "check", h: "Peritos judiciales informáticos", p: "Un flujo completo de adquisición a informe, con cadena de custodia y salida apta para juzgado." }, { icon: "file-text", h: "Despachos de abogados", p: "El módulo de consulta guiada traduce el informe pericial a un resumen en lenguaje llano para el cliente." }, { icon: "lock", h: "Respuesta a incidentes y compliance", p: "Adquisición en vivo u offline, detección de IOC y timeline unificada para reconstruir qué ocurrió." }, { icon: "search", h: "Investigaciones internas autorizadas", p: "Sobre equipos de la propia organización, con autorización explícita y trazabilidad completa." } ]; const DELIVERABLES = [ { h: "Paquete de evidencias estructurado", p: "Carpeta organizada por fase con todos los artefactos en su formato original, más el manifiesto de integridad SHA-256." }, { h: "Timeline unificada", p: "Fichero CSV con todos los eventos de todas las fuentes, ordenados cronológicamente." }, { h: "Informe pericial HTML", p: "Documento autocontenido en español con portada, hallazgos, anomalías, IOC y bloque de firmas. Apto para presentación en juzgado por un perito habilitado." }, { h: "Resumen en lenguaje llano (opcional)", p: "Con MaPeriT.SC, los mismos hechos explicados en frases sencillas para quien no es técnico." } ]; /* ---------- Pipeline ---------- */ const Pipeline = () => (
{PIPELINE.map((p, i) => (
{p.k}
{p.label} {p.sub}

{p.desc}

))}
); /* ---------- Tarjeta de programa ---------- */ const ProgramCard = ({ p }) => (
{p.code} {p.version}

{p.title}

{p.tagline}

Cuándo se usa: {p.forWho}

); /* ---------- Formulario de contacto independiente ---------- */ const MaperitContact = () => { const [form, setForm] = useState({ name: "", email: "", company: "", phone: "", message: "", accept: false }); const [state, setState] = useState("idle"); // idle | sending | done | error const [showTerms, setShowTerms] = useState(false); const submit = async (e) => { e.preventDefault(); if (!form.name || !form.email || !form.message || !form.accept) return; setState("sending"); try { const res = await fetch("api/maperit_contact.php", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(form) }); const data = await res.json(); setState(data.ok ? "done" : "error"); } catch { setState("error"); } }; return (
Contacto MAPerit

Solicita información, una demostración o presupuesto.

Canal exclusivo de MAPerit. Escríbenos y te respondemos con la documentación técnica, los requisitos de despliegue y las condiciones de licenciamiento.

Cuéntanos tu caso — tipo de peritación, número de equipos, plazos — y preparamos una propuesta a medida. Sin compromiso.

  • {MAPERIT_EMAIL}Consulta directa sobre MAPerit
  • Documentación bajo peticiónFichas técnicas y manuales de cada módulo
  • Demostración guiadaTe enseñamos el flujo completo sobre un caso de ejemplo
{state === "done" ? (

Solicitud enviada

Te responderemos a la mayor brevedad con la información de MAPerit.

) : (
setForm({ ...form, name: e.target.value })} required/>
setForm({ ...form, email: e.target.value })} required/>
setForm({ ...form, company: e.target.value })}/>
setForm({ ...form, phone: e.target.value })}/>