Попытка расшифровать код, используя время дешифрования - PullRequest
0 голосов
/ 08 ноября 2018

Некоторое время назад я узнал, что есть возможность расшифровать код, используя следующий метод, если цикл проверки кода выглядит примерно так:

char *code, *user_input;         /* assume the pointers are pointing valid data */
while(*code++ == *user_input++); /* go over char by char */
printf((*p == '\n' && q == code + strlen(code)) ? "ok\n" : "fail\n");       

Если это цикл проверки кода, тогда я могу предоставить входы и проверить, сколько времени потребуется циклу для возврата fail . Если для этого потребовалось X тактов, я был на 1-м символе, 2X - на 2-м, и так далее ...

Способ скрыть данные, полученные из цикла этого типа, состоял в том, чтобы добавить задержку, ограничить пользовательские вводы (не может перебор) или перебрать весь цикл в любом случае.

#include <stdio.h>
#include <unistd.h>
#include <time.h>
#include <string.h>

int main()
{
    char * code = "1234";
    char *user_input;
    size_t len = 16;

    while(getline(&user_input,&len, stdin))
    {
        char *p = user_input, *q = code;
        clock_t start = clock();

        while(*p == *q){p++, q++;};
        printf((*p == '\n' && q == code + strlen(code)) ? "ok\n" : "fail\n");
        clock_t end = clock();      
        printf("%d\nTry again!\n", (int)(end - start));
    }
    return 0;
}

Так работают примитивные расшифровщики?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...