blackhat-simulator icon indicating copy to clipboard operation
blackhat-simulator copied to clipboard

A realistic (I hope) hacking simulator/game

GitHub issues GitHub license GitHub stars GitHub all releases GitHub release (latest by date)


Logo

Blackhat Simulator

A Realistic hacking/penetration testing simulator/game
View Docs · Report Bug · Request Feature · Join the discord

Table of Contents

  1. About The Project
    • Built With
  2. Getting Started
    • Prerequisites
    • Installation
  3. Usage
  4. Contributing
  5. License
  6. Acknowledgements

About The Project

This game was inspired by the games Grey Hack , Hacknet, and NITE Team 4 on steam. I originally started this project in C++ because I wanted an easy way for the user to build and compile their own binaries, then run them within the game without creating a programming language from scratch. This was accomplished by compiling without standard libraries and using custom replacements that interact with the game instance instead of the actual machine they're running on. However, due to my lack of knowledge of C++ (and probably many other reasons), I hit a dead-end and put the project on pause for a while. I decided to re-start the project in python (without some features I originally wanted) because I am much more knowledgeable when it comes to python. Note that this software is still in very early stages, and many parts are subject to change.

Note: Some of the games "implementations" are only loosely based on their real world counterpart for one or more of these reasons:

  1. I was too lazy / will come back to it later
  2. Since this is intended to be a simulator type game, some of these items might ruin the experience/won't be fun in a video game
  3. My knowledge of the given topic isn't sufficient to create an accurate "implementation" of the item.

Built With

Getting Started

This program was only tested on Linux (arch specifically), but hypothetically, it should work on Windows (🤞)

Prerequisites

Python must be installed. All dependencies are listed in requirements.txt

Installation

  1. Clone the repo

    git clone https://github.com/stautonico/blackhat-simulator
    
  2. Enter the directory

    cd blackhat-simulator
    
  3. Install dependencies

    pip install -r requirements.txt
    

Usage

To start the client:

  1. Make sure you followed all steps in #Installation
  2. cd client
  3. python3 main.py

To run the tests:

  1. Make sure you have all requirements installed: pip install -r requirements.txt
  2. cd client
  3. python -m unittest blackhat/tests/test_binaries.py

All "documentation" is generated through the use of docstrings (google format) and pdoc3. To generate documentation:

pdoc --html --output-dir docs -c show_source_code=True -c show_type_annotations=True client.blackhat

If you have an issue with overwriting, you can add the --force tag, which will automatically overwrite any old files.

Road Map

These are some features I have in mind (sorted by priority)

Close 🔍

  • [ ] Increase "coreutils" functionality (most bins only have basic functionality, they should be more accurate to the real world)

  • [ ] Manpages (None have manuals/instructions)

  • [ ] Tests (As of now, any code, working or not working, gets pushed to main (that's not good lol))

  • [ ] System logging (Real linux systems log stuff like auth attempts, network connections, etc)

Far 🔭

  • [ ] Multiplayer (This may be unlikely due to the fact that the "game" has many vulnerabilities that may allow the players' system to be compromised in a multiplayer scenario, but this may change in the future.)

  • [ ] PyGame based UI (instead of terminal based game) (This is likely to occur, but isn't my top priority.)

  • [ ] Story (As of now, this project is closer to being a game framework then being an actual game. After the project's functionality becomes more saturated, a single player "story" mode is likely to come to fruition.)

Contributing

Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.

  1. READ CONTRIBUTING.md
  2. Fork the Project
  3. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  4. Commit your Changes (git commit -m 'Add some AmazingFeature')
  5. Push to the Branch (git push origin feature/AmazingFeature)
  6. Open a Pull Request

License

Distributed under the MIT License. See LICENSE for more information.

Acknowledgements