Skip to content
Permalink
main
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
 
 
Cannot retrieve contributors at this time
# Enumerating a System over the Network
## Project Overview
This project demonstrates a system for managing and interacting with virtual machines (VMs) over a network. It provides a graphical user interface (GUI) for sending commands to connected VMs, retrieving their output, and saving results for further analysis. The project is designed to support both Linux and Windows environments.
## Features
- **Multi-VM Management**: Connect and interact with multiple VMs simultaneously.
- **Cross-Platform Command Execution**: Execute predefined commands on Linux and Windows systems.
- **Output Logging**: Save command outputs to text files for documentation and analysis.
- **Graphical Interface**: Intuitive GUI for selecting VMs, OS types, and commands.
- **Test Coverage**: Unit tests to ensure the reliability of configurations and utilities.
## File Structure
### Main Application
- **`main.py`**: Entry point of the application. Initializes and launches the GUI.
- **`controller_app.py`**: Core application logic for interacting with VMs and managing the GUI.
### Client Scripts
- **`clientkali.py`**: Client-side script for handling commands on Linux systems.
- **`clientwindows.py`**: Client-side script for handling commands on Windows systems.
- **`clientwindowsvm.py`**: Alternate script for managing commands on Windows VMs.
### Configuration and Utilities
- **`config_handler.py`**: Manages VM configurations and predefined commands for Linux and Windows.
- **`utilities.py`**: Provides helper functions, such as saving command outputs to files.
### Testing
- **`unit_test.py`**: Contains unit tests for `config_handler.py` and `utilities.py` to verify functionality.
## Usage
### Prerequisites
1. Python 3.x installed on your machine.
2. Network connectivity between the controller and the VMs.
3. Ensure the client scripts are running on the respective VMs.
### Running the Application
1. Start the application by executing:
```bash
python main.py
```
2. Use the GUI to:
- Select a VM.
- Choose the operating system (Linux/Windows).
- Pick a command from the dropdown.
- Click "Send Command" to execute it on the selected VM.
- View the output in the GUI or save it automatically to a file.
3. To send commands to all connected VMs, use the "Send to All VMs" button.
### Client Setup
- **Linux**: Run `clientkali.py` on the Linux VM.
- **Windows**: Run `clientwindows.py` or `clientwindowsvm.py` on the Windows VM.
### Testing
Run the unit tests to verify configurations and utilities:
```bash
python -m unittest unit_test.py
```
## Example Commands
### Linux
- Get users: `cat /etc/passwd`
- Check open ports: `nmap localhost`
- System information: `uname -a`
### Windows
- Display network info: `ipconfig`
- List processes: `tasklist`
- System information: `systeminfo`
## Demonstration
For a detailed walkthrough, refer to the [YouTube demonstration](https://youtu.be/BWhxCd8t6YA).
## License
This project is licensed under the MIT License. See `LICENSE` for more details.