Ellie Fiera, Rafael Rodriguez, Sami Jafri, Sergiy Pliss, Shafiq Rahman, and Christopher Christmas.
01-27-25 Verion 1.0.0
3D Printer G-CODE Validation and Security Application
The increasing accessibility of 3D printing has revolutionized manufacturing of prototyping or re-producing a part virtually anywhere. However, with the widespread use of printing 3D parts, there is a growing risk of maliciously altered or error-prone G-CODE files that could damage the equipment, result in injury, or fire.
This project aims to develop a solution to mitigate these problems by:
- Scan G-CODE files for potential threats or errors.
- Ensuring a safer and more reliable 3D printing experience.
- Further Scan G-CODE of files to identify issues such as out-of-bound commands.
- Incorrect temperature settings and other user errors.
After scanning a g-code file, an alert with pass will allow the client to take action to halt printing depending on the scan result. If the scan is approved, then it can be printed successfully.
This project’s goals include:
- Enhancing 3D printer safety by mitigating the risks of hardware damage by stopping malicious code from running on the 3D printer.
- Streamlining the printing process and increase productivity and prevent downtime.
- Providing a user-friendly interface to scan and print. This application has the potential to be a vital tool for 3D printing enthusiasts and professionals, ensuring higher print reliability, prevent downtime, and safer operation.
The application will provide a standard distributable plugin for OctoPrint. It will be available as a feature tab within OctoPrint and will be used after CURA or PRUSA has completed slicing a file into G-code.
The G-code file can either be:
- Sent to OctoPrint over the network, or
- Accessed by OctoPrint via network storage.
The client will be presented with a dropdown file selection interface to choose a G-code file for scanning. The scanner will analyze the file and return a Pass or Warnings status before printing.
The team will develop the application as a plugin for OctoPrint. OctoPrint can run on the network to receive a print job as well as provide web access to scan the file before printing. The designed application functionality includes scanning for incorrect temperature ranges out of bound commands, malicious commands to disable limit switches, and including to prevent malicious code from colliding the print head into the part. The job of the software will be to stop the print job from being executed on the printer.
In government and military computer usage policies, USB drives for storage are highly regulated. This makes using USB drive scanning before printing makes it impracticable. Therefore, all agencies under this umbrella use secure networks for printing and communication. To ensure compatibility and functionality, the G-code scanning application will have network capability.
- Seamless integration with all networked devices where 3D printing security is in high demand.
- Future scalability to handle multiple files and print multiple jobs sent to more than one printer.
- Octoprint provides documentation for creating plugins for developers to enhance or upgrade features.
Other information on addressing 3D printing security. https://asmedigitalcollection.asme.org/computingengineering/article-abstract/21/4/041007/1089710/A-Blockchain-Based-G-Code-Protection-Approach-for?redirectedFrom=fulltext
To use this gcode scanner, you must download Octoprint. Once you have Octoprint downloaded, you should use this instruction via the URL and the Plugin Manager to successfully download this gcode scanner.
Mac - Download Rasberry Pi OS to your Mac, run the program, select "Choose OS", navigate to the "other specific OS option", then 3D printing, OctoPi is one of the first results, and select the preferred release and storage device (SD card). Insert in the Raspberry Pi, and after launching, set up an Admin account and go to the plugins menu within settings. From here you can install the scanner plugin from the repository link, https://github.com/Capstone-Projects-2025-Spring/project-3d-printer-security.git
You then connect the Pi to the 3D printer via a hardline connection, then on your Mac connect via the IP address of the Raspberry Pi or by octopi.local in your preferred web browser, and are now able to scan and print
The following resources will aid in the plugin development.
- OctoPrint Plugin Documentation
- Raspberry PI 4
- 3d Printer
- Remote VPN access to the computer for working remotely to test code (Optional).
- SD Card
- A camera pointed at the 3d Printer for remote testing (Optional).
|
Ian Tyler Applebaum |
Null |
Shafiq Rahman |
Ellie Fiera |
Rafael Perez |
Christopher Luckie Christmas |
Sami Jafri |
Sergiy Pliss |