Как расшифровать сообщения на прошивке Repetier?

Мне нужно отправить сложный пароль на мой компьютер. Машина должна расшифровать его и запустить. Я не нашел достаточно ресурсов для такой операции.

Более подробное описание:

Я разрабатываю новую функцию для своего 3D-принтера, который работает на Repetier. (Возможно, я могу выполнить эту работу на другой прошивке). Я хочу изменить свой 3D-принтер, чтобы он мог понимать специальные зашифрованные G-коды наряду с обычными g-кодами. Давайте опишем это на примере:

Обычно 3D-принтеры могут считывать и применять стандартные файлы g-кода, такие как:

G28
G0 X10 Y20 E30
.
.
.
etc.

Но я разрабатываю метод шифрования g-кода, который шифрует любой g-код и превращает его в текст, подобный:  

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

Я хочу изменить прошивку для 3D принтера, чтобы он понимал, зашифрован ли соответствующий g-код, проверяя каждую строку, если она начинается с M999 (или начинается с какого-то другого символа шаблона, который я решу позже).

Для этого мне нужно понять, как работает Repetier, особенно как работает command debug и как я могу разобрать свой зашифрованный код из зашифрованного файла g-кода.

Я не мог понять, как repetier.h / command.cpp работает и как он анализирует строку и перенаправляет на функциональные случаи.

, 👍3


1 ответ


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: // Шпиндель/лазер вкл.
            ...

        case 999: // Ваша пользовательская логика

После декодирования зашифрованной строки я думаю, что было бы лучше вернуться к первому упомянутому методу и позволить процессу начать сверху с незашифрованной команды.

case 999:

    // Пользовательская логика
    executeGCode(unencrypted);
    break;

,

Спасибо за ответ, извините за ожидание ответа, я попробовал ваше предложение, но когда я отправляю код на хост Repetier, я получаю неправильную контрольную сумму и предупреждения неизвестных команд в качестве возврата, я думаю, что когда мы отправляем код на машину, мы делаем проверку, прежде чем делать работу мы хотим, как мы можем отключить его?, @NeverGiveUp