Skip to content

Commit 0fefe0e

Browse files
committed
feat: add project demo video and README embed
1 parent 7071617 commit 0fefe0e

4 files changed

Lines changed: 117 additions & 0 deletions

File tree

README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,12 @@
99

1010
---
1111

12+
## 🎬 Demo
13+
14+
![EntroRS Project Demo](demo/project-demo.webp)
15+
16+
---
17+
1218
<a id="turkce"></a>
1319
## 🇹🇷 Türkçe
1420

demo/demo_replay.html

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="UTF-8">
5+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
6+
<title>EntroRS Project Demo</title>
7+
<style>
8+
body { background: #0c0c0c; color: #ccc; font-family: 'Consolas', 'Courier New', monospace; margin: 0; overflow: hidden; }
9+
#terminal { padding: 40px; height: 100vh; display: flex; flex-direction: column; overflow-y: auto; }
10+
.prompt { color: #0f0; margin-right: 10px; }
11+
.command { color: #fff; font-weight: bold; }
12+
.output { color: #aaa; white-space: pre-wrap; margin: 10px 0 20px 20px; border-left: 2px solid #333; padding-left: 15px; }
13+
.cursor { display: inline-block; width: 10px; height: 1.2em; background: #fff; vertical-align: middle; animation: blink 1s infinite; }
14+
@keyframes blink { 0%, 100% { opacity: 1; } 50% { opacity: 0; } }
15+
.banner { color: #0088ff; font-weight: bold; font-size: 1.2em; border: 1px solid #0088ff; padding: 10px; margin-bottom: 20px; text-align: center; }
16+
#report-iframe { width: 100%; height: 100vh; border: none; display: none; }
17+
</style>
18+
</head>
19+
<body>
20+
<div id="terminal"></div>
21+
<iframe id="report-iframe" src="../demo_report.html"></iframe>
22+
23+
<script>
24+
const terminal = document.getElementById('terminal');
25+
const iframe = document.getElementById('report-iframe');
26+
27+
const scenes = [
28+
{ cmd: "cargo build --release", output: " Compiling EntroRS v0.1.0\n Finished release [optimized] target(s) in 1.87s\n ✔ Build successful: target/release/EntroRS.exe" },
29+
{ cmd: "./target/release/EntroRS.exe --help", output: " EntroRS Malware Analyzer (v0.1.0)\n Usage: EntroRS.exe [OPTIONS] --file <DOSYA_YOLU>\n\n Options:\n -f, --file <DOSYA_YOLU> Analiz edilecek dosyanın yolu\n -m, --format <FORMAT> Çıktı formatı (terminal, json, html) [default: terminal]\n -o, --output <RAPOR> Raporu dosyaya kaydet" },
30+
{ cmd: "./target/release/EntroRS.exe -f EntroRS.exe", output: " ✔ Analiz edilecek dosya yüklendi:\n ├─ Dosya Adı : EntroRS.exe\n └─ Boyut : 7424000 bytes (7250 KB)\n\n ── Analiz Özeti ──────────────────────────────────────────\n ├─ Hedef Dosya : EntroRS.exe (PE)\n ├─ Risk Skoru : 100 (CRITICAL)\n ├─ SHA-256 : f327d5595ba933708805938c472cc... \n ├─ Import API : 99\n └─ Bildirimler :\n [!] Şüpheli APIler: [\"VirtualAlloc\", \"IsDebuggerPresent\", ...]" },
31+
{ cmd: "Generating HTML Report...", output: " [OK] Rapor kaydedildi: demo_report.html\nOpening report window..." },
32+
{ type: "switch_to_html" },
33+
{ type: "wait", duration: 5000 },
34+
{ type: "switch_to_terminal" },
35+
{ cmd: "tree /F /A", output: ".\n+---.github\n| \\---workflows\n| ci.yml\n+---docs\n| architecture.md\n| MITRE_ATTACK_mapping.md\n+---src\n| main.rs\n| Cargo.toml\n| Dockerfile\n| README.md" }
36+
];
37+
38+
async function typeText(target, text, speed = 30) {
39+
for (let i = 0; i < text.length; i++) {
40+
target.textContent += text[i];
41+
await new Promise(r => setTimeout(r, speed));
42+
terminal.scrollTop = terminal.scrollHeight;
43+
}
44+
}
45+
46+
async function runDemo() {
47+
for (const scene of scenes) {
48+
if (scene.type === "switch_to_html") {
49+
terminal.style.display = 'none';
50+
iframe.style.display = 'block';
51+
await new Promise(r => setTimeout(r, 8000));
52+
continue;
53+
}
54+
if (scene.type === "switch_to_terminal") {
55+
iframe.style.display = 'none';
56+
terminal.style.display = 'flex';
57+
continue;
58+
}
59+
if (scene.type === "wait") {
60+
await new Promise(r => setTimeout(r, scene.duration));
61+
continue;
62+
}
63+
64+
const line = document.createElement('div');
65+
line.innerHTML = '<span class="prompt">PS D:\\EntroRS&gt;</span><span class="command"></span><span class="cursor"></span>';
66+
terminal.appendChild(line);
67+
68+
const cmdSpan = line.querySelector('.command');
69+
await typeText(cmdSpan, scene.cmd);
70+
line.querySelector('.cursor').remove();
71+
72+
await new Promise(r => setTimeout(r, 500));
73+
74+
const outDiv = document.createElement('div');
75+
outDiv.className = 'output';
76+
terminal.appendChild(outDiv);
77+
await typeText(outDiv, scene.output, 5);
78+
79+
await new Promise(r => setTimeout(r, 1000));
80+
}
81+
82+
const final = document.createElement('div');
83+
final.className = 'banner';
84+
final.textContent = "DEMO COMPLETE - EntroRS: Professional Malware Analysis in Rust";
85+
terminal.appendChild(final);
86+
}
87+
88+
window.onload = runDemo;
89+
</script>
90+
</body>
91+
</html>

demo/project-demo.webp

11.2 KB
Loading

demo_report.html

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
2+
<html><head><style>
3+
body { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; background: #f4f7f6; }
4+
.container { width: 80%; margin: auto; background: white; padding: 20px; box-shadow: 0 0 10px rgba(0,0,0,0.1); }
5+
.header { border-bottom: 2px solid #eee; padding-bottom: 10px; }
6+
.risk-box { font-size: 48px; color: #dc3545; font-weight: bold; text-align: center; margin: 20px 0; border: 4px solid #dc3545; padding: 10px; }
7+
table { width: 100%; border-collapse: collapse; margin-top: 20px; }
8+
th, td { padding: 12px; border: 1px solid #ddd; text-align: left; }
9+
th { background-color: #f8f9fa; }
10+
</style></head><body>
11+
<div class="container">
12+
<div class="header"><h1>EntroRS Analiz Raporu</h1><p>Dosya: EntroRS.exe | Tarih: 2026-04-06 23:34:00</p></div>
13+
<div class="risk-box">CRITICAL - RISK: 100/100</div>
14+
<h3>Bölüm Analizi (Sections)</h3>
15+
<table><tr><th>İsim</th><th>Boyut</th><th>Entropi</th><th>Packed?</th></tr><tr><td>.text</td><td>1652224</td><td>6.2644</td><td>HAYIR</td></tr><tr><td>.rdata</td><td>854016</td><td>5.0543</td><td>HAYIR</td></tr><tr><td>.data</td><td>1024</td><td>1.6048</td><td>HAYIR</td></tr><tr><td>.pdata</td><td>59904</td><td>6.2066</td><td>HAYIR</td></tr><tr><td>.reloc</td><td>25088</td><td>5.4461</td><td>HAYIR</td></tr></table>
16+
<h3>Tespit Edilen Şüpheli API ve Stringler</h3>
17+
<p><b>APIler:</b> VirtualAlloc, VirtualAllocEx, VirtualProtect, VirtualProtectEx, VirtualFree, CreateRemoteThread, CreateRemoteThreadEx, WriteProcessMemory, ReadProcessMemory, NtWriteVirtualMemory, QueueUserAPC, LoadLibraryA, LoadLibraryW, LoadLibraryExA, LoadLibraryExW, GetProcAddress, LdrLoadDll, OpenProcess, CreateProcessA, CreateProcessW, WinExec, TerminateProcess, IsDebuggerPresent, CheckRemoteDebuggerPresent</p>
18+
<p><b>Stringler:</b> https://github.com/clap-rs/clap/issues/rustc/e408947bfd200af42db322daf0fadfe7e26d3bd1/library, https://github.com/clap-rs/clap/issuesC, https://github.com/clap-rs/clap/issues</p>
19+
</div>
20+
</body></html>

0 commit comments

Comments
 (0)