Комментарии 32
Да не сочтёт хабрасообщество за рекламу и звиняюсь за небольшой оффтоп (ибо тема, точнее подход, не совсем про-то, но с кейлоггерами, включая скрин-троянов и т.п. нечисть, справляется на ура, плюс запоминать пароли не надо) — сделал как-то расширение для ffox-а — пользуйтесь на здоровье... Вдруг кому пригодится.
В генерации паролей участвует ваш нестойкий пароль, URL-адрес (domain.tld) и ваша секретная фраза.Спасибо, но я не понял: а чем это отличается от KeePass? Узнается URL-адрес, кейлоггер отслеживает нестойкий пароль и секретную фразу. Злоумышленник берет Ваше расширение, подсовывает ему отслеженную инфу и получает доступ.
секретная фраза вводится один раз (запоминается в профиле), вытащить её оттуда сродни вытаскиванию пароля из поля формы, даже хуже ибо расширения в фоксе подписываются (т.е. неизменяемы). Максимум что может быть украдено кейлоггером — это нестойкий, не замешанный, пароль.
От keepass это отличается тем что пароли не хранятся нигде (имхо это моветон), они "вычисляются* алгоритмически
на свеже поставленных ОС и фоксе офф-лайн, т.е. с гарантией, что не сядет троян?
Т.е. другими словами, вы знаете что у вас кейлоггер сидит и живете с этим? Т.е. случайное, до времени незамеченное, заражение — это одно, но это ж не норма...
Ну тогда вводите секрет как-нибудь "гарантированно" секьюрно (по частям, с копи-пастой, драг-дропом с яндекс клавиатуры и т.п.), т.е. максимально сложно — обфусцировано (один раз же)...
Array.prototype.shuffle = function( b )
var line0 = new Array('<li class="symbol">…
var line1 = new Array('<li class="letter">…
var line2 = new Array('<li class="letter">…
if (focusss == false)
Ужас, ужас, ужас. Приведите в порядок код и форматирование.
Да в общем-то тут к JS применим только манкипатчинг как антипаттерн. Всё остальное — глобально.
Переменные вида "focusss" и вид самого метода shuffle сравните с тем что на SO: http://stackoverflow.com/a/2450976/506954. Вроде и делают одно и то же, однако их код более читаем, что не менее важно чем работоспособность, если вы решили поделиться своим кодом с сообществом.
Пробелы с отступами у вас отличаются от примера к примеру — если и копипастите код откуда-то — форматируйте его, приводите в единый вид.
Перечисление кнопок просто кошмарно, и JS тут вообще ни при чём. Используйте отдельный метод — генератор кнопки и исходный массив символов — это убережёт от возможных опечаток и сделает код более читабельным и поддерживаемым, складывайте его в коллекцию по символу или просто по индексу.
Сортируйте массив индексов, а не сами кнопки. Да, + массив, однако всё стаёт гораздо читабельнее, гораздо легче поддерживать и вообще душа радуется.
if (variable == false)
абсолютно равноценно if (!variable)
, либо проверяйте на строгое соответствие ===
если это важно.
Кроме всего прочего, неплохо бы выложить куда-нибудь на Github.
И почему, собственно, пост про Safari? Какое он отношение имеет конкретно к этому браузеру?
Чтобы выйти из ситуации просто перемешаем раскладку виртуальной клавиатуры!
Конечно, если злоумышленник будет получать скрины в момент клика, то это не поможет. Но здесь возможна хитрость: обозначим буквы-цифры пиктограммами: 1-Яблоко,..., 9-Молоток,..., а-Персик, и т.д. Распечатаем на принтере эту табличку и будем выводить на клавиатуре со случайной раскладкой пиктограммы. Пользователь, набирает пароль по бумажной табличке, которую злоумышленник не видит (не забыть отключить web-камеру, перед вводом пароля!). Злоумышленник получит скрины, где были нажаты: Молоток, Персик, Яблоко, Молоток, Яблоко,… и далее ему остается делать перебор, который будет очень долгим при достаточной длине пароля.
Можно модифицировать этот метод и использовать обычную клавиатуру, если ПО будет ее перекодировать при вводе пароля: пусть 1 -> q, 2 -> x, ..., a -> t, b -> 8,… Тогда, чтобы набрать пароль x8q, пользователь должен набрать 2b1. Понятно, что таблица перекодировки должна быть надежно зашифрована, и должны быть приняты меры на случай дампа участков памяти — в этом плане предложено много эффективных подходов.
Еще можно зашумлять набор. После каждого нажатия/клика пользователем ПО случайным образом эмулирует несколько нажатий/кликов, запоминает их и удаляет из общей последовательности нажатий/кликов, получая таким образом пароль, введенный пользователем. А злоумышленнику придется гадать, что в общей последовательности исходит от пользователя.
Кажется, при таком уровне паранойи проще забрать все свои деньги из банка и сложить в носок под подушку.
Единственное что интересно, нельзя ли вытащить значение прямиком из поля ввода? Или из «канала» к полю ввода?
//держите в чистоте операционку… ubuntu или mac
Антикейлоггер «для параноика» в Safari