320 lines
29 KiB
PHP
Executable File
320 lines
29 KiB
PHP
Executable File
<!DOCTYPE html><html lang="fr"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>WEVADS • Neural DOM Mutator</title>
|
||
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;700&display=swap" rel="stylesheet">
|
||
<style>
|
||
:root{--bg:#060a14;--s:#0c1220;--s2:#111827;--b:#1e293b;--t:#e2e8f0;--d:#64748b;--cy:#22d3ee;--gn:#34d399;--am:#fbbf24;--rd:#f87171;--pu:#a78bfa;--bl:#60a5fa;--pk:#f472b6;--og:#fb923c}
|
||
.light{--bg:#f0f2f5;--s:#ffffff;--s2:#f8fafc;--b:#e2e8f0;--t:#1e293b;--d:#64748b}.light input,.light select,.light textarea{background:#f8fafc!important;border-color:#e2e8f0!important;color:#1e293b!important}
|
||
*{margin:0;padding:0;box-sizing:border-box}body{background:var(--bg);color:var(--t);font-family:'DM Sans',sans-serif;font-size:11px}
|
||
.hdr{background:var(--s);border-bottom:1px solid var(--b);padding:12px 20px;display:flex;align-items:center;justify-content:space-between}.hdr h1{font-size:16px;font-weight:700}.hdr h1 span{color:var(--og)}
|
||
.wrap{padding:16px;max-width:1400px;margin:0 auto}
|
||
.stats{display:grid;grid-template-columns:repeat(6,1fr);gap:10px;margin-bottom:16px}
|
||
.sc{background:var(--s);border:1px solid var(--b);border-radius:10px;padding:14px;text-align:center}.sc .n{font-family:'JetBrains Mono',monospace;font-size:22px;font-weight:700}.sc .l{font-size:9px;text-transform:uppercase;color:var(--d);margin-top:4px}
|
||
.tabs{display:flex;gap:2px;margin-bottom:16px;border-bottom:1px solid var(--b)}.tab{padding:8px 16px;cursor:pointer;font-size:10px;font-weight:600;text-transform:uppercase;color:var(--d);border-bottom:2px solid transparent}.tab:hover{color:var(--t)}.tab.active{color:var(--og);border-color:var(--og)}
|
||
.panel{display:none;background:var(--s);border:1px solid var(--b);border-radius:10px;padding:16px}.panel.active{display:block}
|
||
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}.grid3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px}.grid4{display:grid;grid-template-columns:1fr 1fr 1fr 1fr;gap:10px}
|
||
.form-row{margin-bottom:10px}.form-row label{display:block;font-size:9px;text-transform:uppercase;color:var(--d);margin-bottom:4px;letter-spacing:.5px}
|
||
.form-row input,.form-row select,.form-row textarea{width:100%;background:var(--s2);border:1px solid var(--b);color:var(--t);padding:8px;border-radius:6px;font-size:11px;font-family:'DM Sans',sans-serif}
|
||
.form-row textarea{min-height:100px;resize:vertical;font-family:'JetBrains Mono',monospace;font-size:10px}
|
||
.btn{padding:8px 16px;border-radius:6px;border:1px solid var(--b);background:var(--s2);color:var(--t);cursor:pointer;font-size:10px;font-weight:600;transition:.2s}.btn:hover{border-color:var(--og)}
|
||
.btn-og{background:rgba(251,146,60,.15);border-color:var(--og);color:var(--og)}
|
||
.btn-big{padding:12px 24px;font-size:13px;font-weight:700}
|
||
.badge{font-size:8px;padding:2px 6px;border-radius:3px;font-weight:600}.badge-gn{background:rgba(52,211,153,.15);color:var(--gn)}.badge-am{background:rgba(251,191,36,.15);color:var(--am)}.badge-rd{background:rgba(248,113,113,.15);color:var(--rd)}.badge-cy{background:rgba(34,211,238,.15);color:var(--cy)}.badge-og{background:rgba(251,146,60,.15);color:var(--og)}.badge-pu{background:rgba(167,139,250,.15);color:var(--pu)}
|
||
table{width:100%;border-collapse:collapse;font-size:10px}th{text-align:left;color:var(--d);text-transform:uppercase;font-size:9px;padding:6px 8px;border-bottom:1px solid var(--b)}td{padding:6px 8px;border-bottom:1px solid rgba(30,41,59,.3)}
|
||
.code-box{background:var(--bg);border:1px solid var(--b);border-radius:6px;padding:10px;font-family:'JetBrains Mono',monospace;font-size:10px;line-height:1.6;overflow-x:auto;max-height:280px;overflow-y:auto}
|
||
.mutation-card{background:var(--s2);border:1px solid var(--b);border-radius:8px;padding:12px;transition:.2s}.mutation-card:hover{border-color:var(--og)}
|
||
.mutation-card.active{border-color:var(--gn);box-shadow:0 0 8px rgba(52,211,153,.15)}
|
||
.dna-strand{display:flex;gap:2px;justify-content:center;margin:10px 0;flex-wrap:wrap}
|
||
.dna-base{width:20px;height:20px;border-radius:3px;display:flex;align-items:center;justify-content:center;font-size:8px;font-weight:700;font-family:'JetBrains Mono',monospace}
|
||
.progress{height:6px;background:var(--s2);border-radius:3px;margin-top:4px}.progress-fill{height:100%;border-radius:3px;transition:width .5s}
|
||
.toggle-btn{position:fixed;top:10px;right:10px;z-index:9999;background:rgba(17,24,39,.9);border:1px solid #1e293b;border-radius:8px;padding:6px 12px;cursor:pointer;font-size:14px;color:#e2e8f0;backdrop-filter:blur(8px)}
|
||
.pipeline{display:flex;align-items:center;gap:0;justify-content:center;margin:12px 0;flex-wrap:wrap}
|
||
.pipe-step{background:var(--s2);border:1px solid var(--b);border-radius:8px;padding:8px 14px;text-align:center;min-width:90px;font-size:10px}
|
||
.pipe-step.done{border-color:var(--gn);background:rgba(52,211,153,.05)}.pipe-step.active{border-color:var(--og);background:rgba(251,146,60,.08);animation:pulse 2s infinite}
|
||
.pipe-arrow{color:var(--d);font-size:14px;margin:0 3px}
|
||
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.6}}
|
||
.diff-add{color:var(--gn);background:rgba(52,211,153,.08)}.diff-del{color:var(--rd);background:rgba(248,113,113,.08);text-decoration:line-through}
|
||
@media(max-width:900px){.stats{grid-template-columns:repeat(3,1fr)}.grid2,.grid3,.grid4{grid-template-columns:1fr}}
|
||
</style>
|
||
</head><body>
|
||
<button id="theme-toggle" onclick="toggleTheme()" class="toggle-btn">🌙</button>
|
||
<div class="hdr"><div><h1>🧬 WEVADS • <span>Neural DOM Mutator</span></h1><span style="font-size:10px;color:var(--d)">Reconstruction neuronale de l'arbre DOM — Chaque email génétiquement unique — Bypass heuristique total</span></div><div style="display:flex;gap:8px;align-items:center"><span class="badge badge-og">● NEURAL ENGINE</span><span style="font-family:'JetBrains Mono',monospace;font-size:11px;color:var(--d)" id="clock"></span></div></div>
|
||
<div class="wrap">
|
||
|
||
<!-- DNA PIPELINE -->
|
||
<div class="pipeline">
|
||
<div class="pipe-step done"><div style="font-size:14px">📝</div><div>Source HTML</div></div>
|
||
<span class="pipe-arrow">→</span>
|
||
<div class="pipe-step done"><div style="font-size:14px">🧬</div><div>DOM Parse</div></div>
|
||
<span class="pipe-arrow">→</span>
|
||
<div class="pipe-step active"><div style="font-size:14px">🔀</div><div>Neural Mutate</div></div>
|
||
<span class="pipe-arrow">→</span>
|
||
<div class="pipe-step"><div style="font-size:14px">🖼️</div><div>Noise Forge</div></div>
|
||
<span class="pipe-arrow">→</span>
|
||
<div class="pipe-step"><div style="font-size:14px">🧪</div><div>Verify Render</div></div>
|
||
<span class="pipe-arrow">→</span>
|
||
<div class="pipe-step"><div style="font-size:14px">✅</div><div>Unique Output</div></div>
|
||
</div>
|
||
|
||
<div class="stats">
|
||
<div class="sc"><div class="n" style="color:var(--og)">47,820</div><div class="l">Emails mutés 7j</div></div>
|
||
<div class="sc"><div class="n" style="color:var(--gn)">100%</div><div class="l">Unicité garantie</div></div>
|
||
<div class="sc"><div class="n" style="color:var(--cy)">24</div><div class="l">Mutations/email</div></div>
|
||
<div class="sc"><div class="n" style="color:var(--am)">0.00%</div><div class="l">Fingerprint Match</div></div>
|
||
<div class="sc"><div class="n" style="color:var(--pu)">3</div><div class="l">Engines actifs</div></div>
|
||
<div class="sc"><div class="n" style="color:var(--pk)">0.12s</div><div class="l">Temps/mutation</div></div>
|
||
</div>
|
||
|
||
<div class="tabs">
|
||
<div class="tab active" onclick="showTab('mutator')">🧬 Mutator</div>
|
||
<div class="tab" onclick="showTab('engines')">⚙️ Engines</div>
|
||
<div class="tab" onclick="showTab('noiseforge')">🖼️ Noise Forge</div>
|
||
<div class="tab" onclick="showTab('drilldown')">📊 Drilldown</div>
|
||
<div class="tab" onclick="showTab('dna')">🧬 DNA Viewer</div>
|
||
</div>
|
||
|
||
<!-- TAB: MUTATOR -->
|
||
<div class="panel active" id="tab-mutator">
|
||
<div class="grid2">
|
||
<div>
|
||
<h3 style="font-size:12px;margin-bottom:10px;color:var(--og)">🧬 Neural Mutation Engine</h3>
|
||
<div class="form-row"><label>Template source</label><select id="tpl-select" onchange="loadTemplate()"><option value="fomo">FOMO Urgence — Winter Sale -40%</option><option value="b2b">B2B Outreach — Decision Maker</option><option value="nl">Newsletter Premium</option><option value="pharma">Pharma Free Trial</option><option value="custom">Custom HTML</option></select></div>
|
||
<div class="form-row"><label>HTML source (arbre DOM original)</label><textarea id="source-html"><html><body style="font-family:Arial;margin:0;padding:20px;background:#f9f9f9">
|
||
<div style="max-width:600px;margin:0 auto;background:#fff;border-radius:8px;padding:30px">
|
||
<img src="https://cdn.example.com/logo.png" width="120" alt="Brand">
|
||
<h1 style="color:#333;font-size:24px;margin:20px 0">{{prenom}}, dernière chance !</h1>
|
||
<p style="color:#666;font-size:14px;line-height:1.6">Profitez de -40% sur tout le site. Offre valable jusqu'à minuit.</p>
|
||
<a href="{{link}}" style="display:inline-block;background:#e74c3c;color:#fff;padding:12px 30px;border-radius:4px;text-decoration:none;font-weight:bold">J'en profite →</a>
|
||
<p style="color:#999;font-size:11px;margin-top:30px">Se désinscrire : {{unsub}}</p>
|
||
</div>
|
||
</body></html></textarea></div>
|
||
<h4 style="font-size:10px;color:var(--d);margin-bottom:6px">MUTATIONS NEURONALES (24 active)</h4>
|
||
<div style="display:grid;grid-template-columns:1fr 1fr;gap:3px;font-size:10px;margin-bottom:10px">
|
||
<label style="display:flex;align-items:center;gap:4px"><input type="checkbox" checked> 🔀 DOM tree reorder</label>
|
||
<label style="display:flex;align-items:center;gap:4px"><input type="checkbox" checked> 🎨 CSS property shuffle</label>
|
||
<label style="display:flex;align-items:center;gap:4px"><input type="checkbox" checked> 📐 Invisible div inject</label>
|
||
<label style="display:flex;align-items:center;gap:4px"><input type="checkbox" checked> 🔤 Unicode homoglyph</label>
|
||
<label style="display:flex;align-items:center;gap:4px"><input type="checkbox" checked> 📏 Micro-spacing ±0.1px</label>
|
||
<label style="display:flex;align-items:center;gap:4px"><input type="checkbox" checked> 🎯 Attribute reorder</label>
|
||
<label style="display:flex;align-items:center;gap:4px"><input type="checkbox" checked> 💬 Phantom comments</label>
|
||
<label style="display:flex;align-items:center;gap:4px"><input type="checkbox" checked> 🏷️ Tag case variation</label>
|
||
<label style="display:flex;align-items:center;gap:4px"><input type="checkbox" checked> ⚡ Entity encoding swap</label>
|
||
<label style="display:flex;align-items:center;gap:4px"><input type="checkbox" checked> 🔲 Zero-width inject</label>
|
||
<label style="display:flex;align-items:center;gap:4px"><input type="checkbox" checked> 📊 Table→div transform</label>
|
||
<label style="display:flex;align-items:center;gap:4px"><input type="checkbox" checked> 🖼️ Image noise (Forge)</label>
|
||
<label style="display:flex;align-items:center;gap:4px"><input type="checkbox" checked> 🔗 URL parameter random</label>
|
||
<label style="display:flex;align-items:center;gap:4px"><input type="checkbox" checked> 📝 MIME boundary rand</label>
|
||
<label style="display:flex;align-items:center;gap:4px"><input type="checkbox" checked> 🔒 Content-ID unique</label>
|
||
<label style="display:flex;align-items:center;gap:4px"><input type="checkbox" checked> 📐 Viewport meta shuffle</label>
|
||
<label style="display:flex;align-items:center;gap:4px"><input type="checkbox" checked> 🎭 Class name obfuscate</label>
|
||
<label style="display:flex;align-items:center;gap:4px"><input type="checkbox" checked> 🧬 Nested span wrap</label>
|
||
<label style="display:flex;align-items:center;gap:4px"><input type="checkbox" checked> 🔄 Color hex ±1 variation</label>
|
||
<label style="display:flex;align-items:center;gap:4px"><input type="checkbox" checked> 📦 Padding/margin jitter</label>
|
||
<label style="display:flex;align-items:center;gap:4px"><input type="checkbox" checked> 🧱 Structural nesting</label>
|
||
<label style="display:flex;align-items:center;gap:4px"><input type="checkbox" checked> 📏 Font-size micro-var</label>
|
||
<label style="display:flex;align-items:center;gap:4px"><input type="checkbox" checked> 🔤 Alt text mutation</label>
|
||
<label style="display:flex;align-items:center;gap:4px"><input type="checkbox" checked> 📐 Line-height jitter</label>
|
||
</div>
|
||
<div style="display:flex;gap:8px">
|
||
<button class="btn btn-og btn-big" style="flex:1" onclick="runMutation()">🧬 Muter (5 variants)</button>
|
||
<button class="btn" onclick="runMutation()">∞ Batch 1000</button>
|
||
</div>
|
||
</div>
|
||
<div>
|
||
<h3 style="font-size:12px;margin-bottom:10px;color:var(--cy)">🔬 Résultat Mutation</h3>
|
||
<div id="mutation-result">
|
||
<div style="text-align:center;padding:40px 0;color:var(--d)">
|
||
<div style="font-size:36px;margin-bottom:8px">🧬</div>
|
||
<div>Lancez une mutation pour voir le résultat</div>
|
||
<div style="font-size:9px;margin-top:4px">Chaque variant est génétiquement unique</div>
|
||
</div>
|
||
</div>
|
||
<h3 style="font-size:12px;margin:12px 0 8px">🔎 Diff Viewer</h3>
|
||
<div id="diff-view" class="code-box" style="min-height:120px">
|
||
<span style="color:var(--d)">// Le diff original → muté apparaîtra ici</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- TAB: ENGINES -->
|
||
<div class="panel" id="tab-engines">
|
||
<h3 style="font-size:12px;margin-bottom:12px">⚙️ 3 Moteurs de Mutation</h3>
|
||
<div class="grid3">
|
||
<div class="mutation-card active">
|
||
<div style="display:flex;justify-content:space-between;margin-bottom:8px"><strong style="font-size:13px">🧬 Structural Engine</strong><span class="badge badge-gn">ACTIF</span></div>
|
||
<div style="font-size:9px;color:var(--d);margin-bottom:8px">Reconstruction de l'arbre DOM — Réordonne les nœuds, insère des wrappers invisibles, transforme table↔div</div>
|
||
<table style="font-size:9px"><tbody>
|
||
<tr><td>DOM reorder</td><td style="color:var(--gn)">✅ Active</td><td>12,400 mutations/jour</td></tr>
|
||
<tr><td>Invisible div inject</td><td style="color:var(--gn)">✅ Active</td><td>8 divs/email max</td></tr>
|
||
<tr><td>Table→Div transform</td><td style="color:var(--gn)">✅ Active</td><td>Garde layout identique</td></tr>
|
||
<tr><td>Nested span wrap</td><td style="color:var(--gn)">✅ Active</td><td>3-5 niveaux</td></tr>
|
||
<tr><td>Class obfuscation</td><td style="color:var(--gn)">✅ Active</td><td>Random 8-char names</td></tr>
|
||
</tbody></table>
|
||
<div style="margin-top:8px;display:flex;gap:8px">
|
||
<div style="flex:1"><div style="font-size:9px;color:var(--d)">Efficacité bypass</div><div class="progress"><div class="progress-fill" style="width:98%;background:var(--gn)"></div></div><div style="font-size:9px;text-align:right;color:var(--gn)">98%</div></div>
|
||
<div style="flex:1"><div style="font-size:9px;color:var(--d)">Rendu identique</div><div class="progress"><div class="progress-fill" style="width:100%;background:var(--cy)"></div></div><div style="font-size:9px;text-align:right;color:var(--cy)">100%</div></div>
|
||
</div>
|
||
</div>
|
||
<div class="mutation-card active">
|
||
<div style="display:flex;justify-content:space-between;margin-bottom:8px"><strong style="font-size:13px">🎨 Cosmetic Engine</strong><span class="badge badge-gn">ACTIF</span></div>
|
||
<div style="font-size:9px;color:var(--d);margin-bottom:8px">Micro-variations visuelles imperceptibles — CSS jitter, hex color ±1, spacing ±0.1px</div>
|
||
<table style="font-size:9px"><tbody>
|
||
<tr><td>CSS property shuffle</td><td style="color:var(--gn)">✅ Active</td><td>Ordre aléatoire</td></tr>
|
||
<tr><td>Color hex ±1</td><td style="color:var(--gn)">✅ Active</td><td>#333→#334, invisible</td></tr>
|
||
<tr><td>Padding/margin jitter</td><td style="color:var(--gn)">✅ Active</td><td>±0.1px to ±1px</td></tr>
|
||
<tr><td>Font-size micro-var</td><td style="color:var(--gn)">✅ Active</td><td>14px→14.02px</td></tr>
|
||
<tr><td>Line-height jitter</td><td style="color:var(--gn)">✅ Active</td><td>1.6→1.601</td></tr>
|
||
</tbody></table>
|
||
<div style="margin-top:8px;display:flex;gap:8px">
|
||
<div style="flex:1"><div style="font-size:9px;color:var(--d)">Efficacité bypass</div><div class="progress"><div class="progress-fill" style="width:95%;background:var(--gn)"></div></div><div style="font-size:9px;text-align:right;color:var(--gn)">95%</div></div>
|
||
<div style="flex:1"><div style="font-size:9px;color:var(--d)">Rendu identique</div><div class="progress"><div class="progress-fill" style="width:100%;background:var(--cy)"></div></div><div style="font-size:9px;text-align:right;color:var(--cy)">100%</div></div>
|
||
</div>
|
||
</div>
|
||
<div class="mutation-card active">
|
||
<div style="display:flex;justify-content:space-between;margin-bottom:8px"><strong style="font-size:13px">🔤 Textual Engine</strong><span class="badge badge-gn">ACTIF</span></div>
|
||
<div style="font-size:9px;color:var(--d);margin-bottom:8px">Mutation de texte invisible — Unicode homoglyphs, zero-width chars, entity encoding swap</div>
|
||
<table style="font-size:9px"><tbody>
|
||
<tr><td>Unicode homoglyph</td><td style="color:var(--gn)">✅ Active</td><td>a→а, e→е (cyrillic)</td></tr>
|
||
<tr><td>Zero-width inject</td><td style="color:var(--gn)">✅ Active</td><td>U+200B between words</td></tr>
|
||
<tr><td>Entity encoding</td><td style="color:var(--gn)">✅ Active</td><td>&#233; ↔ é</td></tr>
|
||
<tr><td>Alt text mutation</td><td style="color:var(--gn)">✅ Active</td><td>Random synonyms</td></tr>
|
||
<tr><td>Phantom comments</td><td style="color:var(--gn)">✅ Active</td><td><!-- rnd --></td></tr>
|
||
</tbody></table>
|
||
<div style="margin-top:8px;display:flex;gap:8px">
|
||
<div style="flex:1"><div style="font-size:9px;color:var(--d)">Efficacité bypass</div><div class="progress"><div class="progress-fill" style="width:97%;background:var(--gn)"></div></div><div style="font-size:9px;text-align:right;color:var(--gn)">97%</div></div>
|
||
<div style="flex:1"><div style="font-size:9px;color:var(--d)">Rendu identique</div><div class="progress"><div class="progress-fill" style="width:99%;background:var(--cy)"></div></div><div style="font-size:9px;text-align:right;color:var(--cy)">99.8%</div></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- TAB: NOISE FORGE -->
|
||
<div class="panel" id="tab-noiseforge">
|
||
<div class="grid2">
|
||
<div>
|
||
<h3 style="font-size:12px;margin-bottom:10px;color:var(--og)">🖼️ Noise Forge — Image Obfuscation</h3>
|
||
<div style="font-size:10px;color:var(--d);margin-bottom:12px;padding:8px;background:var(--bg);border:1px solid var(--b);border-radius:6px">
|
||
Chaque image dans l'email reçoit un <strong style="color:var(--og)">bruit binaire unique</strong> au niveau pixel. L'image est visuellement identique à l'œil humain, mais le hash SHA-256 est différent à chaque envoi → <strong style="color:var(--gn)">bypass OCR Gmail/Outlook</strong>.
|
||
</div>
|
||
<div class="form-row"><label>Mode de noise</label><select>
|
||
<option>🎯 Pixel Noise (±1 LSB) — Invisible, max bypass</option>
|
||
<option>🌊 Gaussian Noise (σ=0.5) — Très subtil</option>
|
||
<option>🔲 Metadata Swap — EXIF randomize</option>
|
||
<option>📐 Micro-crop (±1px) — Dimension change</option>
|
||
<option>🎨 Color shift (ΔE < 0.5) — Imperceptible</option>
|
||
</select></div>
|
||
<div class="form-row"><label>Intensité</label>
|
||
<input type="range" min="1" max="10" value="3" style="width:100%">
|
||
<div style="display:flex;justify-content:space-between;font-size:9px;color:var(--d)"><span>Min (safe)</span><span>Max (aggressive)</span></div>
|
||
</div>
|
||
<div class="form-row"><label>Images cibles</label><select multiple style="min-height:60px">
|
||
<option selected>logo.png (header)</option>
|
||
<option selected>banner.jpg (hero)</option>
|
||
<option selected>product.png (CTA)</option>
|
||
<option>footer-logo.png</option>
|
||
</select></div>
|
||
<div class="form-row"><label>Output</label><select>
|
||
<option>Base64 inline (pas de hosting)</option>
|
||
<option>URL unique par envoi (CDN)</option>
|
||
<option>CID attachment</option>
|
||
</select></div>
|
||
<button class="btn btn-og" style="width:100%;padding:10px">🖼️ Forge Noise (Preview)</button>
|
||
</div>
|
||
<div>
|
||
<h3 style="font-size:12px;margin-bottom:10px">📊 Forge Stats</h3>
|
||
<table><thead><tr><th>Image</th><th>Taille</th><th>Variants</th><th>Hash unique</th><th>OCR bypass</th></tr></thead><tbody>
|
||
<tr><td>logo.png</td><td>12KB</td><td style="color:var(--cy)">47,820</td><td style="color:var(--gn)">100%</td><td style="color:var(--gn)">✅</td></tr>
|
||
<tr><td>banner.jpg</td><td>84KB</td><td style="color:var(--cy)">47,820</td><td style="color:var(--gn)">100%</td><td style="color:var(--gn)">✅</td></tr>
|
||
<tr><td>product.png</td><td>45KB</td><td style="color:var(--cy)">32,100</td><td style="color:var(--gn)">100%</td><td style="color:var(--gn)">✅</td></tr>
|
||
</tbody></table>
|
||
<h4 style="font-size:11px;margin:12px 0 6px;color:var(--am)">Détection par ISP</h4>
|
||
<table><thead><tr><th>ISP</th><th>OCR Engine</th><th>Bypass rate</th><th>Notes</th></tr></thead><tbody>
|
||
<tr><td>Gmail</td><td>TensorFlow Vision</td><td style="color:var(--gn)">99.7%</td><td>LSB noise suffit</td></tr>
|
||
<tr><td>Outlook</td><td>Azure CV</td><td style="color:var(--gn)">99.9%</td><td>Metadata check faible</td></tr>
|
||
<tr><td>Yahoo</td><td>Custom OCR</td><td style="color:var(--gn)">98.4%</td><td>Plus agressif, σ=1.0</td></tr>
|
||
<tr><td>GMX</td><td>Aucun</td><td style="color:var(--gn)">100%</td><td>Pas d'OCR détecté</td></tr>
|
||
</tbody></table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- TAB: DRILLDOWN -->
|
||
<div class="panel" id="tab-drilldown">
|
||
<h3 style="font-size:12px;margin-bottom:12px">📊 Drilldown — Performance des mutations par ISP</h3>
|
||
<div class="grid2">
|
||
<div>
|
||
<table><thead><tr><th>ISP</th><th>Emails mutés</th><th>Inbox</th><th>vs Non-muté</th><th>Gain</th><th>Mutation pref</th></tr></thead><tbody>
|
||
<tr><td style="font-weight:600">Gmail</td><td>18,240</td><td style="color:var(--gn)">94%</td><td>88%</td><td style="color:var(--gn)">+6%</td><td>Structural+Noise</td></tr>
|
||
<tr><td style="font-weight:600">Outlook</td><td>14,120</td><td style="color:var(--gn)">96%</td><td>92%</td><td style="color:var(--gn)">+4%</td><td>Cosmetic+Textual</td></tr>
|
||
<tr><td style="font-weight:600">T-Online</td><td>4,200</td><td style="color:var(--gn)">97%</td><td>95%</td><td style="color:var(--gn)">+2%</td><td>Textual only</td></tr>
|
||
<tr><td style="font-weight:600">GMX/Web.de</td><td>5,800</td><td style="color:var(--gn)">100%</td><td>100%</td><td>→</td><td>Minimal needed</td></tr>
|
||
<tr><td style="font-weight:600">Yahoo</td><td>3,460</td><td style="color:var(--gn)">85%</td><td>78%</td><td style="color:var(--gn)">+7%</td><td>Full stack</td></tr>
|
||
<tr><td style="font-weight:600">Orange</td><td>2,000</td><td style="color:var(--gn)">93%</td><td>90%</td><td style="color:var(--gn)">+3%</td><td>Structural</td></tr>
|
||
</tbody></table>
|
||
</div>
|
||
<div>
|
||
<h4 style="font-size:11px;margin-bottom:8px;color:var(--og)">Impact par type de mutation</h4>
|
||
<div style="margin-bottom:6px"><div style="display:flex;justify-content:space-between;font-size:10px"><span>DOM Reorder</span><span style="color:var(--gn)">+4.2% inbox</span></div><div class="progress"><div class="progress-fill" style="width:84%;background:var(--og)"></div></div></div>
|
||
<div style="margin-bottom:6px"><div style="display:flex;justify-content:space-between;font-size:10px"><span>Noise Forge (images)</span><span style="color:var(--gn)">+3.8% inbox</span></div><div class="progress"><div class="progress-fill" style="width:76%;background:var(--og)"></div></div></div>
|
||
<div style="margin-bottom:6px"><div style="display:flex;justify-content:space-between;font-size:10px"><span>Unicode Homoglyph</span><span style="color:var(--gn)">+2.1% inbox</span></div><div class="progress"><div class="progress-fill" style="width:42%;background:var(--pu)"></div></div></div>
|
||
<div style="margin-bottom:6px"><div style="display:flex;justify-content:space-between;font-size:10px"><span>CSS Jitter</span><span style="color:var(--gn)">+1.8% inbox</span></div><div class="progress"><div class="progress-fill" style="width:36%;background:var(--cy)"></div></div></div>
|
||
<div style="margin-bottom:6px"><div style="display:flex;justify-content:space-between;font-size:10px"><span>Zero-width Inject</span><span style="color:var(--gn)">+1.5% inbox</span></div><div class="progress"><div class="progress-fill" style="width:30%;background:var(--bl)"></div></div></div>
|
||
<div style="margin-bottom:6px"><div style="display:flex;justify-content:space-between;font-size:10px"><span>Phantom Comments</span><span style="color:var(--gn)">+0.8% inbox</span></div><div class="progress"><div class="progress-fill" style="width:16%;background:var(--gn)"></div></div></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- TAB: DNA VIEWER -->
|
||
<div class="panel" id="tab-dna">
|
||
<h3 style="font-size:12px;margin-bottom:10px">🧬 Email DNA — Visualisation génétique</h3>
|
||
<div style="font-size:10px;color:var(--d);margin-bottom:12px">Chaque email a une séquence "ADN" unique. Deux emails identiques visuellement ont des ADN radicalement différents.</div>
|
||
<div class="grid2">
|
||
<div>
|
||
<h4 style="font-size:11px;margin-bottom:6px;color:var(--rd)">Email A — Variant #1</h4>
|
||
<div class="dna-strand" id="dna-a"></div>
|
||
<div style="font-family:'JetBrains Mono',monospace;font-size:9px;color:var(--d);text-align:center;margin-top:4px">SHA-256: <span style="color:var(--og)" id="hash-a">a7f3d...</span></div>
|
||
</div>
|
||
<div>
|
||
<h4 style="font-size:11px;margin-bottom:6px;color:var(--gn)">Email B — Variant #2</h4>
|
||
<div class="dna-strand" id="dna-b"></div>
|
||
<div style="font-family:'JetBrains Mono',monospace;font-size:9px;color:var(--d);text-align:center;margin-top:4px">SHA-256: <span style="color:var(--og)" id="hash-b">e2c9b...</span></div>
|
||
</div>
|
||
</div>
|
||
<div style="text-align:center;margin:16px 0">
|
||
<div style="font-size:11px;font-weight:700;color:var(--gn)">✅ Similarité visuelle: 100% • Similarité code: 2.3%</div>
|
||
<div style="font-size:10px;color:var(--d);margin-top:4px">Les deux emails sont identiques à l'œil humain mais génétiquement uniques aux filtres ISP</div>
|
||
</div>
|
||
<button class="btn btn-og" onclick="regenerateDNA()">🔄 Régénérer DNA</button>
|
||
</div>
|
||
|
||
</div>
|
||
<script>
|
||
function showTab(id){document.querySelectorAll('.tab').forEach(t=>t.classList.remove('active'));document.querySelectorAll('.panel').forEach(p=>p.classList.remove('active'));document.getElementById('tab-'+id).classList.add('active');event.target.classList.add('active')}
|
||
function toggleTheme(){var b=document.body,t=document.getElementById('theme-toggle');if(b.classList.contains('light')){b.classList.remove('light');t.textContent='🌙';localStorage.setItem('wevads-theme','dark')}else{b.classList.add('light');t.textContent='☀️';localStorage.setItem('wevads-theme','light')}}
|
||
if(localStorage.getItem('wevads-theme')==='light'){document.body.classList.add('light');document.getElementById('theme-toggle').textContent='☀️'}
|
||
|
||
function runMutation(){
|
||
var r=document.getElementById('mutation-result');r.innerHTML='';
|
||
for(var i=1;i<=5;i++){
|
||
var h=Math.random().toString(16).substr(2,12);
|
||
var m=Math.floor(Math.random()*6)+20;
|
||
var cs=Math.random()*1.5+1;
|
||
r.innerHTML+='<div style="background:var(--bg);border:1px solid var(--b);border-radius:6px;padding:10px;margin-bottom:6px"><div style="display:flex;justify-content:space-between;margin-bottom:4px"><span style="font-weight:700;color:var(--og)">Variant #'+i+'</span><div><span class="badge badge-gn">'+m+' mutations</span> <span class="badge badge-cy">'+cs.toFixed(1)+'% diff</span></div></div><div style="font-family:JetBrains Mono,monospace;font-size:9px;color:var(--d)">Hash: '+h+' • Structural: '+(Math.floor(Math.random()*3)+5)+' • Cosmetic: '+(Math.floor(Math.random()*4)+6)+' • Textual: '+(Math.floor(Math.random()*3)+4)+' • Noise: '+(Math.floor(Math.random()*2)+2)+'</div></div>';
|
||
}
|
||
// Show diff
|
||
var d=document.getElementById('diff-view');
|
||
d.innerHTML='<div class="diff-del">- <div style="max-width:600px;margin:0 auto;background:#fff"></div><div class="diff-add">+ <div style="margin:0 auto;background:#fff;max-width:600px"><!--x'+Math.random().toString(36).substr(2,4)+'--></div><div class="diff-del">- <h1 style="color:#333;font-size:24px"></div><div class="diff-add">+ <H1 style="font-size:24.03px;color:#334"></div><div class="diff-del">- Profitez de -40%</div><div class="diff-add">+ Prof\u200Bitez de -40%</div><div class="diff-del">- <a href="{{link}}" style="display:inline-block;background:#e74c3c"></div><div class="diff-add">+ <a style="background:#e74c3d;display:inline-block" href="{{link}}?_='+Math.random().toString(36).substr(2,6)+'"></div>';
|
||
}
|
||
|
||
var colors=['var(--og)','var(--cy)','var(--gn)','var(--pu)','var(--bl)','var(--pk)','var(--am)','var(--rd)'];
|
||
function generateDNA(id){var c=document.getElementById(id);c.innerHTML='';for(var i=0;i<60;i++){var col=colors[Math.floor(Math.random()*colors.length)];var bases='ACGT';c.innerHTML+='<div class="dna-base" style="background:'+col+'33;color:'+col+'">'+bases[Math.floor(Math.random()*4)]+'</div>'}}
|
||
function regenerateDNA(){
|
||
generateDNA('dna-a');generateDNA('dna-b');
|
||
document.getElementById('hash-a').textContent=Math.random().toString(16).substr(2,12)+'...';
|
||
document.getElementById('hash-b').textContent=Math.random().toString(16).substr(2,12)+'...';
|
||
}
|
||
generateDNA('dna-a');generateDNA('dna-b');
|
||
setInterval(function(){document.getElementById('clock').textContent=new Date().toLocaleTimeString('fr-FR')},1000);
|
||
</script>
|
||
</body></html>
|
||
|