// PEN Landing — HackStory // Auto-cycling 5-scene illustration of a phishing → transfer scam, // ending with PEN's intervention. Replaces the techy LiveConsole in the hero. const { useState: useStateHS, useEffect: useEffectHS } = React; const SCENES = [ { tag: "Lun 08:42", chip: "Día normal", title: "Llega un correo del director", body: "Pide a contabilidad transferir S/ 42.000 urgente a un proveedor.", visual: "inbox", ui: { app: "Gmail", tab: "Bandeja de entrada · Trabajo" } }, { tag: "Lun 08:43", chip: "El detalle invisible", title: "Parece su correo. No lo es.", body: "El dominio está cambiado por una letra. Imposible verlo de pasada.", visual: "lookalike", ui: { app: "Outlook", tab: "Verificación de remitente" } }, { tag: "Lun 09:15", chip: "La transferencia sale", title: "Contabilidad procesa el pago", body: "BBVA Perú confirma envío. El dinero entra en una cuenta en el extranjero.", visual: "bank", ui: { app: "BBVA Net Cash", tab: "Transferencias · Confirmación" } }, { tag: "Lun 14:00", chip: "El descubrimiento", title: "El director nunca envió ese correo", body: "Demasiado tarde. Recuperar el dinero es prácticamente imposible.", visual: "alert", ui: { app: "WhatsApp Business", tab: "Dirección general" } }, { tag: "Con PEN", chip: "Resultado real", title: "El correo nunca llega al buzón", body: "PEN Mail Shield detecta la suplantación y lo aísla. Tu equipo nunca lo ve.", visual: "shield", ui: { app: "PEN Mail Shield", tab: "Cuarentena · amenaza contenida" } }]; function HackStory() { const [idx, setIdx] = useStateHS(0); const [auto, setAuto] = useStateHS(true); useEffectHS(() => { if (!auto) return; const t = setInterval(() => setIdx((i) => (i + 1) % SCENES.length), 8000); return () => clearInterval(t); }, [auto]); const goto = (i) => {setAuto(false);setIdx(i);}; const isFinal = idx === SCENES.length - 1; return (
{/* window chrome */}
CÓMO OCURRE UN ATAQUE REAL
caso · BEC
{/* progress timeline */}
{SCENES.map((s, i) => )}
{/* stage */}
{SCENES.map((s, i) =>
{/* fake browser/app tab bar to make it feel like a real interface */}
{s.ui.app} {s.ui.tab}
{s.chip} {s.tag}

{s.title}

{s.visual === "inbox" && } {s.visual === "lookalike" && } {s.visual === "bank" && } {s.visual === "alert" && } {s.visual === "shield" && }
{s.body}
)}
{auto ? "▸ reproducción automática" : "▸ pausado — pulsa un paso"}
); } // ──────────────────────────────────────────────────────────────── // Scene visuals — small static illustrations made with HTML/CSS. // ──────────────────────────────────────────────────────────────── function HSInbox() { return (
Bandeja de entrada
Cliente AcmePedido — confirmaciónayer
Director General URGENTE — transferencia proveedor 08:42
NewsletterBoletín sector08:30
); } function HSLookalike() { return (
Correo recibido director@empresa-soIuciones.com
Correo real director@empresa-soluciones.com
Icapital i
llower L
); } function HSBank() { return (
De BBVA ·· 0011 ···· 4521
– S/ 42.000,00
A PL ·· 4427 ···· 0099
transferencia ejecutada · 09:15
); } function HSAlert() { return (
!
¿Qué transferencia? Yo no envié ese correo.
— Director, 14:00
DAÑO – S/ 42.000
); } function HSShield() { return (
Correo bloqueado por PEN Mail Shield
Dominio look-alike marcado
Equipo notificado · cero impacto
); } Object.assign(window, { HackStory });