dpkt 2.0: Python packet creation and parsing library

Project Name: Project 17 - dpkt 2.0: Python packet creation and parsing library
Mentor: Kiran Bandla (US)
Backup mentor: Dug Song (US)
Student: Hao Sun
Skills required: Python, Network Programming, Wireshark/tcpdump and Network Protocols
Project type: Extend and improve existing library
Project goal: Update the dpkt library for Python 3, fix the list of bugs and make dpkt ready for a 2.0 release

dpkt[1] is a python library that helps with "fast, simple packet creation/parsing, with definitions for the basic TCP/IP protocols". It supports a lot of protocols (currently about 63) and has been increasingly used in a lot of network security projects. It is 44x faster than scapy, and 5x faster than impacket. With Scapy no longer in development, dpkt is the only network creation/parsing library for python that is active.
While dpkt is a really powerful library, it needs some improvements. Late last year, we started work on cleaning up the project, and started fixing bugs[2]. We intend to do a 2.0 release [4] later this year.

Here is a list of goals for the 2.0 release:

  • Make dpkt Python 3 compliant. This is a lot more work than it seems
  • Clear the issues queue (about 77 as of 2/19/15)
  • TestSuite and start a pcap corpus for tests

These short list itself would take most of the summer.
However, if the student finishes early and have time, we would also like to:

  • Start dpkt documentation to readthedocs.org
  • Examples in the project wiki. This has been asked a lot over the years.

[1] https://code.google.com/p/dpkt/
[2] https://code.google.com/p/dpkt/issues/list
[3] https://github.com/kbandla/dpkt
[4] https://github.com/kbandla/dpkt/wiki/dpkt-2.0


The achievements of this project are summarized in a blog post by Kiran and Hao Sun.