Reverse engineering unknown communication protocols is a common and often necessary task for malware analysis and hardware hacking. This skill is especially vital when the software/firmware producing the messages is unavailable for analysis, or will create an unnecessary burden of effort. Although many protocols rely primarily on plain text style commands, these protocols are becoming increasingly complex as they are stuffed with more and more binary data. In this talk, I will explore some proprietary protocols encountered over IP, radio communications, USB, and SPI and I2C busses, and examine some of the methods for reverse engineering them. In addition to demonstrating a manual method for reverse engineering, I will present the strengths and weaknesses of common automation practices laid out in whitepapers that outline the many steps of the process. Finally, we will examine one of the few open source tools available to assist a hacker in this reverse engineering process, exploring its features (or lack thereof), and end in a call to action to create an even better tool.