123 lines
4.6 KiB
Markdown
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.
|