Как определить зависимость между числами зная несколько начальных значений и конечное?

На работе есть оборудование на котором для доступа к настройкам нужен пароль, этот пароль каждый раз разный. Для получения этого пароля нужно каждый раз обращаться к производителю. Несколько раз пароль был получен. Также недавно был представитель произвдителя этого оборудования и я видел что он в файле экселя вводил серийный номер оборудования а также порядковый номер пароля (в окне ввода пароля есть счётчик который после каждого правильного ввода пароля увеличивается на один) и по итогу у него выводился пароль. Как можно определить зависимость между этим числами? Может есть какие-то онлайн сервисы или что-то подобное
  • Вопрос задан
  • 748 просмотров
Пригласить эксперта
Ответы на вопрос 2
Никак, скорее всего.

Простой пример: в Excel у злодея и в оборудовании зашит общий «секрет» – пара взаимно-простых чисел.
N-й пароль это остаток от деления (N * p1) % p2

К примеру, сможете продолжить последовательность? 14, 28, 42, 56, 70, 1, 15, 29, 43
продолжение
57, 71, 2, 16, 30, 44

код и значения простых
Тут намеренно взяты маленькие простые числа, поэтому заметна цикличность «паролей»:
const p1 = 97;
const p2 = 83;

const pass = [];
for (let n = 1; n < 10; n++) pass.push((n * p1) % p2);



Попробуйте вытащить из своего оборудования код, проверяющий пароль и заменить его на свой, где пароль "password" )
Ответ написан
Комментировать
wataru
@wataru Куратор тега Математика
Разработчик на С++, экс-олимпиадник.
В общем случае никак. Надо реверс-инженирить код проверяющий или генерящий пароли. Еще, как вариант взлома, можно попробовать поменять счетчик паролей и вводить старый пароль.

В самом печальном для вас случае там используется криптография. Тогда не имея доступа к секретному ключу у производителя пароль никак не сгенерировать даже имея весь код генерации и проверки пароля.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы