Skip to content

hesam-zahiri/p2p_vpn

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 

Repository files navigation

Installation:

git clone https://github.com/hesam-zahiri/p2p_vpn.git
pip install torch

How to use:

1- Create a VPN server:

To create a VPN server, use the PyTorch library and the UDP protocol. To do this, open a UDP server and create a UDP channel for each user. Then, for each user, generate a public key and a private key and send the public key to the user.

cd p2p_vpn
python key.py
   import torch
   import socket

# Create a UDP server socket
   server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
   server_socket.bind(('0.0.0.0', 12345))

# Generate a public-private key pair for each user
   users = {}
   for i in range(10):
       private_key = torch.rand(128)
       public_key = private_key * torch.rand(128)
       users[i] = {'private_key': private_key, 'public_key': public_key}

# Wait for incoming connections
   while True:
       data, address = server_socket.recvfrom(1024)
       user_id, public_key = data.split(':')
       user_id = int(user_id)
       public_key = torch.tensor(list(map(float, public_key.split(','))))
       users[user_id]['peer_address'] = address
       users[user_id]['peer_public_key'] = public_key

2- Create a VPN client:

To create a VPN client, use the PyTorch library and the UDP protocol. To do this, establish a UDP channel with the VPN server and send your public key to the server. Then, use the server's public key to encrypt your data.

python p2p_vpn.py
   import torch
   import socket

# Create a UDP server socket
   server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
   server_socket.bind(('0.0.0.0', 12345))

# Generate a public-private key pair for each user
   users = {}
   for i in range(10):
       private_key = torch.rand(128)
       public_key = private_key * torch.rand(128)
       users[i] = {'private_key': private_key, 'public_key': public_key}

# Wait for incoming connections
   while True:
       data, address = server_socket.recvfrom(1024)
       user_id, public_key = data.split(':')
       user_id = int(user_id)
       public_key = torch.tensor(list(map(float, public_key.split(','))))
       users[user_id]['peer_address'] = address
       users[user_id]['peer_public_key'] = public_key
python p2p_vpn.py
  • This is a simple example of a VPN with P2P capability. However, to use this app for P2P, you need to invite other users to join your network and share their public key with you.