DNS-sly - v. 1.0 Qurat-Ul-Ann Akbar - quratulannakbar2015@u.northwestern.edu About ===== DNS-sly is a counter-censorship system developed by Qurat-Ul-Ann Akbar and Aleksandar Kuzmanovic at Northwestern Networks Group. These files contain the implementation of the DNS-sly server and client in Python. The server receives requests from clients like a regular DNS server but for clients who require access to censored websites, it uses DNS queries to send additional hidden censored information. Dependencies ============ 0) Ensure you have Python 2.7 or above installed 1) Selenium 3.4 for Python - package to automate web browser interaction from Python Install using the following command : pip install -U selenium 2) dnspython - DNS toolkit for Python All information and documentation can be viewed through the following link: http://www.dnspython.org/ 3) Libraries - numpy, json, pandas Scripts ======= Scripts are divided into two main categories: 1) Data Collection: This folder contains automated scripts that can be used to make the dictionary used by the server to encode hidden information in DNS queries. THe description for each file is given below: dns_collector.py: Opens a Firefox browser and records all DNS queries made when a certain webpage is requested ips_fordomains_collector.py: Makes the mapping from domains to IPs makingdict.py: Creates the final dictionary Run in the above given order. All files can be run as follows: python filename 2) System Src: This folder contains the actual server and client implementation scripts. If you dont want to create your own dictionary, we have a default that we used by using DNS servers all around the world , named dict_final.json encoding.py: This script contains both the encoding and decoding mechanism used by client and server censor_test.py: Just a sample test script for unit tests Note ==== This is a modest implementation and our client is designed for experimental purposes, rather than for use by live users, the upstream communications are hard-coded. Feel free to add anything to the codebase for advanced communication between DNS servers and clients. Contact ======= Question and comments should be directed to Qurat-Ul-Ann Akbar at quratulannakbar2015@u.northwestern.edu