Skip to content

JustSpring/VPN

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

48 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SpringConnect- Custom VPN Solution

Overview

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.


Key Features

Security

  • 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)

Network Architecture

  • 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

Client UI

  • Select desired proxy from available options
  • Real-time speed monitoring
  • Persistent certificates and authentication tokens
  • Simple graphical interface using Kivy

Server UI

  • 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

Configuration & Prerequisites

All components require Python 3.8 to be installed.

Server

Required libraries:
kivy, pyotp, qrcode, keyring, cryptography, pillow
Install with:

pip install kivy pyotp qrcode keyring cryptography pillow

Client

Required libraries:
kivy, pyotp, cryptography, pyOpenSSL Install with:

pip install kivy pyotp cryptography pyopenssl

Remote Proxy

Required libraries:
pyotp, keyring Install with:

pip install pyotpkeyring

Security Notes

  • Encrypted traffic with authenticated peers
  • Secure key exchange (ECDHE)
  • Certificate pinning prevents MITM attacks
  • Only certificates signed by server are allowed

Screenshots

Client UI

Easy login with TOTP, proxy selection, and live speed stats
Client UI1 Client UI2 Client UI3 Client UI4

Server UI

Full user and proxy management from an admin panel
Server UI Server UI


Project Structure

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

About

SpringConnect- a VPN by Aviv

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages