A professional curses-based terminal interface for nmap, providing a user-friendly alternative to Zenmap that runs entirely in the terminal. This tool brings the power of nmap to system administrators and security professionals who prefer command-line environments.
- Interactive Terminal Interface: Full curses-based GUI that works in any terminal
- Multiple Scan Types: Pre-configured scan profiles including quick scans, intense scans, UDP scans, and more
- Real-time Progress Tracking: Visual progress bar with elapsed time and host counting
- Live Output Display: Watch scan progress in real-time with live output streaming
- Formatted Results: Clean, color-coded results with toggle between formatted and raw output
- Scan History: Keep track of previous scans with timestamps and commands
- Easy Navigation: Intuitive keyboard navigation with arrow keys and shortcuts
- Target Flexibility: Support for single IPs, ranges, subnets, and hostnames
- Cross-Platform: Works on Linux, macOS, and other Unix-like systems
- Python: 3.8 or higher
- nmap: Installed and available in PATH
- Terminal: Curses-compatible terminal (most Unix terminals)
- Minimum Resolution: 80x40 characters
- Operating System: Linux, macOS, or other Unix-like systems
# Clone the repository
git clone https://github.com/surreal70/nmap-terminal-gui.git
cd nmap-terminal-gui
# Run the installation script
chmod +x install.sh
./install.sh-
Install nmap (if not already installed):
# Ubuntu/Debian sudo apt-get install nmap # CentOS/RHEL/Fedora sudo dnf install nmap # macOS (with Homebrew) brew install nmap
-
Set up Python environment:
# Create virtual environment (recommended) python3 -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate # Install dependencies pip install -r requirements.txt
-
Install the package:
# Development installation pip install -e . # Or direct installation pip install .
# Run the application
python3 nmap_gui.py
# Or if installed via pip
nmap-gui- Arrow Keys: Navigate menus and scroll through results
- Enter: Select menu items or start scans
- Tab: Switch between target input and scan type selection
- ESC: Go back to previous screen
- q: Quit application or stop running scan
- r: Toggle between formatted and raw results (in results view)
The application includes several pre-configured scan types:
| Scan Type | Description | nmap Options |
|---|---|---|
| Quick scan | Fast scan of common ports | -T4 -F |
| Intense scan | Comprehensive scan with OS detection | -T4 -A -v |
| Intense scan plus UDP | TCP and UDP scan | -sS -sU -T4 -A -v |
| Intense scan, all TCP ports | Full TCP port range | -p 1-65535 -T4 -A -v |
| Ping scan | Host discovery only | -sn |
| TCP SYN scan | Stealth TCP scan | -sS |
| TCP connect scan | Full TCP connection | -sT |
| UDP scan | UDP port scan | -sU |
| OS detection | Operating system detection | -O |
| Service version detection | Service and version detection | -sV |
- Single IP:
192.168.1.1 - IP range:
192.168.1.1-254 - Subnet:
192.168.1.0/24 - Hostname:
example.com - Multiple targets:
192.168.1.1 192.168.1.5 example.com
The application provides several main screens:
- Main Menu: Navigate between different functions
- Scan Configuration: Set up targets and scan types
- Real-time Scan View: Watch scans progress with live updates
- Results Display: View formatted or raw scan results
- Scan History: Review previous scans
- Help System: Built-in documentation
# Clone the repository
git clone https://github.com/surreal70/nmap-terminal-gui.git
cd nmap-terminal-gui
# Create virtual environment
python3 -m venv venv
source venv/bin/activate
# Install development dependencies
pip install -r requirements.txt
pip install -e .
# Install development tools (optional)
pip install black isort flake8This project follows Python development best practices:
- PEP 8: Code style compliance
- Type Hints: Where applicable
- Documentation: Comprehensive docstrings
- Error Handling: Robust exception handling
- Virtual Environments: Isolated dependencies
# Run the application in development mode
python3 nmap_gui.py
# Check code style
flake8 nmap_gui.py
# Format code (if black is installed)
black nmap_gui.py- This tool requires the same permissions as nmap
- Some scan types may require root privileges (
sudo) - Be responsible and only scan networks you own or have permission to test
- Respect rate limiting and avoid overwhelming target systems
- Always comply with local laws and regulations
- β¨ Added real-time progress indicator with visual progress bar
- β¨ Enhanced elapsed time tracking during scans
- β¨ Improved scan result formatting with color coding
- β¨ Added toggle between formatted and raw output
- β¨ Increased minimum terminal resolution to 80x40
- π§ Applied Python development framework standards
- π§ Added proper project structure and packaging
- π Added MIT license and copyright headers
- π Comprehensive README documentation
- π Initial release
- β¨ Basic curses-based nmap interface
- β¨ Multiple scan type support
- β¨ Real-time output display
- β¨ Scan history tracking
- β¨ Interactive menu system
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Andreas Huemmer
- Email: andreas.huemmer@adminsend.de
- GitHub: @surreal70
- The nmap development team for creating the powerful network scanning tool
- The Python curses library maintainers
- The open-source community for inspiration and feedback
If you encounter any issues or have questions:
- Check the Issues page
- Create a new issue with detailed information
- Contact the author directly for urgent matters
Note: This tool is for educational and authorized testing purposes only. Always ensure you have proper authorization before scanning networks.