# Argus A network reconnaissance and monitoring tool built with Rust and Tauri. Combines the functionality of Angry IP Scanner, Advanced IP Scanner, Ping Info View, and Nmap into a single desktop application with a cyber/NOC-themed UI. Named after Argus Panoptes, the hundred-eyed giant of Greek mythology. ## Features ### Scanner - ICMP ping sweep with unprivileged sockets (no root/admin required) - IP range input supporting CIDR, start-end ranges, comma-separated, and mixed formats - Reverse DNS hostname resolution - TCP connect port scanning with configurable port lists - Service banner grabbing (SSH, FTP, SMTP, HTTP) - NetBIOS name and workgroup resolution - Sortable, filterable, real-time results table - Host detail panel with full port breakdown - Export to CSV (all hosts or Up-only) - Column show/hide preferences (persisted) - Row checkboxes with select-all for batch operations ### Nmap Integration - Shell out to system nmap with scan presets (Quick, Service Detection, OS Detection, Full) - Custom argument support - Real-time streaming output with color-coded lines - Verbose mode toggle - Start/stop control ### Continuous Ping Monitor - Multi-host ping monitoring with configurable intervals (1s to 30s) - Per-host statistics: min/avg/max latency, packet loss, consecutive failures - Status detection: Up, Down, Degraded - State change event logging - Add hosts manually or import from scan results ### Cross-tab Workflow - Send scan results to Monitor or Nmap tabs (all hosts, Up-only, or checked) - Right-click context menu: copy IP/hostname, open HTTP/HTTPS, traceroute, send to other tabs - Each tab has independent manual input ### Other - Traceroute via system tracepath (Linux) or tracert (Windows), no privileges required - Privilege detection indicator in status bar - Auto-update check against Gitea/GitHub releases API - Dark cyber/NOC theme with circuit board art and glow effects ## Requirements - **Rust** (stable, 2021 edition) - **Tauri v2** system dependencies - Linux: `webkit2gtk-4.1`, `libappindicator3-dev`, `librsvg2-dev`, and related libs - Windows: WebView2 runtime (included in Windows 10/11) - **nmap** (optional, for Nmap tab functionality) - **tracepath** or **traceroute** (optional, for traceroute feature; tracepath is usually pre-installed on Linux) ## Building ```bash # Development cargo tauri dev # Production build cargo tauri build ``` ## Privileges The core scanning workflow runs without elevation on all platforms: - **Linux**: Uses unprivileged ICMP datagram sockets (kernel 2.6.30+). Requires user's GID within `net.ipv4.ping_group_range`. - **Windows**: Uses Win32 `IcmpSendEcho2Ex` API. No administrator rights required. Running as root/admin enables additional nmap scan types (OS detection with `-O`, SYN scanning with `-sS`). ## Tech Stack | Layer | Technology | |-----------|--------------------| | Framework | Tauri 2 | | Backend | Rust | | Frontend | Vanilla JavaScript | | Async | Tokio | | ICMP | ping-async | | DNS | dns-lookup | ## Project Structure ``` argus/ ├── src-tauri/ │ └── src/ │ ├── commands/ # Tauri IPC command handlers │ │ ├── actions.rs # URL launch, privilege check │ │ ├── export.rs # CSV export │ │ ├── monitor.rs # Continuous ping monitor │ │ ├── nmap.rs # Nmap subprocess integration │ │ ├── scan.rs # Ping sweep orchestration │ │ ├── traceroute.rs │ │ └── updater.rs # Version check against git releases │ ├── models/ # Data structures │ │ ├── host.rs # HostResult, PortResult, NetbiosInfo │ │ └── monitor.rs # MonitorEntry, MonitorStatus │ ├── net/ # Network utilities │ │ ├── dns.rs # Reverse DNS resolution │ │ └── range.rs # IP range parsing │ └── scanner/ # Scanning engines │ ├── netbios.rs # NetBIOS NBSTAT queries │ ├── ping.rs # ICMP ping sweep │ └── port.rs # TCP port scanning + banner grab ├── src/ │ ├── index.html # App layout │ ├── styles.css # Cyber/NOC dark theme │ └── main.js # All frontend logic └── README.md ``` ## License This project is licensed under the GNU Affero General Public License v3.0. See [LICENSE](LICENSE) for details.