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.


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.


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!


33 views

Recent Posts

See All

ES6 features to start with

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

Follow us at:

  • LinkedIn
  • Twitter
  • YouTube
  • Facebook

MES for OEMs

MES for Service Bureaus

Extension Modules

About

Company Overview

Jobs

Support

Resources

Machine Integrations

Software Integrations

Contact Us

Philadelphia, PA, USA

Member of

Privacy Policy

Terms of Use

AUTHENTISE © COPYRIGHT 2020. ALL RIGHTS RESERVED.