Nomar记录一段历史
如何解密 Repetier 固件上的消息?

我需要向我的机器发送一个复杂的密码。机器需要解密并运行它。我还没有为这样的操作找到足够的资源。

更详细的描述:

我正在为在 Repetier 上运行的 3D 打印机开发一项新功能。 (我可以在不同的固件上完成这项工作)。我想更换我的 3D 打印机,以便它可以理解特殊加密的 G 代码以及普通的 G 代码。让我们用一个例子来描述它:

通常,3D 打印机可以读取和应用标准的 g 代码文件,例如:

 G28 G0 X10 Y20 E30 . . . etc.

但我正在开发一种 g 代码加密方法,它可以加密任何 g 代码并将其转换为如下文本:

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

我想更改我的打印机的固件,以便它通过检查每一行是否以 M999 开头(或以我稍后决定的其他模式字符开头)来了解相关的 g 代码是否已加密。

要做的是,我需要了解 Repetier 的工作原理,尤其是命令调试的工作原理以及如何从加密的 g 代码文件中解析我的加密代码。

我无法理解 repetier.h / command.cpp 是如何工作的,以及它如何解析行并重定向到功能案例。

1个回答

查看源代码,我发现Commands.cpp有一个循环。

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

如果我们找到executeGCode方法,我们会看到它调用:

 processMCode(com);

并找到processMCode方法,我们有您可以添加自己的逻辑的开关案例。

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

解码您的加密字符串后,我认为最好回调到提到的第一种方法,并使用未加密的命令从顶部开始该过程。

 case 999: // Custom logic executeGCode(unencrypted); break;
感谢您的回答,抱歉等待回复,我尝试了您的建议,但是当我将代码发送到 Repetier 主机时,我收到错误校验和和未知命令警告作为返回,我认为当我们将代码发送到机器时,我们在做我们想做的工作之前做一个检查,我们如何禁用它?

随机文章