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

206 lines
7.7 KiB
HTML

<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>STREAM_DESTRUCT_v4</title>
<style>
@import url('https://fonts.googleapis.com/css2?family=Fira+Code:wght@300;700&display=swap');
:root {
--neon-green: #0f0;
--dim-green: #003300;
--bg: #000;
}
body, html {
margin: 0; padding: 0;
background: var(--bg);
color: var(--neon-green);
font-family: 'Fira Code', monospace;
overflow: hidden;
height: 100vh;
}
/* L'espace de collision des slides */
#stream-container {
position: relative;
width: 100vw;
height: 100vh;
}
.fragment {
position: absolute;
padding: 30px;
border: 1px solid var(--neon-green);
background: rgba(0, 0, 0, 0.9);
width: 600px;
box-shadow: 10px 10px 0px var(--dim-green);
display: none;
z-index: 10;
}
/* Effet de bruit / Grain */
.overlay {
position: fixed; top: 0; left: 0; width: 100%; height: 100%;
background: repeating-linear-gradient(0deg, rgba(0,0,0,0.15), rgba(0,0,0,0.15) 1px, transparent 1px, transparent 2px);
pointer-events: none; z-index: 100;
}
.fragment.active {
display: block;
animation: hit 0.2s ease-out;
}
@keyframes hit {
0% { transform: scale(1.2) rotate(5deg); filter: brightness(5); }
100% { transform: scale(1) rotate(var(--r)); filter: brightness(1); }
}
h2 {
background: var(--neon-green);
color: black;
display: inline-block;
padding: 0 10px;
text-transform: uppercase;
font-size: 1.2rem;
}
.meta { font-size: 0.7rem; opacity: 0.5; margin-bottom: 20px; }
.data-line { margin: 5px 0; border-bottom: 1px solid var(--dim-green); }
.critical { color: #f00; text-shadow: 0 0 5px #f00; }
table { width: 100%; border-collapse: collapse; margin-top: 10px; font-size: 0.8rem; }
th { text-align: left; border-bottom: 1px solid var(--neon-green); }
#noise-bg {
position: fixed; font-size: 0.6rem; color: var(--dim-green);
white-space: pre; pointer-events: none; z-index: 1;
}
</style>
</head>
<body>
<div class="overlay"></div>
<div id="noise-bg"></div>
<div id="stream-container">
<div class="fragment active" id="f0" style="--r: -2deg; top: 10%; left: 10%;">
<div class="meta">PID: 4402 // ADDR: 0x001</div>
<h2>PROTOCOLES_RECAP</h2>
<div class="data-line">> CONFIDENTIALITÉ: OK</div>
<div class="data-line">> INTÉGRITÉ: OK</div>
<div class="data-line">> AUTHENTIFICATION: OK</div>
<div class="data-line">> DISPONIBILITÉ: OK</div>
<p style="font-size: 0.8rem;">NEW_REQ: PFS / AUTO-HEAL / ASYNC / E2EE</p>
</div>
<div class="fragment" id="f1" style="--r: 1deg; top: 15%; left: 40%;">
<div class="meta">PID: 8812 // ADDR: 0x012</div>
<h2>HISTORIQUE_SOUVERAIN</h2>
<div class="data-line">1982: SMTP (Email) - <span class="critical">FULL_CLEAR_TEXT</span></div>
<div class="data-line">1992: SMS - STOCKAGE_SMSC_OPERATEUR</div>
<div class="data-line">2020: RCS - GOOGLE_E2EE_ENFORCED</div>
<p class="meta">NOTE: Le serveur Orange/Outlook voit TOUT le "Hop-by-Hop".</p>
</div>
<div class="fragment" id="f2" style="--r: -3deg; top: 40%; left: 20%;">
<div class="meta">PID: 1092 // ADDR: 0x045</div>
<h2>PIONNIERS_CRYPT</h2>
<div class="data-line">1991 - PGP: Phil Zimmermann. E2EE_ASYNC.</div>
<div class="data-line" style="color: #f80;">!! PAS DE PFS (Clé statique = Risque)</div>
<div class="data-line">2004 - OTR: PFS + Déniabilité.</div>
<div class="data-line" style="color: #f80;">!! SYNCHRONE (Mobile Incompatible)</div>
</div>
<div class="fragment" id="f3" style="--r: 2deg; top: 30%; left: 50%;">
<div class="meta">PID: 7721 // ADDR: 0x099</div>
<h2>SIGNAL_CORE</h2>
<div class="data-line">X3DH: Extended Triple Diffie-Hellman.</div>
<div class="data-line">ASYNCHRONISME: Système de Pre-keys.</div>
<div class="data-line">DOUBLE_RATCHET: Auto-guérison.</div>
<div class="data-line">PQXDH (2023): Post-Quantum Ready.</div>
</div>
<div class="fragment" id="f4" style="--r: -1deg; top: 55%; left: 15%;">
<div class="meta">PID: 9901 // ADDR: 0x102</div>
<h2>BENCHMARK_MATRIX</h2>
<table>
<tr><th>APP</th><th>E2EE</th><th>PFS</th><th>ASYNC</th></tr>
<tr><td>SMS</td><td></td><td></td><td></td></tr>
<tr><td>PGP</td><td></td><td></td><td></td></tr>
<tr><td>OTR</td><td></td><td></td><td></td></tr>
<tr><td>SIGNAL</td><td></td><td></td><td></td></tr>
</table>
</div>
<div class="fragment" id="f5" style="--r: 5deg; top: 50%; left: 45%;">
<div class="meta">PID: 0000 // ADDR: 0xAXO</div>
<h2 style="background: #f0f; color: white;">AXOLOTL_VISUAL</h2>
<div style="font-size: 5rem; text-align: center;">🦦</div>
<p style="text-align: center;">DÉPLOIEMENT TABLEAU NOIR</p>
</div>
<div class="fragment" id="f6" style="--r: -2deg; top: 10%; left: 30%;">
<div class="meta">PID: 6661 // ADDR: 0xERR</div>
<h2 class="critical">LIMITATIONS_DETECTED</h2>
<div class="data-line">QUANTIQUE: Algorithme de Shor vs ECDH.</div>
<div class="data-line">ENDPOINTS: Spyware Pegasus (Bypass Crypto).</div>
<div class="data-line">MitM: Injection de fausses clés publiques.</div>
</div>
<div class="fragment" id="f7" style="--r: 0deg; top: 25%; left: 25%;">
<div class="meta">PID: 2210 // ADDR: 0xEND</div>
<h2>SOUVERAINETÉ_DATA</h2>
<div class="data-line">DISCORD: Centralisé. Pas d'E2EE texte.</div>
<div class="data-line">MATRIX: Décentralisé. Fédéré. Tchap.</div>
<p class="meta">> SESSION_END. QUESTIONS?</p>
</div>
</div>
<script>
let current = 0;
const fragments = document.querySelectorAll('.fragment');
const noiseBg = document.getElementById('noise-bg');
// Remplissage du fond avec du bruit hexadécimal
let noise = "";
for(let i=0; i<100; i++) {
for(let j=0; j<20; j++) {
noise += Math.random().toString(16).slice(2, 10) + " ";
}
noise += "\n";
}
noiseBg.innerText = noise;
function showNext() {
// La slide actuelle reste visible mais perd sa priorité (z-index)
fragments[current].style.zIndex = 5;
fragments[current].style.opacity = 0.4;
fragments[current].style.filter = "grayscale(1)";
current = (current + 1) % fragments.length;
// La nouvelle slide pop au dessus
const next = fragments[current];
next.style.display = "block";
next.style.zIndex = 20;
next.style.opacity = 1;
next.style.filter = "grayscale(0)";
next.classList.add('active');
// Petit effet de tremblement de l'écran
document.body.style.transform = `translate(${(Math.random()-0.5)*10}px, ${(Math.random()-0.5)*10}px)`;
setTimeout(() => document.body.style.transform = "translate(0,0)", 100);
}
window.addEventListener('keydown', e => {
if(e.key === 'ArrowRight' || e.key === ' ') showNext();
});
// Optionnel: cliquer n'importe où pour avancer
window.addEventListener('mousedown', showNext);
</script>
</body>
</html>