Skip to content

Instantly share code, notes, and snippets.

@errorxyz
Last active August 25, 2024 19:43
Show Gist options
  • Save errorxyz/af6f26549e9122f3ff3b93fd9d257df1 to your computer and use it in GitHub Desktop.
Save errorxyz/af6f26549e9122f3ff3b93fd9d257df1 to your computer and use it in GitHub Desktop.
GSoC'24 Final Report - mitmproxy

GSoC Final Report

Project: Improving support for DNS and HTTP3 in mitmproxy
Contributor: Gaurav Jain
Organization: The Honeynet Project
Mentor: Maximilian Hils, Emanuele Micheletti

Project Overview

mitmproxy is a fantastic tool to intercept, inspect, modify and replay a wide range of network traffic including SSL/TLS-protected protocols. It can be used for debugging, testing, privacy measurements, and penetration testing. The tool is mostly based on python, rust and typescript. The goals of this project was to debug and fix many missing/broken bits in DNS and HTTP3 modes.

Completed Tasks

DNS

HTTP3

Misc

Reviewed PRs

Unmerged Work

Current state

mitmproxy now supports

  • proxying all query types in DNS flows
  • proxying DNS over TCP flows
  • stripping ech value from HTTPS type DNS records
  • proxying compressed DNS records
  • HTTP3 based reverse proxy and local mode albeit a few issues
  • listening on IPv4 and IPv6 for UDP based servers

Next Issues to Tackle...

Challenges faced

This entire journey wouldn't be as rewarding if it weren't for all the frustrating challenges that I've faced on the way. For me, the most difficult and time-consuming part of the project was debugging issues. This usually involved a lot of aimless googling and falling deep into rabbit holes. There'd be times when even after spending countless hours, no real progress was made. I want to thank my mentor here for being patient enough and guiding me in the right direction. This process, I feel, has greatly helped me develop a "never give up" and "try harder" attitude for fixing bugs.

Understanding and writing asynchronous rust code with python bindings has been another difficulty that I had faced during the project. But on the brighter side of things, I'm definitely a bit more confident with rust now and learnt a LOT of new stuff - from understanding protocols to writing asynchronous code. I also had some difficulty managing my time once my college started in August. Juggling these different pots really started to take a toll on my sleep schedule but on the flip side all those sleepless nights were definitely worth it :P

End Notes

Thanks a ton to GSoC and The Honeynet Project for this wonderful opportunity, these past 3 months will be something that I'll remember for quite a long time. This experience has no doubt greatly helped me develop my technical and communication skills and made me fall in love with open source a bit more. I'd also like to thank my mentor Maximilian Hils for being extremely friendly and for making sure that I had a smooth and enjoyable experience throughout. I hope to continue to staying active and contributing to this exciting world of open source in the future as well.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment