OpenRung
무료·프라이버시 우선 릴레이 네트워크로 개방형 인터넷 접근을 지원 오픈소스·비영리 운영
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗El visitante elige una clave secreta y cifra un mensaje en su celular con una Enigma I. Solo las letras cifradas viajan a la laptop, y la laptop rompe el mensaje en vivo con el ataque de Turing–Welchman (la Bombe), sin ver nunca la clave.
Celular Buzón Laptop (pantalla)
web/celular.html ──► Supabase: tabla mensajes ──► web/pantalla.html
elige la clave, (modo nube) pone los mensajes en cola,
escribe y cifra o servidor/servidor.js corre la Bombe (Web Worker)
(modo local) y enseña la clave encontrada
web/celular.html). El visitante gira las ruedas para elegir 3 rotores (de I a V)
y su posición inicial, y une hasta 4 pares de letras en el clavijero (o toca Al azar).
Después escribe su mensaje en el teclado: se encienden las lámparas, como en la máquina real.
Al tocar Transmitir, el celular manda solo el texto cifrado. Antes del mensaje, el celular
cifra siempre el mismo encabezado oficial, el crib FERIABEADRAGONENLAUSFQ (definido en
web/config.js). La clave nunca sale del teléfono.modo: "auto" en web/config.js):
mensajes de Supabase (web/nube.js).node servidor/servidor.js, el celular hace
POST /api/interceptar y el servidor guarda los mensajes en memoria (hasta 500).
La página sabe en qué modo está preguntando por /api/config: si responde JSON, hay
servidor local; si no, está en la nube.web/pantalla.html). Cada segundo lee del buzón los mensajes nuevos
(nube: mensajesDesde en web/nube.js; local: GET /api/mensajes?desde=N) y los pone en una
cola: se atienden todos, uno por uno, en orden de llegada. Al abrir la página no repite
los mensajes viejos. Con cada mensaje muestra la "estación de escucha" (las letras llegan una
por una), señala las primeras letras que esconden el crib, dibuja el menú de Turing del
mensaje y anima la búsqueda. Al final muestra el mensaje descifrado, los rotores, la posición
y los cables encontrados.
RESULTADO_MIN_MS).
Arriba a la derecha aparece "En cola: N mensajes" en rojo.VOLVER_A_ESPERA_MS),
vuelve la escena del QR.bombe/bombe2.js). En los dos modos corre en el navegador de la laptop, en un
Web Worker (web/bombe-web.js) para que la pantalla no se congele. Cada mensaje tiene
su propio Worker: un mensaje nuevo nunca interrumpe al que se está rompiendo.El problema: hay 60 formas de elegir y ordenar 3 rotores de 5, y 17 576 posiciones iniciales (26 × 26 × 26). Son 1 054 560 configuraciones de rotores. Encima está el clavijero, con muchísimas combinaciones de cables, así que probar todo a lo bruto no es una opción.
Lo que sí sabemos es que todo mensaje empieza con el crib. Con eso, bombe/bombe2.js hace esto:
web/enigma.js). Si sale exactamente el inicio del cifrado,
encontramos la clave y desciframos el mensaje completo.Ejemplo real con la clave II-V-I, posición KDQ, cables AM FT RX y el mensaje NOSVEMOSENLAFERIA:
| Paso | Cuántas quedan |
|---|---|
| Configuraciones de rotores | 1 054 560 |
| × 26 hipótesis para la letra de prueba | 27 418 560 |
| Pasan el primer ciclo | 1 097 574 |
| Sin contradicciones tras la propagación | 1 |
| Clave final (comprobada con la Enigma) | 1 |
En esta laptop eso tomó unos 4 segundos. La pantalla muestra estos mismos números al final de cada mensaje.
여기까지가 README 앞부분입니다. 나머지는 원문에서 읽을 수 있습니다. README 전문 보기 ↗