Home

Awesome

Chameleon VPN and Network Manager

This project is a Windows's python based application that allows a user to monitor and manage it's network, as well as using a vpn only for selected processes

Screenshot

Getting Started

The project is build using python 3.6. It requires admin rights to work well.

The program uses a ovpn file to connect to the openVPN server, but the route are made so the vpn isn't the primary NIC choosen by windows, even if the route is available and works. Then, a custom built Dll is injected in the desired process to bind the packets, which makes the injected process use the VPN connection, while the others still uses the normal connection.

Prerequisites

Note Due to a compatibility problem in scapy, this software doesn't run on any windows version that is earlier than Windows 8.

To run the project, you will need 2 third-parties sofware:

Note: if you have wireshark installed, you probably already have winpcap on yout computer

Installing

Libraries required:

pip install pyQT5, PyQTchart, psutil, matplotlib, requests, numpy, webbrowser, win32core, scapy-python3

There is also a dll that is used in this project (injected into processes to change their IP).

To run the programm, launch chameleon.py. No arguments needed.

How to use

First, you have to launch the openvpn server from the app, using the last tab. You just have to give it the ovpn file used to connect to the server, and your credentials. The vpn won't be the main Network Adapter, so even if vpn is enabled after this, no application will use it.

Then, you can go to the 2nd tab and select processes that should use the vpn using the lock button (only processes using internet are displayed). Be careful which process you select, as there is risks of crashing the system if you choose a vital one.

If the injection suceeded, the program will display a popup saying "Ip changed". You can stop the ip change using the same lock button, or by leaving the program.

Deployment

If you want to build an exe, it is possible. First, install cx_Freeze:

pip install cx_Freeze

The setup file is already done, so you just have to run :

python setup.py build

Built With

Authors

We are a team of French Engineering students, and we built this software for a school project.

License

This project is licensed under the MIT License

Acknowledgments

Some inspiration, for the Dll for example: * falahati : https://github.com/falahati/NetworkAdapterSelector