Final Project Computer Networks (Teams)


  1. Skeleton Code Coming soon.
  2. You can work in teams of 4-5.

Networking Final Project.

This project has been designed to be fun and educational. OK, so without further ado, here is the problem: You are contracted by a secret government agency to set up a black-site. This black-site must support some basic functionality of the internet but it must not be connected to the internet. (So that it is harder to hack, you know.) The Black-Site will only allow outgoing connections that must pass through an encrypted FM broadcast station. This secret agency does not trust anyone. So all the software will need to be developed from scratch. This includes web servers, DNS Servers and the FM broadcasting station. Don’t worry though they will provide you with switches that implement the DHCP server. With the exception of the SDR radio receiver, all of your code will be running at the application layer. Great so that is the idea. The figure below shows the proposed topology of the network and the remaining questions in the document are designed to help you get there.

Screen Shot 2020-03-05 at 10.21.11 AM

(Use the router/AP/EthernetSwitch, fm transmitter and SDR radio that we provide to build this mini-network).


1. (15 points)  Implement a base web-server that responds to web requests [See this document for more details]

2. (20 points) The users of the back-site don’t know the ip-address of all the web-servers at the site. Instead, they want to simply remember the names of the servers at the site. Implement a DNS server that provides the IP-Address for the web-server you implemented above. (The URL for the server should be blacksite.secret). Test your DNS server by connecting it to your network and typing blacksite.secret into your browser. (You can configure the machine running your web-server to have a static ip-address. (This way you can simply hard -code the address of the DNS server). Use the skeleton code provided for the webserver.  A user should be able to access some files on the web server.  For example typing, blacksite.secret/groupMember.html should serve an html page containing the name of the group members. And typing blacksite.secret/topSecret.doc should allow a user to download a word document containing your favorite poem.  (As a side note, you should configure your DHCP on the AP/router so that it serves the IP address of your DNS server to every machine that connects your network.)

Great people can now connect to your network and interact with servers on your network using their browser. Now let’s allow your black site to send data to another external site using a custom FM broadcast station.

3. (20 points) The network contains a machine that is connected to the FM broadcaster. (Use the broadcaster that we provided). Any information that is played on the soundcard of this machine will get broadcasted on FM 87.7 (How can change frequency if you like). Write a TCP server that accepts the incoming requests on port 4000 and sends the bytes directly to the sound card on the machine. You can use any modulation scheme that you prefer. Use your software-defined radio and SDR Sharp to verify the bytes are getting transmitted correctly.

4. (5 points) You want your receiver to be able to decode information that you send so you decide to create your own packet structure. Your packet should contain the header length, check-sum, and payload size.

5. (25 points) You don’t want other people to be able to decode your packet so you encrypt using AES. You can assume that you will generate a key.txt file that you can share between the machines.  We recommended that you python Crypto.Cipher library

from Crypto.Cipher import AES

Because the wireless link that we are establishing is a half-duplex link.  Will use send multiple packets in case the packet gets corrupted.

6 (50 points ) Now for the really fun stuff. Our FM station is broadcasting our encrypted packets but we want to do more. We want to be able to also decode these packets and decrypted the packets so that our offsite machine can read the information. Implement the python program that will interface with your SDR radio and demodulate the signal, decode packets and decrypt the payload. (Buffer management is going to be really important here.) 

7. What to submit: 

Submit your code to collab quiz.(Only need one submission per group) Along with an unlisted youtube video showing how your system works.  (Show test for all 6 points above)