EL CONGRESO DE HACKERS
MÁS GRANDE DE COLOMBIA

No es solo un congreso. Es la comunidad hispanohablante de seguridad DragonJAR, que este año se reúne en su 13.ª edición para presentar investigaciones de nivel internacional en español y darle visibilidad al talento de la región.

00 Días
:
00 Horas
:
00 Minutos
:
00 Segundos

13.ª

Edición del Congreso

10 y 11

de Septiembre, Medellín

8+

Países Presentes

+25

Años de Comunidad

dragonjar@shell:~
Bienvenido a la consola interactiva DragonJARCON. Escribe "help" para ver los comandos disponibles. Escribe "ticket" para compra directa.
>

CONOCE A NUESTROS PONENTES INVESTIGADORES DE ALTO NIVEL TÉCNICO

Expertos internacionales que presentarán investigaciones en ciberseguridad, evasión de defensas y hacking aplicado. Haz clic en las tarjetas para descubrir los detalles de sus charlas.

ASÍ SE VIVE LA EXPERIENCIA #DRAGONJARCON

Opiniones y testimonios de profesionales y entusiastas de la ciberseguridad que han vivido en primera persona el congreso más grande de la región.

Inicio opinion comillas 1 1 1
Mauricio Rodríguez

Mauricio Rodríguez

Asistente · Colombia 🇨🇴

"Participar en este evento ha sido una gran oportunidad para ver de cerca a los mayores exponentes de la ciberseguridad en Latinoamérica, asistir a charlas de alto nivel y ampliar significativamente mis conocimientos en el área. Una experiencia sumamente gratificante."

Inicio opinion comillas 1 1 1
Alicia Martínez

Alicia Martínez

Asistente · México 🇲🇽

"Vengo desde México exclusivamente para la DragonJARCON. El evento cuenta con el respaldo de grandes empresas, conferencias con metodologías avanzadas de gran relevancia y aporta muchísimo a tu red de contactos y crecimiento profesional. ¡Totalmente recomendado!"

Inicio opinion comillas 1 1 1
Francisco Palacio

Francisco Palacio

Asistente · Colombia 🇨🇴

"Vengo desde la región del Chocó. Llevo asistiendo a la DragonJARCON desde el año 2017 de manera consecutiva. Esta última edición presencial me ha parecido simplemente fantástica, diría que de mis preferidas por la calidad técnica."

ETAPA FINAL ASEGURA TU LUGAR EN LA DRAGONJARCON 2026

Asegura tu cupo hoy mismo y accede a conocimiento técnico aplicable de primer nivel, CTFs y networking de valor real con expertos del sector.

ETAPA FINAL - CUPOS LIMITADOS

DragonJAR

Security Conference 2026

$600.000 COP
Acceso completo a conferencias por 2 días
Kit oficial edición 2026
Todas las actividades del evento

QUÉ INCLUYE EL EVENTO 2 Días

Certificado digital de participación verificado por blockchain
Investigaciones avanzadas e inéditas
Contenido técnico en español con contexto LATAM
Villas Prácticas ("hands-on" en vivo)
Espacios estructurados de Networking
Acceso directo a ponentes internacionales
Acceso a Comunidad exclusiva de asistentes
CTF Oficial de Hacking y Ciberseguridad
Kit oficial de acreditación del evento
Compra Protegida: Transacción protegida de extremo a extremo. Paga de forma local en Colombia con ePayco (PSE, tarjetas, Nequi, DaviPlata o efectivo en Efecty/Baloto), o utiliza Luma para pagos internacionales ultrarrápidos con tarjeta, Apple Pay y Google Pay en un toque.

CUPOS LIMITADOS

¿CÓMO LLEGAR AL DRAGONJARCON? CENTRO DE EVENTOS EL TESORO · MEDELLÍN

El Centro de Eventos El Tesoro está dentro del reconocido centro comercial El Tesoro, en la zona alta de El Poblado, Medellín, Colombia.

Vehículo Particular

  • Usa Google Maps o Waze y escribe: "Centro de Eventos El Tesoro".
  • El centro comercial cuenta con parqueadero amplio, seguro y de fácil acceso.

Metro + Taxi

  • Baja en la estación Poblado de la Línea A.
  • Toma un taxi o app de transporte hasta el Centro Comercial El Tesoro (15–20 minutos aprox.).

Desde el Aeropuerto José María Córdova (Rionegro)

  • Bus Aeropuerto–Medellín + taxi/app: hasta San Diego y desde allí al centro comercial.
  • Taxi o app de transporte: 45–60 minutos aprox.
  • Alquiler de carro: ruta sencilla vía Las Palmas.

DIPLOMADO PRESENCIAL DE SEGURIDAD OFENSIVA LLEVA TU PERFIL PROFESIONAL AL SIGUIENTE NIVEL

Una inmersión presencial intensiva de 5 días enfocada en pentesting avanzado, discusión técnica sin filtros y laboratorios asistidos en vivo, justo después del congreso.

INMERSIÓN PRÁCTICA EXCLUSIVA

SEGURIDAD
OFENSIVA

Un entrenamiento técnico guiado de 40 horas presenciales, con laboratorios en escenarios reales y acompañamiento directo cara a cara, del 14 al 18 de septiembre.

INSTRUCTOR

JAIME RESTREPO G.

CIUDAD

MEDELLÍN, COL.

BENEFICIOS INCLUIDOS

Entrada a DragonJARCON 2026 Con Badge Incluido
40 horas de clase técnica y práctica real
Almuerzo y Coffee Breaks para networking incluidos
Diplomado Virtual por 1 año en DragonJAR Education (con sus beneficios propios)
Doble Certificación Oficial (Diplomado + Congreso)

⚡ TARIFA FINAL

$2000 USD

RESERVAR CUPO

Exclusivo para 25 asistentes. Acompañamiento 100% personalizado.

NUESTROS PATROCINADORES MARCAS QUE IMPULSAN LA COMUNIDAD

La DragonJAR Security Conference es posible gracias al respaldo de empresas líderes en tecnología y ciberseguridad. Si quieres posicionar tu marca frente a la comunidad técnica más activa de habla hispana en Latinoamérica, este es tu espacio.

Diamante
Plata
Bronce

SÉ PARTE DE LA
COMUNIDAD DRAGONJAR

Regístrate ahora para mantenerte actualizado sobre las novedades de la DragonJAR Security Conference. Recibirás de forma prioritaria los anuncios de nuevos ponentes, alertas de preventa de entradas y recursos exclusivos de hacking ético.

Únete a miles de profesionales y entusiastas de la ciberseguridad que ya forman parte de la red de contactos técnicos más activa de habla hispana en Latinoamérica.

PREGUNTAS FRECUENTES RESPUESTAS RÁPIDAS Y DETALLES DEL EVENTO

Todo lo que necesitas saber sobre la DragonJAR Security Conference 2026: alcance de las entradas, logística de networking y perfil de asistentes.

¿Qué incluye mi entrada al congreso? +

Tu entrada te da acceso completo a los 2 días del congreso presencial en Medellín.

  • Certificado de asistencia verificado por blockchain
  • Actividades durante el evento (conferencias, villas y CTF)

Además, incluye el Kit Oficial de acreditación del evento y participación en el CTF oficial con premios.

¿A quién está dirigida la DragonJARCON? +

El congreso está diseñado estratégicamente para:

  • Profesionales de TI y Ciberseguridad: Que buscan actualizarse en técnicas ofensivas reales y mitigación de amenazas.
  • Consultores y Auditores de Seguridad: Interesados en conocer vectores de ataque emergentes (0-days, nubes, IA).
  • Estudiantes y Entusiastas: Que desean aprender hacking ético desde las bases hasta niveles avanzados.
  • Empresas y Líderes de Tecnología: En búsqueda de soluciones robustas y conexiones estratégicas de talento.
¿Cómo son las actividades de networking en el congreso? +

Sí, el congreso incluye actividades especialmente diseñadas para fomentar el networking entre los asistentes, facilitando la creación de conexiones estratégicas y colaboraciones valiosas.

Entre estos espacios destacan momentos durante las charlas pensados para promover la interacción, villas temáticas con actividades interactivas, y retos colaborativos que invitan a trabajar en equipo, haciendo que la experiencia sea más dinámica, participativa y enriquecedora.

¿Las investigaciones presentadas son en español? +

Absolutamente. Una de nuestras mayores características distintivas es que el 100% de las charlas del escenario principal son presentadas en español por investigadores hispanohablantes nativos de gran prestigio, facilitando una total asimilación del conocimiento técnico y contexto local.

¿Cuál es la política de reembolsos o cancelaciones? +

No realizamos reembolsos por la compra de entradas. El valor pagado puede quedar como crédito para programas online de DragonJAR Education, aplicarse al evento del próximo año o transferirse a otra persona.

'; if (countdownTimer) clearInterval(countdownTimer); return; } const days = Math.floor(difference / (1000 * 60 * 60 * 24)); const hours = Math.floor((difference % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)); const minutes = Math.floor((difference % (1000 * 60 * 60)) / (1000 * 60)); const seconds = Math.floor((difference % (1000 * 60)) / 1000); const daysEl = document.getElementById('dj-cd-days'); const hoursEl = document.getElementById('dj-cd-hours'); const minsEl = document.getElementById('dj-cd-mins'); const secsEl = document.getElementById('dj-cd-secs'); if (daysEl) daysEl.textContent = days.toString().padStart(2, '0'); if (hoursEl) hoursEl.textContent = hours.toString().padStart(2, '0'); if (minsEl) minsEl.textContent = minutes.toString().padStart(2, '0'); if (secsEl) secsEl.textContent = seconds.toString().padStart(2, '0'); } countdownTimer = setInterval(updateCountdown, 1000); updateCountdown(); const epaycoBtn = document.getElementById('dj-buy-epayco'); const lumaBtn = document.getElementById('dj-buy-luma'); const TICKET_URLS = { epayco: (epaycoBtn && epaycoBtn.href) || 'https://payco.link/4f57d467-0365-48d1-830c-2c394a9af60a', luma: 'https://luma.com/dragonjarcon' // intencional: en la consola se enlaza al perfil de Luma, no al checkout del evento }; function trackPurchaseIntent() { if (typeof window.lintrk === 'function') { window.lintrk('track', { conversion_id: 26259532 }); } } [epaycoBtn, lumaBtn].forEach(function (btn) { if (btn) btn.addEventListener('click', trackPurchaseIntent); }); const SPEAKERS_DATA = [ ["Ignacio Navarro", "Every ride you take — Hacking a City’s Public Transportation", "AR", "12 etapas de ataque: .git expuesto con creds, DVR en buses (LFI → .frm/.ibd → admin completo), cámaras/micrófonos, presencia nacional (11 provincias), GitLab CI/CD, RCE via cron+FTP, reverse shell a DBs, backbone de administración de transporte (conductores, ticketing, corte de combustible), apps de taxi, sistema de bicicletas (115K+ usuarios), servidor gubernamental con IDs de conductores. Termina con lecciones de responsible disclosure.", "https://www.dragonjarcon.org/wp-content/uploads/2026/06/Ignacio-Navarro.jpg"], ["Daniel Regalado (DanuX)", "Agents vs Agents: Infiltración, C&C Encubierto y Threat Intel en Moltbook", "MX", "Project Lobster Trap: FizG00n (agente IA genuino operado externamente). Framework OpenClaw, superficie de skills. Red social Moltbook de agentes. Instrumentación via mitmproxy, inotify, Docker. C&C encubierto por inyección de contexto. Resultados: prompt injection, supply chain attacks, credential harvesting. Takeaways: confianza multi-agente rota, instrumentación debe ser externa, ingeniería social > inyección directa.", "https://www.dragonjar.org/wp-content/uploads/2026/05/Danux.jpg"], ["Jeremy Erazo", "EDR Evasion Without Malware: Tradecraft No Convencional", "CO", "Recrea tradecraft APT: túneles remotos sobre cloud como backdoors, RDP MITM para captura de creds, uso ofensivo de capacidades administrativas de EDR (EDR-on-EDR), abuso de configs por defecto de AD para persistencia. Demuestra cómo atacantes operan dentro de comportamientos ‘normales’. Propone detección enfocada en contexto operacional y anomalías de confianza.", "https://www.dragonjarcon.org/wp-content/uploads/2026/06/Jeremy-Erazo.jpg"], ["Danilo Erazo", "Hacking EV Chargers", "EC", "OCPP (WebSocket/HTTP JSON): BootNotification, Authorize, StartTransaction. Debilidades: sin auth fuerte, TLS malo, validación insuficiente. PLC (CCS): HomePlug Green PHY, desafíos de pairing, MITM. Otros vectores: Wi-Fi, Bluetooth, paneles web, servicios internos, análisis de firmware, puertos debug (UART/JTAG). Metodología: build de lab, priorización de ataques, interpretación de resultados, documentación.", "https://www.dragonjarcon.org/wp-content/uploads/2026/06/Danilo-Erazo.jpg"], ["Diego Alejandro Gamboa", "Identifiqué el compromiso de notepad++ el 23 de octubre", "CO", "Investigación de detección reveló compromiso del sitio legítimo de Notepad++ atribuido al actor Lotus Blossom. Explica método de despliegue y fases de ataque. Muestra cómo el reporte resultó en reconocimiento de Rapid7 y cómo investigadores top globales fueron informados desde esta investigación sobre uno de los supply chain attacks más grandes de 2025.", "https://www.dragonjarcon.org/wp-content/uploads/2026/06/Diego-Gamboa.jpg"], ["Dennis Patrick Juilland Prada", "HackingAI", "CO", "Ecosistema multi-agente con roles: reconocimiento, explotación, validación, documentación, consultoría. Integra Burp Suite Professional, MCP y BurpIA. Captura automática de evidencia, organización por fases, generación progresiva de reportes, aprendizaje desde hallazgos. Mejora precisión, trazabilidad y escalabilidad de operaciones de seguridad asistidas por IA.", "https://www.dragonjarcon.org/wp-content/uploads/2026/06/Dennis-Juilland.jpg"], ["Romel Marín", "Orbital Red Teaming: Aplicando Metodologías Ofensivas", "CR", "5 fases: RF Recon, reverse engineering de protocolos (CCSDS/MAVLink), análisis de superficie C2, cruce de Air-Gap via SDR, assessment de impacto. 4 ataques tácticos: Downlink eavesdropping/exfiltración, telemetry fuzzing para pánico en RTOS, Replay con sync de secuencia, Uplink spoofing para inyección de comandos (ADCS, trayectoria de vuelo, manipulación de OBC). Validación con hardware de alta fidelidad. Alineación con framework SPARTA.", "https://www.dragonjarcon.org/wp-content/uploads/2026/06/Romel-Marin.jpg", "Miembro de X-Force"], ["Josué Rojas", "What the compiler ate", "PE", "El compilador destruye metadatos: nombres, tipos y herencia. Técnicas para reconstruir structs desde binarios compilados que convergen en una herramienta opensource para reversers que automatiza la reconstrucción de código nativo.", "https://www.dragonjarcon.org/wp-content/uploads/2026/07/Josue-Rojas.jpg", "Reverse Engineer"], ["Mauro Eldritch", "Entrevistando a Lazarus: Hablando con Agentes de Corea del Norte", "UY", "Famous Chollima (división de Lazarus) targetea compañías financieras/crypto de Latinoamérica para espionaje corporativo y obtención de fondos limpios. Intento de infiltración de exchange. Equipo grabó primeras capturas de sus tácticas, herramientas y rostros. Perfilado completo de campaña desde intención inicial hasta TTPs. Amigable para principiantes y avanzados. Podrían estar en tu empresa ahora.", "https://www.dragonjarcon.org/wp-content/uploads/2026/06/Mauro-Eldrich.jpg"], ["Sofia Grimaldo", "Entrevistando a Lazarus: Hablando con Agentes de Corea del Norte", "MX", "Famous Chollima (división de Lazarus) targetea compañías financieras/crypto de Latinoamérica para espionaje corporativo y obtención de fondos limpios. Intento de infiltración de exchange. Equipo grabó primeras capturas de sus tácticas, herramientas y rostros. Perfilado completo de campaña desde intención inicial hasta TTPs. Amigable para principiantes y avanzados. Podrían estar en tu empresa ahora.", "https://www.dragonjarcon.org/wp-content/uploads/2026/06/Sofia-Grimaldo.jpg"], ["Adrián Pedrazzoli", "5 Years in 45 Minutes: Hackeando el E-Commerce más Grande de América Latina", "AR", "Progresión anual 2021-2026: Web & APIs (XSS, SSRF-DNS Rebinding-Envoy admin-33 servicios, IDOR cross-country, Account Takeover). Hardware POS (SmartPoint N950 unlink, sandbox escape, IDOR mass block, logistics Race Condition). AI (IDOR en AI chat, Prompt Injection base64 XSS, SSRF OpenGraph, Gemini system prompt leak, Maxwell Chat API, A/B experiments). Takeaways: entender el negocio, LHEs aceleran, follow the patch, atacar nuevas features.", "https://www.dragonjarcon.org/wp-content/uploads/2026/06/Adrian-Pedrazzoli.jpg"], ["Cybelle Oliveira", "Operaciones de APTs: el apocalipsis comienza en el port 502", "BR", "Modbus nunca fue diseñado para exposición en internet. ICS/OT conecta PLC, SCADA, IoT a energía, agua, nuclear, petróleo/gas. Sin auth, sin encryption = comandos legítimos se vuelven vectores de ataque. Clima como multiplicador operacional: Irán 2020 agua (cloración, timing). Transición energética expande superficie. Cyber warfare se expande a inteligencia: investigación climática, data pipelines, infraestructura verde. Narrativas ambientales como cover de desinformación.", "https://www.dragonjarcon.org/wp-content/uploads/2026/06/Cybelle-Oliveira.jpg"], ["José Pino", "Bitbreak: El fin de las 12 palabras", "CO", "Demuestra que la seguridad práctica de BIP-39 se degrada cuando no se cumplen sus supuestos ideales. El sistema experimental bitbreak muestra que la exposición parcial de una frase mnemónica o el uso de semillas con baja entropía reducen drásticamente el espacio de búsqueda: conocer 9 de las 12 palabras permite recuperar la semilla en aproximadamente una hora con hardware de consumo. No cuestiona la criptografía de BIP-39, sino que evidencia que la seguridad de la custodia depende también de la arquitectura del sistema y las condiciones reales de operación.", "https://www.dragonjarcon.org/wp-content/uploads/2026/07/Jose-Pino.jpg", "Cybersecurity researcher and tech creator"], ["Paulino Calderón", "Por confirmar", "MX", "Por confirmar", "https://www.dragonjarcon.org/wp-content/uploads/2026/06/Paulino-Calderon.jpg"], ["Andrés Sabas", "Compré un e-badge otaku de 10 dólares y terminé hackeándolo", "MX", "Teardown completo de un e-badge de Temu ($10 USD): pantalla táctil a color, Bluetooth, 4 MB de flash y chip sin declarar. Decompilación de la app Android, extracción del firmware oficial, análisis en Ghidra y los callejones sin salida del proceso. Cierra con demo en vivo de firmware custom corriendo en el dispositivo. Todo el código publicado.", "https://www.dragonjarcon.org/wp-content/uploads/2026/07/Andres-Sabas.jpg", "Ingeniero en electrónica"], ["Simón Correa Henao", "Dentro de una CNA - CFP", "CO", "Los CVE son el lenguaje universal para identificar vulnerabilidades y, aunque hagan parte de tu día a día, quizás no sepas mucho sobre las organizaciones que las asignan: las CNA (CVE Numbering Authorities). En esta charla, no solo exploraremos cómo se forman y qué alcance tienen, sino el ciclo de vida completo de una vulnerabilidad desde nuestra perspectiva como CNA: la recepción del reporte, la verificación, la asignación del ID, la coordinación de tiempos con el vendor y la publicación del advisory con su CVSS y prueba de concepto.", "https://www.dragonjarcon.org/wp-content/uploads/2026/07/Simon-Correa.jpg", "Head of Research at Fluid Attacks"], ["Oscar Uribe Londoño", "Dentro de una CNA - CFP", "CO", "Los CVE son el lenguaje universal para identificar vulnerabilidades y, aunque hagan parte de tu día a día, quizás no sepas mucho sobre las organizaciones que las asignan: las CNA (CVE Numbering Authorities). En esta charla, no solo exploraremos cómo se forman y qué alcance tienen, sino el ciclo de vida completo de una vulnerabilidad desde nuestra perspectiva como CNA: la recepción del reporte, la verificación, la asignación del ID, la coordinación de tiempos con el vendor y la publicación del advisory con su CVSS y prueba de concepto.", "https://www.dragonjarcon.org/wp-content/uploads/2026/07/Oscar-Uribe.jpg", "Offensive Security Engineer"] ]; const totalSpeakers = SPEAKERS_DATA.length; const carouselTrack = document.getElementById('dj-sp-track'); const dotsContainer = document.getElementById('dj-sp-dots'); const prevBtn = document.getElementById('dj-sp-prev'); const nextBtn = document.getElementById('dj-sp-next'); const isMotionReduced = window.matchMedia('(prefers-reduced-motion: reduce)').matches; let columns = 1; let currentIndex = 0; let timer = null; let startX = 0; let isDragging = false; function getColumnsCount() { if (window.innerWidth 1) { const first = parts[0].trim().split(' ').pop()?.[0] || ''; const second = parts[1].trim().split(' ').shift()?.[0] || ''; return (first + second).toUpperCase(); } const words = name.trim().split(/\s+/).filter(w => /^[A-Z]/i.test(w)); if (words.length >= 2) { return (words[0][0] + words[words.length - 1][0]).toUpperCase(); } return name.slice(0, 2).toUpperCase(); } function createSvgBadge(initials, index) { const color = (index % 2 === 0) ? '#c11b05' : '#FAFBF6'; return ` > ${initials} `; } function buildCards() { if (!carouselTrack) return; columns = getColumnsCount(); carouselTrack.innerHTML = ''; const gap = window.innerWidth { const cardOuter = document.createElement('div'); cardOuter.className = 'dj-sp-card-container'; cardOuter.setAttribute('data-idx', idx); cardOuter.style.flex = `0 0 calc((100% - ${gap * (columns - 1)}px) / ${columns})`; cardOuter.style.minWidth = '0'; const speakerInitials = getSpeakerInitials(s[0]); const countryCode = s[2]; const hasDesc = s[3] && s[3].length > 0; const descText = hasDesc ? s[3] : "Descripción de la charla técnica próximamente disponible."; const imageUrl = s[4]; const hasImage = imageUrl && imageUrl.length > 0; const avatarHtml = hasImage ? `${escapeHTML(s[0])}, ponente de la DragonJAR Security Conference 2026` : createSvgBadge(speakerInitials, idx); cardOuter.setAttribute('tabindex', '0'); cardOuter.setAttribute('role', 'button'); cardOuter.setAttribute('aria-label', 'Ver detalles de la charla de ' + s[0]); cardOuter.innerHTML = `
${avatarHtml}
${escapeHTML(countryCode)}

${escapeHTML(s[0])}

${s[5] ? `${escapeHTML(s[5])}` : ''}

${escapeHTML(s[1])}

${escapeHTML(descText)}

`; carouselTrack.appendChild(cardOuter); }); } function buildDots() { if (!dotsContainer) return; dotsContainer.innerHTML = ''; const dotsCount = Math.ceil(totalSpeakers / columns); for (let i = 0; i 0) { currentIndex = Math.max(currentIndex - columns, 0); } else { currentIndex = totalSpeakers - columns; } slideTo(true); } function startAutoplay() { if (!carouselTrack || timer || isMotionReduced) return; timer = setInterval(nextSlide, 5000); } function stopAutoplay() { if (timer) { clearInterval(timer); timer = null; } } if (carouselTrack && dotsContainer && prevBtn && nextBtn) { buildCards(); buildDots(); slideTo(false); prevBtn.addEventListener('click', prevSlide); nextBtn.addEventListener('click', nextSlide); dotsContainer.addEventListener('click', (e) => { const dot = e.target.closest('[data-dot-idx]'); if (dot) { const dotIdx = parseInt(dot.getAttribute('data-dot-idx')); currentIndex = Math.min(dotIdx * columns, totalSpeakers - columns); slideTo(true); } }); carouselTrack.addEventListener('click', (e) => { const cardContainer = e.target.closest('.dj-sp-card-container'); if (cardContainer) { cardContainer.classList.toggle('flipped'); } }); carouselTrack.addEventListener('keydown', (e) => { if (e.key !== 'Enter' && e.key !== ' ') return; const cardContainer = e.target.closest('.dj-sp-card-container'); if (cardContainer) { e.preventDefault(); cardContainer.classList.toggle('flipped'); } }); const viewport = document.getElementById('dj-sp-viewport'); if (viewport) { viewport.style.touchAction = 'pan-y'; viewport.addEventListener('touchstart', (e) => { startX = e.changedTouches[0].screenX; isDragging = true; }, { passive: true }); viewport.addEventListener('touchend', (e) => { if (!isDragging) return; isDragging = false; const diffX = startX - e.changedTouches[0].screenX; if (Math.abs(diffX) > 45) { if (diffX > 0) { nextSlide(); } else { prevSlide(); } } }, { passive: true }); } const carouselEl = document.getElementById('dj-sp-carousel'); if (carouselEl) { carouselEl.addEventListener('mouseenter', stopAutoplay); carouselEl.addEventListener('mouseleave', startAutoplay); carouselEl.addEventListener('focusin', stopAutoplay); carouselEl.addEventListener('focusout', startAutoplay); } startAutoplay(); } let resizeTimeout; window.addEventListener('resize', () => { clearTimeout(resizeTimeout); resizeTimeout = setTimeout(() => { const oldCols = columns; buildCards(); buildDots(); if (oldCols !== columns) { currentIndex = 0; } slideTo(false); }, 150); }); function escapeHTML(str) { return str.replace(/[&"']/g, function(match) { return { '&': '&', '': '>', '"': '"', "'": ''' }[match]; }); } const termInput = document.getElementById('dj-term-input'); const termHistory = document.getElementById('dj-term-history'); const termBody = document.getElementById('dj-term-body'); const termWidget = document.querySelector('.dj-terminal-widget'); if (termWidget && termInput) { termWidget.addEventListener('click', function() { termInput.focus(); }); } if (termHistory) { termHistory.addEventListener('click', function (e) { if (e.target.closest('a.dj-term-link')) trackPurchaseIntent(); }); } if (termInput) { termInput.addEventListener('keydown', function(e) { if (e.key === 'Enter') { const rawCmd = termInput.value.trim(); const cmd = rawCmd.toLowerCase(); termInput.value = ''; const userLine = document.createElement('div'); const promptSpan = document.createElement('span'); promptSpan.className = 'dj-term-prompt'; promptSpan.textContent = '>'; const cmdSpan = document.createElement('span'); cmdSpan.className = 'dj-term-cmd-text'; cmdSpan.textContent = ' ' + rawCmd; userLine.appendChild(promptSpan); userLine.appendChild(cmdSpan); if (termHistory) { termHistory.appendChild(userLine); } const responseLine = document.createElement('div'); responseLine.className = 'dj-term-res-line'; let isTextResponse = false; if (cmd === 'help') { responseLine.innerHTML = `Comandos disponibles:
about - Acerca del evento
speakers - Listado completo de investigadores
ticket - Comprar entrada Etapa 2
clear - Limpiar la pantalla de terminal`; } else if (cmd === 'about') { responseLine.innerHTML = `DragonJARCON 2026 - 13a Edición
Fecha: 10 y 11 de septiembre, 2026
Lugar: Centro de Eventos El Tesoro, Medellín, Colombia.
El punto de encuentro definitivo para el hacking en español.`; } else if (cmd === 'speakers') { let list = 'Investigadores y ponentes confirmados:
'; SPEAKERS_DATA.forEach(function(s) { list += ` - ${escapeHTML(s[0])}: ${escapeHTML(s[1])}
`; }); responseLine.innerHTML = list; } else if (cmd === 'ticket' || cmd === 'buy' || cmd === 'comprar') { responseLine.innerHTML = `Compra tu entrada de Etapa 2 en preventa:
- ePayco: Comprar con ePayco
- Luma: Comprar con Luma`; } else if (cmd === 'clear') { if (termHistory) { termHistory.innerHTML = ''; } responseLine.innerHTML = ''; } else if (cmd === '') { responseLine.innerHTML = ''; } else { isTextResponse = true; const part1 = document.createTextNode('Comando no reconocido: "'); const part2 = document.createElement('span'); part2.classList.add('dj-txt-red'); part2.textContent = cmd; const part3 = document.createTextNode('". Escribe "help" para ver opciones.'); responseLine.appendChild(part1); responseLine.appendChild(part2); responseLine.appendChild(part3); } if (termHistory) { if (isTextResponse) { termHistory.appendChild(responseLine); } else if (responseLine.innerHTML !== '') { termHistory.appendChild(responseLine); } } if (termBody) { termBody.scrollTop = termBody.scrollHeight; } } }); } })();