diff --git a/README.md b/README.md index 61788aa..1621fc0 100644 --- a/README.md +++ b/README.md @@ -1,30 +1,116 @@ -# EventMaster +

+ +

-The most hackable Ticket-Shop! +

EventMaster

+

The most hackable Ticket-Shop!

+ +![Hompage](/misc/images/homepage.png) + +## About the project + +EventMaster is a desktop application for simulating various hacking methods for web applications. It's the perfect tool to understand vulnerabilities in modern web applications. + +The shop offers tickets for concerts of popular bands with a complete ordering system, account management and admin interface. The program has been deliberately provided with vulnerabilities for teaching purposes, e.g. SQL injections. If a task is solved and a vulnerability is identified, the system provides visual feedback. The progress can be viewed on an overview page. + +This project is created during my Bachelor thesis. It will be used at Leibniz University Hannover for foundation lectures. + +## Important notes! +- ⚠️ The project is under development, bugs may occur +- ⚠️ The software is developed for educational purposes, don't use the attack techniques without permission on other applications and systems! +- ⚠️ Works 100% offline, no data transmission to or from external services + +## Features +- 13 exercises +- 3 attack techniques + - SQL-Injections + - Cross-Site-Scripting + - Broken Access Control +- Exercise control system - check the progress and get feedback for solved exercises! +- Full working ticket shop: + - Vuetify design + - Account management system + - Order process system + - Event locations with seat plan and seat reservation system during ordering process + - Global search + - Admin panel + - Product pages + - ExpressJs-Backend server + - REST-API + - SQLite Database +- URL simulation bar for electron application +- Works 100% offline +- Multi language support (German, English) +- Dark/Light-Mode +- Exercise progress PDF generation +- API-Documentation with Swagger +- Desktop application packed with Electron +- Database can be resetted complete or partially + +### Techstack + +- Axios +- Electron +- Electron Builder +- Express.js +- JsonWebToken +- jspdf +- Moment.js +- NPM +- Nodemon +- Pinia +- Sequelize +- SQLite 3 +- Swagger +- TypeScript +- Vite +- Vue i18n +- Vue.js +- VueRouter +- Vuetify + +### Planned features + +- More attack techniques +- More exercises +- More languages +- Customize the offered set of exercises (for trainer) +- Image license view system (currently only in admin panel) + +### Screenshots + +#### Band Detail page +![Band Detail page](/misc/images/band-detail-seite.png) + +#### Booking page +![Booking page](/misc/images/booking-concert.png) + +#### Admin panel +![Admin panel](/misc/images/admin-panel.png) + +#### Global search +![Global search](/misc/images/search.png) + +#### Feedback on exercise solution +![Snackbar Feedback](/misc/images/snackbar-feedback.png) ## How to use -### Prepare development environment +### Download pre-builded images -1. Install node.js +Go to releases and download one of the pre-builded images for your operating system. -```bash -sudo apt install npm +### Build yourself -# If outdated version: -sudo npm install -g n -sudo n stable -``` - -2. Download + extract the project -3. Open the root folder with VS Code (recommended) -4. Open the bash inside VS Code and install all necessary packages: +1. Download + extract the project +2. Open the root folder with VS Code (recommended) +3. Open the bash inside VS Code and install all necessary packages: ```bash npm i ``` -### Test/development +#### Test/development There are multiple commands to test parts or the whole project: @@ -34,7 +120,7 @@ There are multiple commands to test parts or the whole project: The frontend runs on `http://localhost:5173/` and the backend on `http://localhost:3000/` -### Build +#### Build - `npm run vite:build`: Build Vue frontend only - `npm run server:build`: Build ExpressJs backend only @@ -47,3 +133,7 @@ The frontend runs on `http://localhost:5173/` and the backend on `http://localho ### Database ![database-erm](misc/images/database.png) + +### Frontend-Backend-System + +![frontend-backend-system](misc/images/frontend-backend-system.png) diff --git a/misc/frontend-backend-system.drawio b/misc/frontend-backend-system.drawio new file mode 100644 index 0000000..b85252b --- /dev/null +++ b/misc/frontend-backend-system.drawio @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/misc/frontend-structure.drawio b/misc/frontend-structure.drawio deleted file mode 100644 index b329e5f..0000000 --- a/misc/frontend-structure.drawio +++ /dev/null @@ -1,181 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/misc/images/admin-panel.png b/misc/images/admin-panel.png new file mode 100644 index 0000000..f722189 Binary files /dev/null and b/misc/images/admin-panel.png differ diff --git a/misc/images/band-detail-seite.png b/misc/images/band-detail-seite.png new file mode 100644 index 0000000..1374704 Binary files /dev/null and b/misc/images/band-detail-seite.png differ diff --git a/misc/images/booking-concert.png b/misc/images/booking-concert.png new file mode 100644 index 0000000..9b9f69c Binary files /dev/null and b/misc/images/booking-concert.png differ diff --git a/misc/images/frontend-backend-system.png b/misc/images/frontend-backend-system.png new file mode 100644 index 0000000..9c5c36f Binary files /dev/null and b/misc/images/frontend-backend-system.png differ diff --git a/misc/images/homepage.png b/misc/images/homepage.png new file mode 100644 index 0000000..2388f3e Binary files /dev/null and b/misc/images/homepage.png differ diff --git a/misc/images/logo.png b/misc/images/logo.png new file mode 100644 index 0000000..c9ecf18 Binary files /dev/null and b/misc/images/logo.png differ diff --git a/misc/images/search.png b/misc/images/search.png new file mode 100644 index 0000000..8ced7c5 Binary files /dev/null and b/misc/images/search.png differ diff --git a/misc/images/snackbar-feedback.png b/misc/images/snackbar-feedback.png new file mode 100644 index 0000000..ef83705 Binary files /dev/null and b/misc/images/snackbar-feedback.png differ