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

224 lines
8.4 KiB
HTML

<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>SEC_MONITOR // X3DH_ANALYSIS</title>
<style>
@import url('https://fonts.googleapis.com/css2?family=Orbitron:wght@400;700&family=JetBrains+Mono:wght@300;500&display=swap');
:root {
--primary: #00d4ff;
--secondary: #0055ff;
--danger: #ff003c;
--bg: #010810;
--surface: rgba(0, 20, 40, 0.9);
}
body, html {
margin: 0; padding: 0;
height: 100%; overflow: hidden;
background: var(--bg);
color: var(--primary);
font-family: 'JetBrains Mono', monospace;
}
/* Scanlines & Grain */
.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: 100;
}
/* Sidebar Logs */
.sidebar {
position: fixed; left: 0; top: 0; width: 200px; height: 100%;
border-right: 1px solid rgba(0, 212, 255, 0.3);
padding: 15px; font-size: 0.6rem;
overflow: hidden; opacity: 0.6;
}
.log-entry { margin-bottom: 5px; white-space: nowrap; animation: log-slide 2s infinite linear; }
@keyframes log-slide { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } }
/* Main Viewport */
.viewport {
margin-left: 200px; height: 100vh;
display: flex; justify-content: center; align-items: center;
perspective: 1500px;
}
.module {
width: 800px; height: 500px;
background: var(--surface);
border: 1px solid var(--primary);
box-shadow: 0 0 30px rgba(0, 212, 255, 0.15);
padding: 40px; position: absolute;
opacity: 0; transform: rotateY(-20deg) translateZ(-200px);
transition: all 0.6s cubic-bezier(0.23, 1, 0.32, 1);
clip-path: polygon(0 0, 100% 0, 100% 90%, 90% 100%, 0 100%);
}
.module.active {
opacity: 1; transform: rotateY(0deg) translateZ(0);
}
h1, h2 {
font-family: 'Orbitron', sans-serif;
text-transform: uppercase; letter-spacing: 4px;
color: white; text-shadow: 0 0 10px var(--primary);
}
.glitch-text:hover {
animation: glitch 0.3s ease-in-out infinite;
}
@keyframes glitch {
0% { transform: skew(0deg); }
20% { transform: skew(10deg); color: var(--danger); }
40% { transform: skew(-10deg); color: var(--primary); }
100% { transform: skew(0deg); }
}
.stat-bar {
height: 4px; background: rgba(0, 212, 255, 0.1);
margin: 20px 0; position: relative; overflow: hidden;
}
.stat-progress {
height: 100%; background: var(--primary);
width: 0%; transition: width 1s ease;
}
.active .stat-progress { width: 100%; }
/* Navigation Buttons */
.nav {
position: fixed; bottom: 30px; right: 30px;
display: flex; gap: 15px;
}
.btn {
background: transparent; border: 1px solid var(--primary);
color: var(--primary); padding: 10px 20px;
font-family: 'Orbitron', sans-serif; cursor: pointer;
font-size: 0.8rem; transition: 0.3s;
}
.btn:hover { background: var(--primary); color: var(--bg); box-shadow: 0 0 20px var(--primary); }
.btn-danger { border-color: var(--danger); color: var(--danger); }
.btn-danger:hover { background: var(--danger); box-shadow: 0 0 20px var(--danger); }
/* Danger Mode */
body.breach {
filter: hue-rotate(280deg) saturate(1.5);
animation: shake 0.1s infinite;
}
@keyframes shake { 0% { transform: translate(1px, 1px); } 50% { transform: translate(-1px, -1px); } }
</style>
</head>
<body>
<div class="overlay"></div>
<div class="sidebar" id="logs">
</div>
<div class="viewport">
<div class="module active" id="m1">
<p style="color:var(--secondary)">>> ANALYSE_INITIALE</p>
<h1 class="glitch-text">Protocol_Research</h1>
<div class="stat-bar"><div class="stat-progress"></div></div>
<p>Sujet: Chiffrement de bout en bout & Souveraineté</p>
<p>Cible: Signal / Discord / Matrix</p>
<p style="margin-top: 50px; opacity: 0.5;">[ APPUYEZ SUR ESPACE POUR DÉCRYPTER ]</p>
</div>
<div class="module" id="m2">
<h2>Paramètres de Sécurité</h2>
<div style="display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-top: 30px;">
<div style="border: 1px solid rgba(0, 212, 255, 0.3); padding: 15px;">
<h4 style="margin:0; color:var(--primary)">PFS</h4>
<p style="font-size: 0.8rem;">Clés éphémères. Le passé est protégé.</p>
</div>
<div style="border: 1px solid rgba(0, 212, 255, 0.3); padding: 15px;">
<h4 style="margin:0; color:var(--primary)">Double Ratchet</h4>
<p style="font-size: 0.8rem;">Auto-guérison après chaque message.</p>
</div>
</div>
<div class="stat-bar" style="margin-top:40px;"><div class="stat-progress" style="width: 75% !important;"></div></div>
<p style="text-align:center; font-size:0.7rem;">NIVEAU DE PROTECTION : OPTIMAL</p>
</div>
<div class="module" id="m3">
<h2>Historique des Filles</h2>
<p>> 1982: E-MAIL (SMTP) - <span style="color:var(--danger)">VULNÉRABLE</span></p>
<p>> 1991: PGP - <span style="color:var(--primary)">SÉCURISÉ (STRICTOR)</span></p>
<p>> 2013: SIGNAL - <span style="color:var(--primary)">STANDARD ACTUEL</span></p>
<p>> 2026: PQ-CRYPTO - <span style="color:white">EN DÉPLOIEMENT</span></p>
</div>
<div class="module" id="m4">
<h2>Matrice de Comparaison</h2>
<table style="width: 100%; text-align: left; border-collapse: collapse;">
<tr style="border-bottom: 1px solid var(--primary);">
<th style="padding: 10px;">ID</th><th>E2EE</th><th>NETWORK</th>
</tr>
<tr><td style="padding: 10px;">SIGNAL</td><td>YES</td><td>CENTRAL</td></tr>
<tr><td style="padding: 10px;">DISCORD</td><td>VOICE ONLY</td><td>CENTRAL</td></tr>
<tr><td style="padding: 10px;">MATRIX</td><td>YES</td><td>FEDERATED</td></tr>
</table>
</div>
</div>
<div class="nav">
<button class="btn btn-danger" onclick="triggerBreach()">[ BREACH ]</button>
<button class="btn" onclick="change(-1)">PREV</button>
<button class="btn" onclick="change(1)">NEXT</button>
</div>
<script>
let current = 0;
const modules = document.querySelectorAll('.module');
function change(dir) {
modules[current].classList.remove('active');
current = (current + dir + modules.length) % modules.length;
modules[current].classList.add('active');
}
// Génération des logs
const logBox = document.getElementById('logs');
const codes = ["0x88A", "AES-256", "SIG_ERR", "PFS_OK", "DHT_JOIN", "RATCHET_ROT", "MQ_READY"];
setInterval(() => {
const div = document.createElement('div');
div.className = 'log-entry';
div.innerText = `[${new Date().toLocaleTimeString()}] ${codes[Math.floor(Math.random()*codes.length)]} >> SYNC...`;
logBox.prepend(div);
if(logBox.children.length > 30) logBox.lastChild.remove();
}, 500);
function triggerBreach() {
document.body.classList.toggle('breach');
}
document.addEventListener('keydown', e => {
if(e.key === 'ArrowRight' || e.key === ' ') change(1);
if(e.key === 'ArrowLeft') change(-1);
});
// Effet de mouvement de souris (Parallaxe)
document.addEventListener('mousemove', e => {
const x = (window.innerWidth / 2 - e.pageX) / 50;
const y = (window.innerHeight / 2 - e.pageY) / 50;
document.querySelector('.viewport').style.transform = `rotateY(${x}deg) rotateX(${-y}deg)`;
});
</script>
</body>
</html>