top of page


Find all of Authentise's press releases, dev blogs and additive manufacturing thought pieces right here.

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.


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.

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.


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!

70 views0 comments

Recent Posts

See All

Arrows => Arrows are a shorthand for function. Old way: users.forEach(function(user) { // do something with the user }); New way: users.forEach(user => { // do something with the user }) Impor

bottom of page