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:

    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:

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.

License

This project is licensed under the MIT License. See LICENSE for more details.