ConMobi
An application in Python for both Windows and Linux based systems which provide a facility to have internet connection sharing behind proxy servers was developed. This application Do NOT need any application/configuration to be installed on mobile device.It runs on connection sharing device (gateway). Mobile devices not even need to be aware of any such application running on gateway. the application provide a seamless browsing user experience.
Application Deployment Requirements
We developed the application using Python and its user interface using PyQt. Also the list of interfaces currently active on the machine (especially in windows) is done using PyQt. The system requirements to run the code are as below
- Python 2.7, 32 bit installed with respective PATH variables set accordingly
- PyQt 4.9.1 for Python 2.7, 32 bit
- At least two Network adapters, we tested the application where internet was provided on Ethernet and was to be shared over WiFi. Multiple Ethernets can also be similarly used
- Internet Sharing capabilities, provided in Windows Vista and above and also in Ubuntu 11.04+
- Port 80,53 on the machine
Current Limitations of the application
- As we are listening only on port 80, without any redirection from other ports we are able to handle only HTTP requests directed to port 80 (which most of the requests are).
- Our application doesn’t support other applications layer like HTTPS, RTP etc. Implementing a transparent HTTPS proxy requires that we implement a MiTM (man in the middle) system with which client will form encrypted connection instead of actual web server. This is because all HTTPS requests are fully encrypted including the HOST name, which doesn’t allow us to figure out how to sent the request to parent proxy. If the client supports HTTPS proxy it sends an additional unencrypted field which contains Host name for use by proxy server. If we implement MiTM based proxy server we will break the end to end encryption which is not advisable. Implementation for rest of protocols is similar to HTTP proxy.
- Also if the native DNS server is started by windows machine we need to kill that process by using “taskill” command. Similar thing needs to be done in Linux. Generally if we start our application before any client makes the connection we will occupy the port 53 and system will fail to occupy the port
Project Developers
Project Admins: