# How do I decrypt messages on my Repetier firmware?

I need to send a complex password to my machine. The machine needs to decrypt it and run it. I have not found enough resources for such an operation.

More detailed description:

I am developing a new feature for my 3D printer which runs on Repetier. (It may be on a different firmware that I can do this job). I want to change my 3D printer so it can understand special encrypted G-codes alongside normal g-codes. Lets describe it with an example:

Normally, 3D printers can read and apply standard g-code files like:

G28
G0 X10 Y20 E30
.
.
.
etc.


But I am developing a g-code encryption method which encrypts any g-code and turns it into a text like:

M999 !4#^
M999 ^s+.&&/..* ….
.
.
etc.


I want to change the firmware for my printer so it understands if the related g-code is encrypted by checking every line if it stars with M999 (or starts with some other pattern character which I will decide later).

To do is, I need to understand how Repetier works, especially how command debug works and how I can parse my encrypted code from my encrypted g-code file.

I could not understand how repetier.h / command.cpp works and how it parses the line and redirects to functional cases.

Looking through the source I found Commands.cpp that has a loop.

void Commands::commandLoop() {
while(true) {
...
Commands::executeGCode(code);
}
}


If we find the executeGCode method, we see that it calls:

processMCode(com);


And finding the processMCode method, we have the switch case you can add your own logic to.

void Commands::processMCode(GCode *com) {
switch( com->M ) {
case 3: // Spindle/laser on
...

case 999: // Your custom logic


After decoding your encrypted string, I think it would be best to call back into the first method mentioned, and let the process start from the top with the unencrypted command.

case 999:

// Custom logic
executeGCode(unencrypted);
break;

• Thanks for the answer, Sorry for waiting for reply, I tried your suggestion, but when I send the code to the Repetier host I get the Wrong checksum and Unknown command warnings as a return, I think that when we send the code to the machine, we do a check before we do the work we want, how can we disable it? Aug 1 '17 at 7:29