BanditGUI is a web-based interface for the popular OverTheWire Bandit wargame. It aims to make learning cybersecurity fundamentals more approachable by providing a browser-based terminal, structured level information, and an AI-powered assistant.
The command-line nature of challenges like Bandit can be a hurdle for beginners. BanditGUI lowers this barrier by:
- Providing an integrated terminal in your browser.
- Offering easy access to level goals, commands, and learning resources.
- Assisting with hints and explanations through an AI chat interface.
- Interactive Web Terminal: A full-featured xterm.js terminal in your browser to connect to Bandit via SSH.
-
Real SSH Connections: Practice with actual Linux commands in a realistic environment.
-
Level Guidance: Access information, relevant commands, and reading materials for each Bandit level.
- AI-Powered Chat Assistant: Get intelligent hints and explanations from an LLM-powered chat (supports various models via LiteLLM).
- Simplified Setup: Easy installation using a Python script.
- Modular Design: Built with a maintainable Python Flask backend and JavaScript frontend.
- Backend: Python (Flask)
- Frontend: HTML, CSS, JavaScript (xterm.js)
- SSH: Paramiko
- LLM Integration: LiteLLM
-
Clone the repository:
git clone https://github.com/therealfredp3D/Making-BanditGUI.git cd Making-BanditGUI
-
Run the installation script: This script will set up a virtual environment, install dependencies, and create run scripts.
python install.py # or python3 install.py on some systems
-
Follow on-screen instructions. The script will guide you through any necessary checks.
- Windows: Execute
run.bat
(Generated byinstall.py
) - Linux/macOS: Execute
./run.sh
(Generated byinstall.py
)
Once started, the application is typically available at http://127.0.0.1:5000
.
We welcome contributions! Please follow these general steps:
- Fork the repository.
- Create a new branch for your feature or bug fix.
- Make your changes.
- Test your changes thoroughly.
- Commit your changes with a clear message.
- Open a Pull Request to the
main
branch.
We are continuously working to improve BanditGUI. Some of our future goals include:
- Password Management: Adding secure password storage with encryption
- Progress Tracking: Implementing a system to track user progress through the challenges
- Gamification: Adding badges, streaks, and other gamification elements to increase engagement
This project is licensed under the MIT License.
The application includes an advanced chat interface powered by Large Language Models (LLMs). It leverages litellm
to support various API providers and LLMs, making it easy to switch between different models.
Dynamic Ollama Model Loading:
- When selecting an Ollama model, the app automatically fetches the list of available models from your local Ollama server (
http://localhost:11434/api/tags
). - This ensures the dropdown always reflects the actual models you have installed in Ollama, without needing to update the static config file.
For more detailed installation instructions, see installation guide.
- The frontend now uses Webpack to bundle and minify JavaScript and CSS assets for improved performance.
- All main JS and CSS are bundled into
banditgui/static/dist/main.js
andbanditgui/static/dist/styles.css
. - The main HTML template (
banditgui/templates/index.html
) now references these bundled files.
-
Install dependencies (if not already):
npm install
-
Build the assets:
npm run build
-
The output will be in
banditgui/static/dist/
.
Note: If you add or change JS/CSS, re-run
npm run build
to update the bundles.