сценарий
Я использую локскрин для сопоставления с образцом и, к сожалению, забыл свой шаблон. Я хотел бы знать, сколько времени мне потребуется, чтобы разблокировать его. Вот спецификации экрана блокировки Google, которые мы будем использовать для этой задачи.
- Каждые 5 неправильных кодов пользователь должен ждать
30 seconds
перед дальнейшим вводом. Шаблон должен, по крайней мере, состоять в
4 points
(см. Ниже)Точку можно использовать только один раз, но вы можете пройти через нее несколько раз (см. Изображение справа ниже):
Здесь центральная точка используется только один раз, даже если мы повторим ее снова для этого конкретного шаблона.
Гипотеза и факты
Мы предположим, что мы супергерои и что мы можем нарисовать любой шаблон 1 second
, нам никогда не нужно есть или спать. Да, мы сверхчеловеки.
Я очень неудачливый человек. «Наихудший сценарий» - это моя повседневная жизнь, поэтому шаблон, который я попробую в последний раз, будет правильным.
Что мы должны pwn?
Для тех, кто этого не знает, Android (и другие телефоны сейчас) предлагает возможность разблокировать телефон путем рисования рисунка на 9-точечной матрице. Эта матрица может быть описана следующим образом:
C(A) M(B) C(C)
M(D) X(E) M(F)
C(G) M(H) C(I)
- C означает «угловая точка»
- М для "средней точки"
- X для "центральной точки"
- Я дал идентификаторы точкам, чтобы было легче
Разрешенные прямые подключения:
Угловой пункт:
Средняя точка:
Центральная точка :
Однако, как указал Steveverrill, «как только центр используется (и, следовательно, становится недоступным), прямое соединение между нижним левым и верхним правым углом становится однозначным и, следовательно, возможным». То же самое касается любой «средней точки», если, например, точка B уже подсчитана, то возможна прямая связь между A и C. Если, например, F уже подсчитано, то возможна прямая связь между C и I. И т.д...
правила
- Суть этой задачи заключается в том, чтобы узнать, сколько времени (в удобочитаемой форме, т.е. год / день / месяц / час / независимо от того, сколько времени вы найдете) мне потребуется, чтобы разблокировать этот чертов телефон.
- Вы не можете жестко закодировать количество возможных действительных шаблонов (даже не Google, вы дурак), рассчитать его (это на самом деле забавная часть, не так ли?)
- Самый короткий кусок кода выигрывает
- Удачи !
источник
Ответы:
Ребму :
197 175 168167 знаковСоздает комбинации в виде последовательности чисел (например, 12369 сверху вниз, справа вверху и справа внизу), проверяет, является ли комбинация действительной, и увеличивает счетчик, если она есть. Это может занять некоторое время * для запуска. Возвращает количество секунд, необходимое для разблокировки телефона.
Немедленно и прокомментировал:
Программа зацикливается от 1 до (987654321-1233), проверяя 1233 + счетчик цикла (следовательно, проверяя 1234 до 987654321).
Если число
987653088
заменено на,9876-1233
или8643
, то программа найдет время, необходимое для всех 4-точечных комбинаций.Выход для
9876-1233=8643
(4-точечные комбинации):Выход для
98765-1233=97532
(4-х и 5-ти точечных комбинаций):Выход для
987654-1233=986421
(4,5,6-балльные комбинации):* 4/5 баллов заняли у меня около 8 секунд, чтобы бежать; 4-6 заняло около 77 секунд. Это может занять ~ 24 часа или дольше в зависимости от того, кто запускает это, чтобы рассчитать количество комбинаций для комбинаций 4-9 баллов.
источник