This project is a custom VPN (Virtual Private Network) solution developed in Python, focusing on secure communication and proxy-based traffic redirection.
Clients connect to the internet through secure proxies chosen from a list provided by the server. All communication is encrypted via TLS 1.3, and clients are authenticated using multi-factor authentication and certificates.
- TLS 1.3 Encryption for all traffic between client and server
- Elliptic Curve Diffie-Hellman (ECDHE) for key exchange
- AES-256 GCM symmetric encryption with HMAC-SHA-384
- Mutual Certificate Authentication: both client and server verify each other's certificate
- Multi-Factor Authentication: Username + Password + TOTP (Time-Based One-Time Password)
- Proxy-Based Routing: traffic is tunneled through a proxy server selected by the client
- Client-Side Proxy Management: local proxy runs on 127.0.0.1 and transparently redirects traffic
- Secure HTTP/S Support
- Select desired proxy from available options
- Real-time speed monitoring
- Persistent certificates and authentication tokens
- Simple graphical interface using Kivy
- View connected users and proxy servers
- Add, update, or delete users
- Force user disconnection (“kick”)
- View proxy status and logs
- Manage TOTP secrets and credentials
All components require Python 3.8 to be installed.
Required libraries:
kivy, pyotp, qrcode, keyring, cryptography, pillow
Install with:
pip install kivy pyotp qrcode keyring cryptography pillowRequired libraries:
kivy, pyotp, cryptography, pyOpenSSL
Install with:
pip install kivy pyotp cryptography pyopensslRequired libraries:
pyotp, keyring
Install with:
pip install pyotpkeyring- Encrypted traffic with authenticated peers
- Secure key exchange (ECDHE)
- Certificate pinning prevents MITM attacks
- Only certificates signed by server are allowed
Easy login with TOTP, proxy selection, and live speed stats

Full user and proxy management from an admin panel

VPN/
├── shared/
│ ├── config.py
│ └── logo.ico
├── server/
│ ├── active_users.db
│ ├── create_keys.py
│ ├── full_log.db
│ ├── log.db
│ ├── manage_db.py
│ ├── proxy_server.py
│ ├── server_UI.py
│ ├── users.db
│ ├── vpn_server.py
│ └── certificates/
│ ├── ca_cert.pem
│ ├── ca_key.pem
│ ├── server_cert.pem
│ ├── server_key.pem
│ └── client/
│ ├── client_cert.pem
│ ├── client_csr.pem
│ └── client_key.pem
└── client/
├── client_UI.py
├── vpn_client.py
└── certificates/
├── ca_cert.pem
├── ca_cert_chain.pem
├── ca_key.pem
├── client_cert.pem
├── client_key.pem
├── initial_client_cert.pem
├── initial_client_key.pem
├── server_cert.pem
└── server_key.pem