Files
Camilou.fr/HTML/TN/Crypto/test16.html
T
Camilla Schoeser ec81bcd634 ajout tout
2026-05-29 21:10:04 +02:00

222 lines
8.0 KiB
HTML

<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>TERMINAL_SIGNAL_V6</title>
<style>
@import url('https://fonts.googleapis.com/css2?family=Fira+Code:wght@300;700&display=swap');
:root {
--neon: #00ff41;
--dark-neon: #003300;
--alert: #ff003c;
--bg: #020202;
--paper: #f0f0f0;
}
body, html {
margin: 0; padding: 0;
background: var(--bg);
color: var(--neon);
font-family: 'Fira Code', monospace;
overflow: hidden; height: 100vh;
transition: background 0.3s ease;
}
/* --- EFFETS DE FOND HACKER --- */
#fx-overlay {
position: fixed; top: 0; left: 0; width: 100%; height: 100%;
background: linear-gradient(rgba(18, 16, 16, 0) 50%, rgba(0, 0, 0, 0.1) 50%),
linear-gradient(90deg, rgba(255, 0, 0, 0.03), rgba(0, 255, 0, 0.01), rgba(0, 0, 255, 0.03));
background-size: 100% 3px, 3px 100%;
pointer-events: none; z-index: 1000;
}
#data-stream {
position: fixed; top: 0; left: 0; width: 100%; height: 100%;
font-size: 10px; color: var(--dark-neon); opacity: 0.2;
white-space: pre; pointer-events: none; z-index: 1;
}
/* --- STRUCTURE DES CARTES --- */
#desk { position: relative; width: 100vw; height: 100vh; perspective: 1000px; z-index: 10; }
.card {
position: absolute;
width: 480px; padding: 25px;
background: rgba(0, 10, 0, 0.95);
border: 1px solid var(--neon);
box-shadow: 0 0 15px var(--dark-neon);
transition: all 0.6s cubic-bezier(0.23, 1, 0.32, 1);
display: none;
}
.card.active {
display: block;
animation: glitch-in 0.4s ease-out forwards;
}
.card.paused {
transform: scale(0.5) translateX(-150vw) rotate(-20deg) !important;
opacity: 0;
}
@keyframes glitch-in {
0% { transform: scale(1.5) translateY(-100px) skewX(20deg); opacity: 0; }
70% { transform: scale(1) translateY(5px) skewX(-5deg); opacity: 1; }
100% { transform: scale(1) translateY(0) rotate(var(--r)); opacity: 1; }
}
/* --- CONTENU --- */
h2 {
font-size: 1.2rem; margin: 0 0 15px 0;
border-left: 5px solid var(--neon); padding-left: 10px;
text-transform: uppercase; letter-spacing: 2px;
}
.blink { animation: blink-anim 1s infinite; }
@keyframes blink-anim { 0%, 100% { opacity: 1; } 50% { opacity: 0.3; } }
.code-block {
background: var(--dark-neon); color: var(--neon);
padding: 10px; font-size: 0.8rem; margin: 10px 0;
border: 1px dashed var(--neon);
}
/* --- L'AXOLOTL --- */
#axo-layer {
position: fixed; top: 0; left: 0; width: 100%; height: 100%;
background: var(--paper); color: #000;
display: none; flex-direction: column; justify-content: center; align-items: center;
z-index: 500; transition: opacity 0.3s;
}
#axo-layer.show { display: flex; animation: system-flash 0.5s steps(2); }
@keyframes system-flash {
0% { filter: invert(1); }
50% { filter: invert(0); }
100% { filter: invert(0); }
}
/* --- UI ELEMENTS --- */
#hud {
position: fixed; top: 20px; left: 20px; z-index: 2000;
font-size: 0.7rem; text-shadow: 0 0 5px var(--neon);
}
</style>
</head>
<body>
<div id="fx-overlay"></div>
<div id="data-stream"></div>
<div id="hud">
[ SYSTEM: <span class="blink">STABLE</span> ]<br>
[ NODE: TELECOM_NANCY_SRV ]<br>
[ DATA_STACK: <span id="counter">0/8</span> ]
</div>
<div id="desk">
<div class="card" id="c0" style="--r: -2deg; top: 10%; left: 8%;">
<h2>// 01_FUNDAMENTALS</h2>
<p>Analyse des piliers C.I.D.A :</p>
<div class="code-block">
> Confidentialité : AES-256 / X3DH<br>
> Intégrité : HMAC-SHA256<br>
> Authentification : Ed25519
</div>
</div>
<div class="card" id="c1" style="--r: 3deg; top: 15%; left: 52%;">
<h2>// 02_LEGACY_TRAFFIC</h2>
<p>Flux en clair (Danger) :</p>
<p>1982 [SMTP] -> 1992 [SMS]<br>Le protocole <span style="color:var(--alert)">Hop-by-Hop</span> expose les métadonnées et le contenu aux serveurs intermédiaires.</p>
</div>
<div class="card" id="c2" style="--r: -4deg; top: 48%; left: 12%;">
<h2>// 03_PIONEER_ERRORS</h2>
<p><span style="color:var(--alert)">PGP:</span> No Forward Secrecy.<br>Si la clé privée fuit, 10 ans d'archives tombent.</p>
<p><span style="color:var(--alert)">OTR:</span> Sync-Only.<br>Inutilisable sur réseau asynchrone (Mobile).</p>
</div>
<div class="card" id="c3" style="--r: 1deg; top: 45%; left: 55%;">
<h2>// 04_SIGNAL_PROTOCOL</h2>
<div class="code-block" style="border-color: var(--cyan); color: var(--cyan);">
RUN: Double_Ratchet.sh<br>
- KDF Chain Rotation<br>
- Diffie-Hellman Ratchet<br>
- Post-Quantum (PQXDH)
</div>
</div>
<div class="card" id="c4" style="--r: -1deg; top: 12%; left: 30%;">
<h2 style="border-color: var(--alert);">// 05_VULNERABILITIES</h2>
<p>Menaces persistantes :</p>
<ul>
<li>Quantum Shor Algorithm</li>
<li>Endpoint Infection (Pegasus)</li>
<li>Man-in-the-Middle (MITM)</li>
</ul>
</div>
<div class="card" id="c5" style="--r: 5deg; top: 52%; left: 38%;">
<h2>// 06_SOUVERAINETÉ</h2>
<p>Matrice de confiance :</p>
<p>MATRIX (Element) vs DISCORD.<br>Le choix entre <span style="color:var(--cyan)">Fédération E2EE</span> et <span style="color:var(--alert)">Silo Centralisé</span>.</p>
<div class="blink" style="text-align:center; font-size: 0.7rem; margin-top:20px;">[ EOF ]</div>
</div>
</div>
<div id="axo-layer">
<div style="font-size: 10rem;">🦦</div>
<h1 style="font-family: 'Space Mono'; letter-spacing: 10px; margin: 0;">CORE_X3DH</h1>
<div style="width: 60%; height: 2px; background: #000; margin: 20px 0;"></div>
<p>DÉPLOIEMENT DU SCHÉMA TECHNIQUE AU TABLEAU</p>
</div>
<script>
let step = 0;
const cards = document.querySelectorAll('.card');
const axo = document.getElementById('axo-layer');
const counter = document.getElementById('counter');
const stream = document.getElementById('data-stream');
// Génération du fond de données
let hex = "";
for(let i=0; i<500; i++) hex += (Math.random()*0xFFFFFF << 0).toString(16).padStart(6, '0') + " ";
stream.innerText = hex;
function next() {
if (step < 4) {
cards[step].classList.add('active');
step++;
counter.innerText = step + "/6";
}
else if (step === 4) {
// TRANSITION AXOLOTL
document.querySelectorAll('.card.active').forEach(c => c.classList.add('paused'));
axo.classList.add('show');
document.getElementById('hud').style.color = "#000";
step++;
}
else if (step === 5) {
// RETOUR DU BUREAU
axo.classList.remove('show');
document.querySelectorAll('.card.active').forEach(c => c.classList.remove('paused'));
document.getElementById('hud').style.color = "var(--neon)";
step++;
}
else if (step > 5 && step < 8) {
cards[step-2].classList.add('active');
step++;
counter.innerText = (step-2) + "/6";
}
}
window.addEventListener('keydown', e => {
if (e.key === 'ArrowRight' || e.key === ' ') next();
if (e.key === 'Escape') location.reload();
});
</script>
</body>
</html>