Packet Sniffer/Filter

The goal is to implement a packet sniffer/filter. WinPcap is a good place to start. This C++ library has most features you need.

Milestone #1: (by September 25th) Your program should run on the command-line, and capture and display packets while the program is running. If the computer has more than one interface (e.g. wired and wireless), then your program should ask the user which interface the user wants to sniff on. The display should include packet number, time, source IP address, destination IP address, application layer protocol name if applicable, and if the transport layer protocol is TCP or UDP, provide the port numbers. You may earn extra points for providing other packet information. Submit your source code with comments and documentation to explain how to run your program. Screenshots of your program execution helps. For the list of reserved port numbers, use this list, and you should mark the following applications:

ftp-data, ftp, ssh, telnet, smtp, domain, http, pop3, sftp, ntp, imap, smtpe, https, dhcp, rtsp, rsync, ftps

Milestone #2: (by October 23rd) Your program should be able to filter packets from an input file given in the command line. This file will be generated from your program from Milestone #1 by capturing the output. The command should be "your program's name" "file name" [options]. Without options, your program should display everything from the file. You need to implement "src=some_IP_addess" and "dst=some_IP_address". The options may be used conjunctively. Your submission should include sample trace files.

Milestone #3: (by November 20th) Your program will continue to work with an input file. Add more options, "protocol=NAME" and "port=some_port_number". This protocol name can be the application layer protocol name from Milestone #1 or TCP/UDP. The options may be used conjunctively, and you should provide error messages accordingly if the options are misused.

Peer-to-peer consumer report

The goal is to create a consumer's report on peer-to-peer file sharing applications. BitTorrent is one of the most popular p2p file sharing application and responsible for about half of the Internet traffic. Find at least 3 different p2p file sharing applications and compare them. Your report should include answers to "how a downloader locate an uploader", "how a downloader/uploader have some privacy", "how a downdoader/uploader can prevent malicious software", and "how efficient the bandwidth management is" in each application. Implementing your own version of p2p file sharing application is a plus.

Milestone #1: (by September 25th) Extended abstract is at least 5 pages long, including references, with 12 point font, single space, and at least 1 inch margin around the text. This should include more or less all the references you will use and their summaries, and explain with more details why this topic is interesting and what others can learn from reading this paper. Note that simply listing all the references and their summaries is accepted at this stage, but not in the final paper. The final paper should include comparisons and analysis of the references.

Milestone #2: (by October 23rd) 10-page draft is built on top of extended abstract from Milestone #1. The same format applies: 12 point font, single space, and at least 1 inch margin around the text. The most important content at this stage is to provide either answers or plans to answer the questions like "how a downloader locate an uploader", "how a downloader/uploader have some privacy", "how a downdoader/uploader can prevent malicious software", and "how efficient the bandwidth management is". You may add more references to show that you have a concrete plan to answer these questions.

Milestone #3: (by November 20th) 20-page final report is built on top of 10-page draft from Mileston #2. The same format applies: 12 point font, single space, and at least 1 inch margin around the text. The questions brought up in Milestone #2 need to be answered with convincing arguments and supporting references. Your report should not be more than 20 pages long and should be self-contained, i.e. just reading your report should justify all your arguments. Any statistics or reports you use to support your argument need to be references and show clear connections to your arguments.