diff --git a/Caddyfile b/Caddyfile deleted file mode 100644 index 90e49e4..0000000 --- a/Caddyfile +++ /dev/null @@ -1,27 +0,0 @@ -# Caddyfile za MiTM demo aplikacijo -# Za HTTPS demo z avtomatskimi SSL certifikati - -# HTTP verzija - za MiTM demo (paketi vidni v Wireshark) -:8080 { - reverse_proxy localhost:8081 - log { - output file /var/log/caddy/mitm-demo-http.log - format console - } -} - -# HTTPS verzija - za primerjavo (paketi šifrirani) -# OPOMBA: Za lokalno testiranje uporabite localhost namesto domene -localhost:8443 { - reverse_proxy localhost:8081 - tls internal # Uporabi Caddy-jeve self-signed certs za localhost - log { - output file /var/log/caddy/mitm-demo-https.log - format console - } -} - -# Za resnično domeno z Let's Encrypt certifikati: -# vasa-domena.com { -# reverse_proxy localhost:8081 -# } \ No newline at end of file diff --git a/README.md b/README.md deleted file mode 100644 index 0fdef01..0000000 --- a/README.md +++ /dev/null @@ -1,154 +0,0 @@ -# 🏦 SecureBank Demo - MiTM Napadalna Aplikacija - -Preprosta Go spletna aplikacija za demonstracijo razlike med HTTP in HTTPS pri prenosu občutljivih podatkov (MiTM napadi). - -## 🎯 Namen aplikacije - -Ta aplikacija je namenjena **izobraževalnim** namenom za prikaz: -- Kako so podatki vidni v HTTP prometu -- Kako HTTPS ščiti podatke pred prisluškovalci -- Praktična uporaba Wireshark-a za analizo mrežnega prometa - -## 🚀 Hitri zagon - -### 1. Zaženite Go aplikacijo -```bash -go run main.go -port 8081 -``` - -### 2. Testiraj HTTP (nezaščiten) -Odprite brskalnik: `http://localhost:8081` - -### 3. Zagon s Caddy za HTTPS -```bash -# Namestite Caddy (če še ni nameščen) -# Na Ubuntu/Debian: -sudo apt install caddy - -# Na macOS: -brew install caddy - -# Zaženite Caddy z našo konfiguracijo -caddy run --config Caddyfile - -# Aplikacija bo dostopna na: -# HTTP: http://localhost:8080 (preko Caddy proxy) -# HTTPS: https://localhost:8443 (z avtomatskimi SSL certifikati) -``` - -## 🔍 MiTM Demo navodila - -### Korak 1: HTTP analiza -1. **Zaženite Wireshark** - ```bash - sudo wireshark - ``` - -2. **Nastavite filtre:** - - Vmesnik: `Loopback: lo` - - Filter: `http and tcp.port == 8080` - -3. **Testirajte prenose:** - - Prijavite se z: `admin` / `admin123` - - Opazujte pakete v Wireshark-u - -4. **Poiščite POST request:** - - Desni klik na paket → Follow → HTTP Stream - - Videli boste geslo v običajnem besedilu! - -### Korak 2: HTTPS primerjava -1. **Nastavite Wireshark filter:** - ``` - tcp.port == 8443 - ``` - -2. **Dostopajte do HTTPS verzije:** - ``` - https://localhost:8443 - ``` - -3. **Primerjajte pakete:** - - Videli boste samo TLS handshake - - Aplikacijski podatki so šifrirani - - Gesla niso več vidna! - -## 👤 Demo uporabniki - -| Uporabniško ime | Geslo | Opis | -|-----------------|----------|------| -| `admin` | `admin123` | Administrator | -| `janez` | `geslo123` | Običajen uporabnik | - -## 📂 Struktura projekta - -``` -server/ -├── main.go # Glavna Go aplikacija -├── Caddyfile # Caddy konfiguracija -├── templates/ # HTML predloge -│ ├── home.html -│ ├── login.html -│ ├── register.html -│ └── dashboard.html -└── static/ - └── style.css # CSS styling -``` - -## 🛠️ Comandni argumenti - -```bash -go run main.go -port 8081 # Nastavi drug port -``` - -## ⚠️ Varnostna opozorila - -**Ta aplikacija je namenoma NEZAŠČITENA in vsebuje varnostne luknje:** - -- ❌ Gesla se shranjujejo v običajnem besedilu -- ❌ Ni session managementa -- ❌ Ni CSRF zaščite -- ❌ Ni proper input validacije -- ❌ Ni rate limiting-a - -**NE UPORABLJAJTE V PRODUKCIJI!** To je samo demonstracijska aplikacija. - -## 🎓 Za prezetnje - -### Ključne točke za predstavo: -1. **HTTP telovi** - pokažite kako so gesla vidna -2. **TLS Encryption** - razložite razliko v Wireshark-u -3. **Headers analiza** - pokažite HTTP vs HTTPS headers -4. **Certificate validation** - pokažite browser warnings za self-signed certs - -### Dodatni filtri za Wireshark: -``` -# Samo POST requesti -http.request.method == POST - -# Form data -urlencoded-form - -# TLS paketi -tls -``` - -## 🔧 Troubleshooting - -**Problem:** Caddy se ne zažene -**Rešitev:** Preverite če port 8080/8443 ni že zaseden: -```bash -lsof -i :8080 -lsof -i :8443 -``` - -**Problem:** Browser SSL warning -**Rešitev:** To je normalno za self-signed certifikate. Kliknite "Advanced" → "Proceed to localhost" - -**Problem:** Wireshark ne vidi paketov -**Rešitev:** Poskusite filter `tcp.port == 8081` (direct Go app port) - -## 📚 Dodatni viri - -- [Caddy dokumentacija](https://caddyserver.com/docs/) -- [Wireshark User Guide](https://www.wireshark.org/docs/wsug_html_chunked/) -- [OWASP TLS Guidelines](https://owasp.org/www-project-cheat-sheets/cheatsheets/Transport_Layer_Protection_Cheat_Sheet.html) \ No newline at end of file diff --git a/bank/securebank-embedded b/bank/securebank-embedded deleted file mode 100755 index 07fee85..0000000 Binary files a/bank/securebank-embedded and /dev/null differ diff --git a/go.mod b/go.mod deleted file mode 100644 index aa87cb2..0000000 --- a/go.mod +++ /dev/null @@ -1,3 +0,0 @@ -module secure-bank-demo - -go 1.25.5 diff --git a/launch_browsers.sh b/launch_browsers.sh deleted file mode 100644 index 9bdd37d..0000000 --- a/launch_browsers.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/bash - -echo "🌐 Starting browsers with HTTPS certificate bypass..." -echo "" - -# Chrome with certificate bypass -if command -v google-chrome &> /dev/null; then - echo "🔧 Starting Chrome with certificate bypass..." - google-chrome --ignore-certificate-errors-on-localhost https://localhost:8443 & - echo "✅ Chrome started" -elif command -v chromium &> /dev/null; then - echo "🔧 Starting Chromium with certificate bypass..." - chromium --ignore-certificate-errors-on-localhost https://localhost:8443 & - echo "✅ Chromium started" -fi - -# Firefox (will need manual exception) -if command -v firefox &> /dev/null; then - echo "🔧 Starting Firefox..." - firefox https://localhost:8443 & - echo "ℹ️ Firefox started - you'll need to accept the security exception manually" -fi - -echo "" -echo "📋 URLs for testing:" -echo " HTTP: http://localhost:8080" -echo " HTTPS: https://localhost:8443" -echo "" -echo "💡 For permanent setup, add security exceptions in browser settings" \ No newline at end of file diff --git a/main.go b/main.go deleted file mode 100644 index 49ca72e..0000000 --- a/main.go +++ /dev/null @@ -1,198 +0,0 @@ -package main - -import ( - "flag" - "fmt" - "html/template" - "log" - "net/http" - "sync" -) - -// User struktura za uporabniške podatke -type User struct { - ID int - Username string - Password string - Email string - FullName string -} - -// In-memory shranjevanje uporabnikov -var ( - users = make(map[string]*User) - usersMux = &sync.RWMutex{} - lastID = 0 -) - -// Template cache -var templates *template.Template - -func init() { - // Privzeti uporabniki - addUser("jnovak", "secure123", "janez.novak@securebank.si", "Janez Novak") - addUser("mpetric", "banking456", "maja.petric@securebank.si", "Maja Petrič") -} - -func addUser(username, password, email, fullName string) { - usersMux.Lock() - defer usersMux.Unlock() - lastID++ - users[username] = &User{ - ID: lastID, - Username: username, - Password: password, - Email: email, - FullName: fullName, - } -} - -func main() { - // Nastavimo port preko command line argumenta - var port = flag.String("port", "8080", "Port na katerem se bo zagnal server") - flag.Parse() - - // Naložimo HTML predloge - var err error - templates, err = template.ParseGlob("templates/*.html") - if err != nil { - log.Fatal("Napaka pri nalaganju predlog:", err) - } - - // Statične datoteke (CSS) - http.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("static/")))) - - // Routes - http.HandleFunc("/", homeHandler) - http.HandleFunc("/register", registerHandler) - http.HandleFunc("/login", loginHandler) - http.HandleFunc("/dashboard", dashboardHandler) - http.HandleFunc("/logout", logoutHandler) - - // Zagon strežnika - fmt.Printf("SecureBank aplikacija se zaganja na portu %s\n", *port) - fmt.Printf("Dostop: http://localhost:%s\n", *port) - - serverAddr := ":" + *port - log.Fatal(http.ListenAndServe(serverAddr, nil)) -} - -func homeHandler(w http.ResponseWriter, r *http.Request) { - templates.ExecuteTemplate(w, "home.html", nil) -} - -func registerHandler(w http.ResponseWriter, r *http.Request) { - if r.Method == "GET" { - templates.ExecuteTemplate(w, "register.html", nil) - return - } - - if r.Method == "POST" { - username := r.FormValue("username") - password := r.FormValue("password") - email := r.FormValue("email") - fullName := r.FormValue("fullName") - - //Validacija - if username == "" || password == "" || email == "" || fullName == "" { - templates.ExecuteTemplate(w, "register.html", map[string]string{ - "Error": "Vsa polja so obvezna!", - }) - return - } - - // Preverimo če uporabnik že obstaja - usersMux.RLock() - _, exists := users[username] - usersMux.RUnlock() - - if exists { - templates.ExecuteTemplate(w, "register.html", map[string]string{ - "Error": "Uporabniško ime že obstaja!", - }) - return - } - - // Dodamo novega uporabnika - addUser(username, password, email, fullName) - - // Preusmeri na prijavo - http.Redirect(w, r, "/login?registered=1", http.StatusSeeOther) - return - } -} - -func loginHandler(w http.ResponseWriter, r *http.Request) { - if r.Method == "GET" { - data := map[string]string{} - if r.URL.Query().Get("registered") == "1" { - data["Success"] = "Registracija je bila uspešna! Sedaj se lahko prijavite." - } - templates.ExecuteTemplate(w, "login.html", data) - return - } - - if r.Method == "POST" { - username := r.FormValue("username") - password := r.FormValue("password") - - // Preverimo podatke - usersMux.RLock() - user, exists := users[username] - usersMux.RUnlock() - - if !exists || user.Password != password { - templates.ExecuteTemplate(w, "login.html", map[string]string{ - "Error": "Napačno uporabniško ime ali geslo!", - }) - return - } - - // Uspešna prijava - preusmeri na dashboard - // POZOR: Brez session management za demo! - http.Redirect(w, r, "/dashboard?user="+username, http.StatusSeeOther) - return - } -} - -func dashboardHandler(w http.ResponseWriter, r *http.Request) { - username := r.URL.Query().Get("user") - if username == "" { - http.Redirect(w, r, "/login", http.StatusSeeOther) - return - } - - usersMux.RLock() - user, exists := users[username] - usersMux.RUnlock() - - if !exists { - http.Redirect(w, r, "/login", http.StatusSeeOther) - return - } - - // Simuliramo "bančne" podatke - accounts := []map[string]interface{}{ - { - "Name": "Glavni račun", - "Number": "SI56 1234 5678 9012 345", - "Balance": "€2,456.78", - }, - { - "Name": "Varčevalni račun", - "Number": "SI56 1234 5678 9012 999", - "Balance": "€15,230.45", - }, - } - - data := map[string]interface{}{ - "User": user, - "Accounts": accounts, - } - - templates.ExecuteTemplate(w, "dashboard.html", data) -} - -func logoutHandler(w http.ResponseWriter, r *http.Request) { - http.Redirect(w, r, "/", http.StatusSeeOther) -} diff --git a/static/style.css b/static/style.css deleted file mode 100644 index 6cbf187..0000000 --- a/static/style.css +++ /dev/null @@ -1,984 +0,0 @@ -/* SecureBank - Professional CSS */ - -* { - box-sizing: border-box; - margin: 0; - padding: 0; -} - -body { - font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; - background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); - min-height: 100vh; - color: #333; -} - -.container { - max-width: 1200px; - margin: 0 auto; - min-height: 100vh; - background: white; - box-shadow: 0 0 20px rgba(0,0,0,0.1); -} - -/* Header */ -.header { - background: linear-gradient(135deg, #2c3e50 0%, #3498db 100%); - color: white; - padding: 25px; - box-shadow: 0 4px 8px rgba(0,0,0,0.1); - display: flex; - justify-content: space-between; - align-items: center; -} - -.bank-logo h1 { - font-size: 2.5em; - margin-bottom: 5px; -} - -.tagline { - font-size: 1em; - opacity: 0.9; - font-style: italic; -} - -.user-info { - margin-top: 15px; - font-size: 1.1em; -} - -.logout-btn { - background: #e74c3c; - color: white; - padding: 5px 10px; - border-radius: 5px; - text-decoration: none; - margin-left: 10px; - font-size: 0.9em; -} - -.logout-btn:hover { - background: #c0392b; -} - -/* Main content */ -.main { - padding: 30px; -} - -/* Welcome page */ -.welcome-section { - display: grid; - grid-template-columns: 2fr 1fr; - gap: 40px; - margin: 40px 0; -} - -.welcome-content h2 { - color: #2c3e50; - margin-bottom: 20px; - font-size: 2.2em; -} - -.welcome-text { - font-size: 1.1em; - line-height: 1.6; - margin-bottom: 30px; - color: #555; -} - -.features { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); - gap: 20px; - margin: 30px 0; -} - -.feature { - background: #f8f9fa; - padding: 20px; - border-radius: 10px; - text-align: center; - border-left: 4px solid #3498db; -} - -.feature h3 { - color: #2c3e50; - margin-bottom: 10px; -} - -/* Info sidebar */ -.info-sidebar { - background: #f8f9fa; - padding: 20px; - border-radius: 10px; -} - -.contact-info, -.security-notice { - background: white; - padding: 20px; - margin-bottom: 20px; - border-radius: 8px; - box-shadow: 0 2px 5px rgba(0,0,0,0.1); -} - -.contact-info h4, -.security-notice h4 { - color: #2c3e50; - margin-bottom: 15px; -} - -/* Action section */ -.action-section { - text-align: center; - margin: 40px 0; -} - -.action-section h3 { - color: #2c3e50; - margin-bottom: 20px; -} - -.action-buttons { - display: flex; - gap: 20px; - justify-content: center; - flex-wrap: wrap; -} - -/* Buttons */ -.btn { - padding: 12px 25px; - border: none; - border-radius: 8px; - text-decoration: none; - display: inline-block; - font-weight: bold; - cursor: pointer; - transition: all 0.3s ease; - font-size: 1.1em; -} - -.btn-primary { - background: #3498db; - color: white; -} - -.btn-primary:hover { - background: #2980b9; - transform: translateY(-2px); -} - -.btn-secondary { - background: #95a5a6; - color: white; -} - -.btn-secondary:hover { - background: #7f8c8d; - transform: translateY(-2px); -} - -.btn-outline { - background: transparent; - border: 2px solid #3498db; - color: #3498db; -} - -.btn-outline:hover { - background: #3498db; - color: white; -} - -/* Demo users */ -.demo-users { - background: #f8f9fa; - padding: 20px; - border-radius: 10px; - margin: 30px 0; -} - -.demo-users h3 { - margin-bottom: 15px; - color: #2c3e50; -} - -.user-list { - display: flex; - gap: 15px; - flex-wrap: wrap; -} - -.demo-user { - background: white; - padding: 10px 15px; - border-radius: 5px; - border: 1px solid #ddd; -} - -.demo-user code { - background: #e8f4f8; - color: #2980b9; - padding: 2px 6px; - border-radius: 3px; - font-family: 'Courier New', monospace; -} - -/* Wireshark info */ -.wireshark-info { - background: #e8f5e8; - border: 2px solid #27ae60; - padding: 20px; - border-radius: 10px; - margin: 30px 0; -} - -.wireshark-info h3 { - color: #27ae60; - margin-bottom: 15px; -} - -.wireshark-info ol { - margin-left: 20px; -} - -.wireshark-info li { - margin: 8px 0; -} - -.wireshark-info code { - background: #2c3e50; - color: #ecf0f1; - padding: 2px 6px; - border-radius: 3px; - font-family: 'Courier New', monospace; -} - -/* Form styling */ -.form-container { - max-width: 600px; - margin: 0 auto; -} - -.form-container h2 { - color: #2c3e50; - margin-bottom: 15px; - text-align: center; - font-size: 2em; -} - -.form-subtitle { - text-align: center; - color: #7f8c8d; - margin-bottom: 30px; - font-size: 1.1em; -} - -/* Dashboard specific styles */ -.quick-actions { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); - gap: 20px; - margin: 30px 0; -} - -.action-card { - background: #f8f9fa; - padding: 25px; - border-radius: 10px; - text-align: center; - box-shadow: 0 2px 10px rgba(0,0,0,0.1); - transition: transform 0.3s ease; -} - -.action-card:hover { - transform: translateY(-5px); -} - -.action-card h3 { - color: #2c3e50; - margin-bottom: 10px; - font-size: 1.3em; -} - -.action-card p { - color: #7f8c8d; - margin-bottom: 20px; -} - -/* User info grid */ -.user-info-grid { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); - gap: 15px; -} - -.info-item { - display: flex; - justify-content: space-between; - padding: 10px 0; - border-bottom: 1px solid #ecf0f1; -} - -.info-item strong { - color: #2c3e50; -} - -/* Accounts grid */ -.accounts-grid { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(350px, 1fr)); - gap: 20px; - margin-top: 20px; -} - -.account-header { - display: flex; - justify-content: space-between; - align-items: center; - margin-bottom: 15px; -} - -.account-status { - background: #27ae60; - color: white; - padding: 4px 12px; - border-radius: 20px; - font-size: 0.8em; - font-weight: bold; -} - -.account-balance { - display: flex; - justify-content: space-between; - align-items: center; - margin: 15px 0; - padding: 15px; - background: #f8f9fa; - border-radius: 8px; -} - -.balance-amount { - font-size: 1.5em; - font-weight: bold; - color: #27ae60; -} - -.account-actions { - display: flex; - gap: 10px; -} - -/* Transactions */ -.transaction-list { - background: #f8f9fa; - border-radius: 10px; - padding: 20px; - margin: 20px 0; -} - -.transaction-item { - display: flex; - justify-content: space-between; - align-items: center; - padding: 15px 0; - border-bottom: 1px solid #e9ecef; -} - -.transaction-item:last-child { - border-bottom: none; -} - -.transaction-desc { - font-weight: bold; - color: #2c3e50; -} - -.transaction-date { - font-size: 0.9em; - color: #7f8c8d; -} - -.transaction-amount.positive { - color: #27ae60; - font-weight: bold; -} - -.transaction-amount.negative { - color: #e74c3c; - font-weight: bold; -} - -/* Notifications */ -.notification-item { - display: flex; - gap: 15px; - padding: 20px; - background: #e8f4f8; - border-radius: 10px; - border-left: 4px solid #3498db; - margin: 20px 0; -} - -.notification-icon { - font-size: 1.5em; -} - -.notification-content strong { - color: #2c3e50; - margin-bottom: 8px; - display: block; -} - -/* Demo accounts */ -.demo-accounts { - display: grid; - grid-template-columns: 1fr 1fr; - gap: 15px; - margin: 20px 0; -} - -.demo-account { - background: #e8f4f8; - padding: 15px; - border-radius: 8px; - border-left: 4px solid #3498db; -} - -.demo-credential { - background: #2c3e50; - color: #ecf0f1; - padding: 2px 6px; - border-radius: 4px; - font-family: 'Courier New', monospace; - font-weight: bold; -} - -/* Security tips and info */ -.security-tips { - background: #fff3cd; - border: 1px solid #ffc107; - padding: 20px; - border-radius: 10px; - margin: 20px 0; -} - -.security-tips h3 { - color: #856404; - margin-bottom: 15px; -} - -.security-tips ul { - margin-left: 20px; -} - -.security-tips li { - margin: 8px 0; - color: #856404; -} - -.security-info { - background: #e8f5e8; - border: 2px solid #27ae60; - padding: 20px; - border-radius: 10px; - margin: 20px 0; -} - -.security-info h3 { - color: #27ae60; - margin-bottom: 15px; -} - -.security-info ul { - margin-left: 20px; -} - -.security-info li { - margin: 8px 0; -} - -/* Checkbox styling */ -.checkbox-container { - display: flex; - align-items: center; - cursor: pointer; - padding: 10px 0; -} - -.checkbox-container input[type="checkbox"] { - margin-right: 10px; -} - -.terms-section { - margin: 20px 0; -} - -.form-options { - display: flex; - justify-content: space-between; - align-items: center; - margin: 20px 0; -} - -.forgot-password { - color: #3498db; - text-decoration: none; - font-size: 0.9em; -} - -.forgot-password:hover { - text-decoration: underline; -} - -/* Alerts */ -.alert { - padding: 15px; - border-radius: 8px; - margin-bottom: 20px; - font-weight: bold; -} - -.alert-success { - background: #d4edda; - border: 1px solid #c3e6cb; - color: #155724; -} - -.alert-error { - background: #f8d7da; - border: 1px solid #f5c6cb; - color: #721c24; -} - -/* Security warnings */ -.security-warning { - background: #fff3cd; - border: 2px solid #ffc107; - padding: 20px; - border-radius: 10px; - margin: 20px 0; -} - -.security-warning.critical { - background: #f8d7da; - border-color: #e74c3c; - color: #721c24; -} - -.security-warning h3 { - margin-bottom: 10px; - color: inherit; -} - -.packet-info { - background: #2c3e50; - color: #ecf0f1; - padding: 15px; - border-radius: 5px; - margin-top: 15px; - font-family: 'Courier New', monospace; - font-size: 0.9em; -} - -.packet-info code { - display: block; - white-space: pre-line; -} - -/* Auth form */ -.auth-form { - background: #f8f9fa; - padding: 30px; - border-radius: 10px; - margin: 20px 0; -} - -.form-group { - margin-bottom: 20px; -} - -.form-group label { - display: block; - margin-bottom: 5px; - font-weight: bold; - color: #2c3e50; -} - -.form-group input { - width: 100%; - padding: 12px; - border: 2px solid #ddd; - border-radius: 5px; - font-size: 1em; -} - -.form-group input:focus { - border-color: #3498db; - outline: none; - box-shadow: 0 0 5px rgba(52, 152, 219, 0.3); -} - -.form-help { - display: block; - margin-top: 5px; - color: #e74c3c; - font-size: 0.9em; -} - -.form-footer { - text-align: center; - margin-top: 20px; -} - -.form-footer p { - margin: 10px 0; -} - -.form-footer a { - color: #3498db; - text-decoration: none; -} - -.form-footer a:hover { - text-decoration: underline; -} - -/* Demo credentials */ -.demo-credentials { - background: #e8f4f8; - padding: 20px; - border-radius: 10px; - margin: 20px 0; -} - -.demo-credentials h3 { - margin-bottom: 15px; - color: #2980b9; -} - -.cred-box { - background: white; - padding: 15px; - border-radius: 5px; - margin: 10px 0; - border-left: 4px solid #3498db; -} - -.cred-box code { - background: #e8f4f8; - color: #2980b9; - padding: 2px 6px; - border-radius: 3px; - font-family: 'Courier New', monospace; -} - -/* Wireshark instructions */ -.wireshark-instructions { - background: #f0f8ff; - border: 2px solid #5dade2; - padding: 20px; - border-radius: 10px; - margin: 20px 0; -} - -.wireshark-instructions h3 { - color: #2980b9; - margin-bottom: 15px; -} - -.wireshark-instructions ol { - margin-left: 20px; -} - -.wireshark-instructions code { - background: #2c3e50; - color: #ecf0f1; - padding: 2px 6px; - border-radius: 3px; - font-family: 'Courier New', monospace; -} - -.wireshark-tip { - background: #fff9c4; - border: 2px solid #f39c12; - padding: 20px; - border-radius: 10px; - margin: 20px 0; -} - -.wireshark-tip h3 { - color: #f39c12; - margin-bottom: 10px; -} - -/* Dashboard */ -.dashboard-container h2 { - color: #2c3e50; - margin-bottom: 25px; - text-align: center; -} - -.success-message { - background: #d4edda; - border: 2px solid #27ae60; - padding: 20px; - border-radius: 10px; - margin-bottom: 25px; -} - -.success-message h3 { - color: #27ae60; - margin-bottom: 10px; -} - -/* User details */ -.user-details { - margin: 30px 0; -} - -.user-details h3 { - color: #2c3e50; - margin-bottom: 15px; -} - -.user-card { - background: #f8f9fa; - padding: 20px; - border-radius: 10px; - border-left: 4px solid #3498db; -} - -.user-card p { - margin: 8px 0; -} - -.password-display { - background: #ffebee; - color: #e74c3c; - padding: 2px 6px; - border-radius: 3px; - font-family: 'Courier New', monospace; - font-weight: bold; -} - -/* Accounts */ -.accounts { - margin: 30px 0; -} - -.accounts h3 { - color: #2c3e50; - margin-bottom: 20px; -} - -.account-card { - background: white; - border: 1px solid #ddd; - border-radius: 10px; - padding: 20px; - margin: 15px 0; - box-shadow: 0 2px 5px rgba(0,0,0,0.1); -} - -.account-card h4 { - color: #2c3e50; - margin-bottom: 10px; -} - -.account-number { - color: #7f8c8d; - font-family: 'Courier New', monospace; -} - -.account-balance { - font-size: 1.2em; - margin-top: 10px; -} - -.account-balance strong { - color: #27ae60; -} - -/* Security analysis */ -.security-analysis { - margin: 30px 0; -} - -.security-analysis h3 { - color: #2c3e50; - margin-bottom: 20px; -} - -.analysis-points { - display: grid; - grid-template-columns: 1fr 1fr; - gap: 20px; -} - -.point { - padding: 20px; - border-radius: 10px; -} - -.point:first-child { - background: #ffebee; - border: 2px solid #e74c3c; -} - -.point:last-child { - background: #e8f5e8; - border: 2px solid #27ae60; -} - -.point h4 { - margin-bottom: 15px; -} - -.point ul { - margin-left: 20px; -} - -.point li { - margin: 8px 0; -} - -/* Demo actions */ -.demo-actions { - margin: 30px 0; - text-align: center; -} - -.demo-actions h3 { - color: #2c3e50; - margin-bottom: 20px; -} - -.action-list { - display: flex; - gap: 15px; - justify-content: center; - flex-wrap: wrap; -} - -/* HTTPS info */ -.https-info { - background: #e8f5e8; - border: 2px solid #27ae60; - padding: 20px; - border-radius: 10px; - margin: 30px 0; -} - -.https-info h3 { - color: #27ae60; - margin-bottom: 15px; -} - -.https-info code { - background: #2c3e50; - color: #ecf0f1; - padding: 4px 8px; - border-radius: 3px; - font-family: 'Courier New', monospace; - display: inline-block; - margin: 5px 0; -} - -.btn-outline:hover { - background: #3498db; - color: white; -} - -.btn-sm { - padding: 8px 16px; - font-size: 0.9em; -} - -/* Footer */ -.footer { - background: #2c3e50; - color: white; - text-align: center; - padding: 25px; - margin-top: auto; -} - -.footer-content p { - margin: 8px 0; -} - -.footer-content a { - color: #3498db; - text-decoration: none; -} - -.footer-content a:hover { - text-decoration: underline; -} - -.license { - font-size: 0.9em; - opacity: 0.8; -} - -/* Responsive design */ -@media (max-width: 768px) { - .header { - flex-direction: column; - text-align: center; - gap: 15px; - } - - .welcome-section { - grid-template-columns: 1fr; - } - - .features, - .quick-actions { - grid-template-columns: 1fr; - } - - .action-buttons, - .action-list { - flex-direction: column; - align-items: center; - } - - .user-list, - .demo-accounts { - grid-template-columns: 1fr; - } - - .analysis-points, - .protocol-info { - grid-template-columns: 1fr; - } - - .main { - padding: 20px; - } - - .accounts-grid { - grid-template-columns: 1fr; - } - - .form-options { - flex-direction: column; - gap: 15px; - align-items: flex-start; - } -} - -@media (max-width: 480px) { - .header h1 { - font-size: 2em; - } - - .demo-notice { - display: block; - margin-top: 10px; - } -} \ No newline at end of file diff --git a/templates/dashboard.html b/templates/dashboard.html deleted file mode 100644 index 1254c8e..0000000 --- a/templates/dashboard.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - 🏦 SecureBank - Dashboard - - - -
-
- - -
- -
-
-

Pregled vaših računov

- -
-
-

Nakazilo

-

Pošljite denar na drug račun

- -
-
-

Izpisek

-

Prenesite mesečnji izpisek

- -
-
-

Mobilno

-

Povežite z mobilno aplikacijo

- -
-
- -
-

Podatki o uporabniku

-
- -
-
- -
-

Vaši bančni računi

-
- {{range .Accounts}} - - {{end}} -
-
- -
-

Zadnje transakcije

-
-
-
- Nakup - Mercator d.d. - 10.02.2026 -
- -€24.50 -
-
-
- Plača - Delodajalec d.o.o. - 01.02.2026 -
- +€2,100.00 -
-
-
- Prevzem gotovine - Bankomat - 28.01.2026 -
- -€100.00 -
-
- -
- -
-

🔔 Obvestila

-
- ℹ️ -
- Varnostno posodobljeno -

Vaši podatki so zaščiteni z najnovejšimi varnostnimi protokoli.

-
-
-
-
-
- - -
- - \ No newline at end of file diff --git a/templates/home.html b/templates/home.html deleted file mode 100644 index 2ae38b2..0000000 --- a/templates/home.html +++ /dev/null @@ -1,72 +0,0 @@ - - - - - - SecureBank - Varno spletno bančništvo - - - -
-
- -
- -
-
-
-

Dobrodošli v SecureBank

-

Vaš zaupanja vreden partner za varno spletno bančništvo. Z najsodobnejšimi varnostnimi tehnologijami ščitimo vaše finance 24/7.

- -
-
-

Najvišja varnost

-

SSL šifriranje in večstopenjski sistem preverjanja

-
-
-

Enostavno upravljanje

-

Intuitivni vmesnik za upravljanje vseh vaših računov

-
-
-

Dostopnost 24/7

-

Bančništvo brez omejitev, kadarkoli in kjerkoli

-
-
- -
-

Dostop do vašega računa

- -
-
- -
-
-

📞 Stik z nami

-

Brezplačna telefonska številka:
080 12 34

-

E-mail podpora:
podpora@securebank.si

-

Delovni čas:
Pon-Pet: 8:00-20:00
Sob: 9:00-13:00

-
- -
-

Varnostno obvestilo

-

Nikoli ne delite svojih prijavnih podatkov z drugimi. SecureBank nikoli ne bo zahteval vaših podatkov preko e-maila ali telefona.

-
-
-
-
- - -
- - \ No newline at end of file diff --git a/templates/login.html b/templates/login.html deleted file mode 100644 index f4d049a..0000000 --- a/templates/login.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - SecureBank - Prijava - - - -
-
- -
- -
-
-

Prijava v vaš račun

-

Dobrodošli nazaj! Prijavite se za dostop do svojih financ.

- - {{if .Success}} -
- {{.Success}} -
- {{end}} - - {{if .Error}} -
- {{.Error}} -
- {{end}} - -
-
- - -
- -
- - -
- -
- - Pozabljeno geslo? -
- - -
- - - -
-

Hiter dostop za demo

-
- - -
-
- -
-

Varnostni nasveti

-
    -
  • Nikoli ne delite svojih prijavnih podatkov
  • -
  • Vedno se odjavite po končani uporabi
  • -
  • Uporabljajte močna, unikatna gesla
  • -
  • Preverite varno povezavo (HTTPS)
  • -
-
-
-
- - -
- - \ No newline at end of file diff --git a/templates/register.html b/templates/register.html deleted file mode 100644 index e6300a1..0000000 --- a/templates/register.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - SecureBank - Registracija - - - -
-
- -
- -
-
-

Registracija novega uporabnika

-

Ustvarite vaš SecureBank račun v nekaj korakih

- - {{if .Error}} -
- {{.Error}} -
- {{end}} - -
-
- - -
- -
- - - Izbrite unikatno uporabniško ime za prijavo -
- -
- - -
- -
- - - Uporabite močno geslo z vsaj 8 znaki -
- -
- -
- - -
- - - -
-

Varnost vaših podatkov

-
    -
  • SSL šifriranje za varno komunikacijo
  • -
  • Večstopenjski sistem preverjanja
  • -
  • Redna varnostna posodobitev
  • -
  • 24/7 nadzor nad sumljivimi aktivnostmi
  • -
-
-
-
- - -
- - \ No newline at end of file