|
1 | | -<!DOCTYPE html> |
| 1 | +<!DOCTYPE html> |
2 | 2 | <html lang="en"> |
3 | 3 |
|
4 | 4 | <head> |
|
11 | 11 | <meta name="keywords" |
12 | 12 | content="web remote control, Windows device management, remote automation, Mouse Bot, file transfer, ASP.NET Core, Blazor, SignalR, .NET 9, real-time monitoring, web interface, device control, remote access"> |
13 | 13 | <meta name="author" content=" Web Remote Screen Locker"> |
14 | | - <meta name="last-modified" content="2025-11-06"> |
| 14 | + <meta name="last-modified" content="2026-07-10"> |
15 | 15 | <meta name="robots" content="index, follow"> |
16 | 16 |
|
17 | 17 | <!-- Security Headers --> |
|
87 | 87 | "softwareVersion": "2.7.0", |
88 | 88 | "releaseNotes": "Remote control system with ASP.NET Core backend, Blazor frontend, SignalR real-time communication, and Windows agent integration", |
89 | 89 | "datePublished": "2025-01-01", |
90 | | - "dateModified": "2025-11-06" |
| 90 | + "dateModified": "2026-07-10" |
91 | 91 | } |
92 | 92 | </script> |
93 | 93 |
|
@@ -516,8 +516,7 @@ <h3>Live stream & remote control</h3> |
516 | 516 | <li>Adjustable stream quality and frame rate (up to 240 FPS)</li> |
517 | 517 | <li>Dynamic zoom controls with mouse-wheel tracking</li> |
518 | 518 | <li>Interactive control over SignalR for responsive remote desktop use</li> |
519 | | - <li><strong>Share Screen:</strong> Share the live stream via a secure, public link |
520 | | - without dashboard login</li> |
| 519 | + <li><strong>Share Screen:</strong> Share the live stream via a secure, public link without dashboard login; set a custom expiry (hours + minutes) or <strong>No time limit</strong> — expired links are automatically invalidated</li> |
521 | 520 | </ul> |
522 | 521 | </div> |
523 | 522 |
|
@@ -656,6 +655,37 @@ <h3>Remove agent</h3> |
656 | 655 | </ul> |
657 | 656 | </div> |
658 | 657 |
|
| 658 | + <div class="feature-card"> |
| 659 | + <div class="feature-icon">📡</div> |
| 660 | + <h3>Real-time device ping</h3> |
| 661 | + <p>Live round-trip latency shown for every connected agent in the device list, updated every ~10 seconds.</p> |
| 662 | + <ul class="feature-list"> |
| 663 | + <li>Color-coded RTT indicator (green / yellow / red) for at-a-glance status</li> |
| 664 | + <li>Cleartext ping IDs only — no sensitive payload in the probe</li> |
| 665 | + </ul> |
| 666 | + </div> |
| 667 | + |
| 668 | + <div class="feature-card"> |
| 669 | + <div class="feature-icon">📲</div> |
| 670 | + <h3>Telegram notifications & commands</h3> |
| 671 | + <p>Optional Telegram bot integration for instant alerts and remote queries directly from your phone.</p> |
| 672 | + <ul class="feature-list"> |
| 673 | + <li><strong>Online alert:</strong> Receive a Telegram message the moment any device comes online</li> |
| 674 | + <li>Configure Bot Token and Chat ID from the Agent settings panel; includes BotFather setup help and a test message button</li> |
| 675 | + <li><strong><code>/Get_info</code> command:</strong> Send the command in your Telegram chat to fetch Computer Info from an online agent; multi-device selection when several devices are connected</li> |
| 676 | + </ul> |
| 677 | + </div> |
| 678 | + |
| 679 | + <div class="feature-card"> |
| 680 | + <div class="feature-icon">🕵️</div> |
| 681 | + <h3>Stealth mode</h3> |
| 682 | + <p>Hide the agent's tray icon so it runs silently in the background, visible only in the Windows Task Manager.</p> |
| 683 | + <ul class="feature-list"> |
| 684 | + <li>Toggle from the Agent settings panel per device</li> |
| 685 | + <li>No system tray icon or taskbar entry — agent keeps running uninterrupted</li> |
| 686 | + </ul> |
| 687 | + </div> |
| 688 | + |
659 | 689 | <div class="feature-card"> |
660 | 690 | <div class="feature-icon">🛠️</div> |
661 | 691 | <h3>Server manager</h3> |
@@ -726,6 +756,10 @@ <h3 class="security-block-title">🔒 Server-Level Security</h3> |
726 | 756 | <tr><td><strong>API authentication</strong></td><td>JWT Bearer token with <code>DashboardAccess</code> claim required for all admin endpoints</td></tr> |
727 | 757 | <tr><td><strong>SignalR hub auth</strong></td><td><code>DashboardHubAuthorizationFilter</code> — all methods require <code>dashboard_access: true</code> claim</td></tr> |
728 | 758 | <tr><td><strong>AES key validation</strong></td><td>App refuses to start if <code>AES_MASTER_KEY_HEX</code> is missing or not exactly 256 bits</td></tr> |
| 759 | + <tr><td><strong>Per-agent encryption keys</strong></td><td>Each stub built via Server Manager gets its own randomly generated AES-256 key + <code>AgentKeyId</code> registered in <code>AgentKeys.json</code> (hot-reloaded). Leaking one stub no longer exposes the traffic of every other device — the shared <code>AES_MASTER_KEY_HEX</code> remains BackEnd↔FrontEnd only</td></tr> |
| 760 | + <tr><td><strong>Per-stub connect token</strong></td><td>Each new stub receives a unique <code>AGENT_CONNECT_TOKEN</code> (256-bit random hex). The BackEnd validates it with <code>CryptographicOperations.FixedTimeEquals</code> on <code>ConnectAsDevice</code> before registering the device — preventing identity spoofing on the open hub method</td></tr> |
| 761 | + <tr><td><strong>Encrypted hub tunnel</strong></td><td>Sensitive admin↔BackEnd and agent↔BackEnd payloads travel as AES-GCM ciphertext inside generic hub targets (<code>ReceiveEncryptedFromAdmin</code>, <code>ReceiveEncryptedFromAgent</code>, <code>ReceiveEncryptedPacket</code>) — only Base64 blobs appear on the wire</td></tr> |
| 762 | + <tr><td><strong>Replay protection</strong></td><td>In-memory <code>ReplayCache</code> tracks SHA-256 fingerprints of received ciphertext blobs. Duplicate packets are rejected immediately. Combined with a 60-second <code>packet.Timestamp</code> window — stale or replayed packets (e.g. a captured shutdown command) are silently dropped on both BackEnd and RemoteAgent sides. Configurable via <code>ReplayProtection:MaxAgeSeconds</code></td></tr> |
729 | 763 | <tr><td><strong>SQL injection</strong></td><td>Entity Framework Core parameterized queries only</td></tr> |
730 | 764 | <tr><td><strong>Error handling</strong></td><td>Internal exception details never exposed to HTTP clients; full details in server logs only</td></tr> |
731 | 765 | <tr><td><strong>Audit logging</strong></td><td>SQLite event log — action, IP, UserAgent, risk level (Low / Medium / High / Critical), PII-masked</td></tr> |
|
0 commit comments