Интересная задачка. Имеем вирутальную клавиаутуру для мыши в виде картинок, на которых случайным образом отображены три разных символа. После нажатия одной из кнопок-картинок, клавиатура обновляется так, что на каждой кнопке опять три символа. Но другие комбинации. Получается что-то вроде набора Т9 как на телефоне. После нажимания, скажем 10-ти кнопок, будет 3^10=59049 комбинаций пароля. Какой-правильный? Как узнать? Как повторить ввод?
а писать последовательность screenshot-ов 24 раза в секунду за метод сойдет? это конечно не 1 байт на нажатую клавишу, но в задаче ничего не сказано о ресурсах тачки.
Broken Sword Ты имеешь ввиду что юзер интуитивно будет подводить мышь на "правильную" букву? Черт, я немного лажанулся. Перехватить пароль не составит труда, если юзер повторит его ввод во второй раз. Тогда ведь пересечение букв в первый и второй раз и выдаст тебе с большой вероятностью ту букву, которая входит в пароль. Однако, если кнопок всего две. На одной 13 случайных букв и на другой 13 оставшихся, тогда будет сложнее. Короче, смысл в том, чтобы сделать такую аутентификацию, когда ни кейлоггер, ни подсматривание ничего не даст...
Не получиться. Потому что если пароль вводится в программу, то он каким-либо образом будет формироваться в ее памяти, а значит зная как работает программа, не составит труда написать граббер паролей для нее.
Если символы не слишком замусорены, то можно натаскать нейронную сетку на распознавание образов. Но это уже из области сферического коня в вакууме.
повторить ввод думаю можно заюзав hook, как тип хука называется не помню, помню он запоминает ввод, а затем повторяет)
Достаточно снимать скриншот во время клика мышью. Реализация - какая больше понравится, хоть по таймеру нажатость кнопок проверять.
В Компьютерре недавно описывали неплохой способ авторизации. Там на просторном прямоугольнике раскидывалось порядочное количество значков. Для логина, пользователь должен три раза ткнуть внутрь воображаемого треугольника, проведенного между тремя значками (считай символами). После каждого тыка значки перемешиваются. Таким образом 9 символьный пароль реализуется легко. Даже если кто-то и будет подсматривать, пароля он не поймет.
alpet Хоть кто-то меня понял. Очевидно, это подходит для авторизации по сети а не в локальной программе, где можно в отладчике найти сеансовый ключ. CyberManiac Скриншот не поможет. Ты ж не знаешь какая именно буква является причиной того, что кликнули именно на эту кнопку. А в следующий раз множество букв на кнопке с большой вероятностью не повторится. Треугольник - сложнее, и пользователь с большой веротяностью будет кликать поближе к одной из букв. Можно вообще обойтись без картинок. Но с ними - лучше. Тогда нельзя полностью автоматизировать процесс перехвата пароля, а ручной анализ требует человеко-часов. Чтобы перехватить такой пароль, достаточно много раз делать скриншот и сужать множество букв, которые и явились причиной того что клинкули именно на эту кнопку. Так что это не панацея. Тем не менее, чтобы множество букв не снижалось до однозначного минимума, нужно предусмотреть намеренное число ошибок при кликанье на кнопку. Вопрос в том как обязать пользователя делать эти ошибки. Тут можно сделать так, чтобы некоторые символы потвторялись на обеих кнопках а некоторые потенциально искомые вообще отсутствовали. Все на глаз, ничего не доказывал Да и сложно и нудно юзать такую фигню. Так что фигня на любителя.
Folk Acid Скриншот не поможет. Ты ж не знаешь какая именно буква является причиной того, что кликнули именно на эту кнопку. А в следующий раз множество букв на кнопке с большой вероятностью не повторится. Это если один раз. А вот если есть возможность пронаблюдать два или больше сеансов авторизации, то уже ничего не поможет, кроме, может быть, звукового интерфейса: программа проговаривает алфавит - юзер кликает кнопкой на нужной букве.