Reverse engineering 3D printer protocols

Reverse engineering is the process of extracting knowledge or design information from anything man-made and re-producing anything based on the extracted information. In this post I will list the tools needed to reverse engineer a communications protocol, describe the common situations that are likely to occur and some tips on writing a client for a reversed communication protocol.

Tools

My favorite tool out there for reverse engineering protocols of any sort is Netzob. I can also recommend Hooper, which is a disassembler for OS X and Linux. Both tools have very extensive documentation with practical examples to get you started. Netzob ships with a Protocol simulator which I find very handy to test my application against.

Netzob
Hopper

Common road blocks

When starting out, you might run into different security layers presented by the OS. El Capitan comes with System Integrity Protection (SIP).

What is SIP anyway, one would ask? SIP is a giant system-wide sandbox, that controls access to what Apple considers critical files and folders. Most of the kernel side SIP implementation lives in Sandbox.kext, the same TrustedBSD kernel extensions that implements OS X sandbox mechanism. If SIP interferes with the tools you are using, you can use Rootfool - a small tool to dynamically disable and enable SIP in El Capitan.

Road blocks

Advice

Reverse engineering a 3D printer protocol takes time and a lot of patience, but it is a very useful exercise if you want to learn more about 3D printers and how they work. I am not a lawyer and you should consult one before creating a product based on reverse engineering.

The technique itself is very educational, and can be extremely useful and ethical if the end result is used to check if software isn't performing harmful, unethical, or illegal activities. Just be aware that you may be voiding your warranty.


Hope you find my tips useful. Do you have other tips you would like to share? Tweet to @Authentise. and we will post them here!