Files
argus/README.md
2026-09-23 10:23:27 -04:00

123 lines
4.6 KiB
Markdown

# 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
# Cross Compiling Windows on Linux
cargo tauri build --runner cargo-xwin --target x86_64-pc-windows-msvc
```
## 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.