Comments 60
Dreadatour — молодец!
Я так и не понял как «из коробки» начать работать с опенцв в питоне… :-( Как?
всё предельно просто:
а дальше
и поехали…
brew install opencv
а дальше
import cv
и поехали…
почти
тока brew неизвестно что такое. Гугл ищет софт для пивоварения. А вот это меня вообще сделало бояться:
«To cut this short, here is what you need to get that Python running: brew install python»
Кто такой брю?
тока brew неизвестно что такое. Гугл ищет софт для пивоварения. А вот это меня вообще сделало бояться:
«To cut this short, here is what you need to get that Python running: brew install python»
Кто такой брю?
bluehat.me/blog/2011/09/10/python-installation-via-homebrew/
А, блин, это что-то линуксовое…
Под виндой у меня траблы. Под 7-кой.
А, блин, это что-то линуксовое…
Под виндой у меня траблы. Под 7-кой.
Мне кажется что этому девайсу надо сделать стенки чтобы не было бликов на экране от окон и пр. + добавить подсветку (например светодиодом запитанным от той-же ардуины) во время съёмки…
А так — очень даже интересно… правда нагляднее было бы всё-же с кодом в статье, а не по ссылкам :)
А так — очень даже интересно… правда нагляднее было бы всё-же с кодом в статье, а не по ссылкам :)
Стенки делать нет смысла, т.к. бликов не бывает — камера строго перпендикулярна ЖК-экрану, поэтому бликовать там нечему.
А вот тень от краёв «окошка» экрана иногда мешает распознавать картинку — тут вы правы, нужен светодиод. Я даже экспериментировал с подключенным через второй ШИМ (для управления яркостью) светодиодом, но вмечатляющих результатов не добился — если направлять светодиод строго в экран, он очень сильно бликует, если же подсвечивать экран сбоку, появляется та же тень. Нужен рассеиватель.
В общем, надо думать, экспериментировать, а мне, если честно, уже лень ;)
А вот тень от краёв «окошка» экрана иногда мешает распознавать картинку — тут вы правы, нужен светодиод. Я даже экспериментировал с подключенным через второй ШИМ (для управления яркостью) светодиодом, но вмечатляющих результатов не добился — если направлять светодиод строго в экран, он очень сильно бликует, если же подсвечивать экран сбоку, появляется та же тень. Нужен рассеиватель.
В общем, надо думать, экспериментировать, а мне, если честно, уже лень ;)
Если б Вам разрешили разобрать токен, то можно б было обойтись одной ардуиной — узнавать цифры с помощью анализа напряжений на выводах ЖК дисплея.
Но вот мощности ардуины не хватит представиться USB-клавиатурой (чтоб ввести пароль в домен)
Хотя Ваша конструкция напоминает считыватель TouchMemory с привязанной к нему скотчем таблеткой — профанация всей идеи безопасности…
Но вот мощности ардуины не хватит представиться USB-клавиатурой (чтоб ввести пароль в домен)
Хотя Ваша конструкция напоминает считыватель TouchMemory с привязанной к нему скотчем таблеткой — профанация всей идеи безопасности…
Никто не мешает забирать токен с собой, покидая рабочее место, что, думается мне, и было специально предусмотрено конструкцией.
Ну разобрать токен, не так уж и просто, как кажется на первый взгляд, об этом позаботились его разработчики.
Разобрать токен никто не даст.
Да и «анализировать напряжение на выводах ЖК дисплея» сильно сложнее моей поделки, если честно.
Ардуина тут вообще, фактически, для красоты, как на известной картинке. Если бы была нужна USB-клавиатура, никто не помешал бы мне взять нормальную AVR'ку (или даже ARM) и сотворить всё, что душе угодно.
Кто куда привязан? Какая профанация? Ничего не понял. Вот, на всякий случай, ещё одна фотка, — возможно, вы не так всё поняли.

Да и «анализировать напряжение на выводах ЖК дисплея» сильно сложнее моей поделки, если честно.
Ардуина тут вообще, фактически, для красоты, как на известной картинке. Если бы была нужна USB-клавиатура, никто не помешал бы мне взять нормальную AVR'ку (или даже ARM) и сотворить всё, что душе угодно.
Кто куда привязан? Какая профанация? Ничего не понял. Вот, на всякий случай, ещё одна фотка, — возможно, вы не так всё поняли.

а зачем распознавать? у нас для такого же просто фотки с вебкамеры на http-сервер выкладываются
Ну чтобы надо зайти на сервер — нажал хоткей, дождался распознавания, нажал «вставить» в поле пароля и всё.
А у вас зачем фотки на http-сервер выкладываются? о_О
А у вас зачем фотки на http-сервер выкладываются? о_О
для минимизации телодвижений, надо ещё после распознания автоматически вставлять текст в активное поле ввода
Пожалуй, пора делать токен в виде каптчи — смазанной и прыгающими цифрами
Скажите, пожалуйста, а как вы освоили OpenCV под Python?
Я пишу курсовую по обработке изображений. Но OpenCV я как-то не потянул — не нашел толковых мануалов. В итоге ограничился достаточно простым но банальным PIL :(
Я пишу курсовую по обработке изображений. Но OpenCV я как-то не потянул — не нашел толковых мануалов. В итоге ограничился достаточно простым но банальным PIL :(
У OpenCV не самая лучшая, но достаточно внятная документация с хорошим поиском (пример запроса по уловию «Canny»).
В исходниках OpenCV можно найти замечательные примеры (директория «samples») — на питоне в том числе.
Я просто грепал название нужной мне функции в этой директории и находил примеры использования.
Ну и google (который, зачастую, выводил меня на stack overflow).
В исходниках OpenCV можно найти замечательные примеры (директория «samples») — на питоне в том числе.
Я просто грепал название нужной мне функции в этой директории и находил примеры использования.
Ну и google (который, зачастую, выводил меня на stack overflow).
Learning OpenCV. Где взять в оригинале, сами знаете. Есть ещё фанатский русский перевод.
Веб камеры довольно шумные, особенно если освещённость не очень. Качество картинки можно улучшить интегрированием — ну то есть захватить не один кадр, а несколько, сложить их, а потом посчитать среднее. Обычно берут количество кадров, равное степени двойки — скажем 8 или 16 и т.д. — тогда деление можно заменить сдвигом. Соотношение сигнал/шум несколько улучшится. Но если и так работает, можно и не заморачиваться.
тогда проще поставить 1-2 светодиода для подсветки, качество вырастет намного!
Кстати легкое смещение токена от оси камеры тоже может повысить контраст, ведь у таких жк дисплеев есть углы где контраст максимален, а в противоположных углах наоборот падает.
Кстати легкое смещение токена от оси камеры тоже может повысить контраст, ведь у таких жк дисплеев есть углы где контраст максимален, а в противоположных углах наоборот падает.
Андрей, я думал про интегрирование, но решил не заморачиваться особо, и решил задачу «в лоб».
Путей оптимизации и улучшения алгоритма масса, — когда мне будет скучно, я, возможно, вернусь к этой задаче.
Путей оптимизации и улучшения алгоритма масса, — когда мне будет скучно, я, возможно, вернусь к этой задаче.
Вова молодец! :-)
Спасибо. Как раз собираюсь разбираться с OpenCV. :)
М-м-м… узнаю обои…
Куда смотрит ваш security manager?
Ну если вы попробуете объяснить мне, в каком месте здесь нарушена безопасность, — я обещаю, что привлеку его к проблеме.
Замечательная статья и замечательный способ повышения удобства. Но давайте я попробую на пальцах объяснить, в каком месте нарушается безопасность.
Основная идея автономных OTP-токенов в том, что физически разделяются «каналы» генерации и доставки секрета в момент аутентификации. То есть у вас для генерации секрета используется токен, а для его доставки — компьютер и сеть.
В этой связке недоверенными являются компьютер и сеть передачи данных. Именно поэтому им не позволено генерировать или хранить секрет. Это делает автономное устройство, на которое недоверенный компьютер или недоверенный субъект в сети никак (теоретически) не может повлиять, потому что для генерации секрета нужно физически нажать кнопку и ручками ввести одноразовый пароль. А у компьютера или субъекта в сети ручек нету.
Что Вы делаете. Вы даете недоверенному компьютеру возможность управлять генерацией секрета, то есть даете ему ручки. Весь смысл автономного OTP-токена коту под хвост :)
Но в оправдание можно сказать что
— это не массовый продукт, уязвимости в вашем ПО и принципах работы искать никто не будет
— токен всегда можно забрать с собой (это нужно делать обязательно, когда Вас нет)
— это удобно :)
Но Ваш Security Manager, если ему не зря платят зарплату, должен Вас очень сильно отругать за такое изобретение.
Основная идея автономных OTP-токенов в том, что физически разделяются «каналы» генерации и доставки секрета в момент аутентификации. То есть у вас для генерации секрета используется токен, а для его доставки — компьютер и сеть.
В этой связке недоверенными являются компьютер и сеть передачи данных. Именно поэтому им не позволено генерировать или хранить секрет. Это делает автономное устройство, на которое недоверенный компьютер или недоверенный субъект в сети никак (теоретически) не может повлиять, потому что для генерации секрета нужно физически нажать кнопку и ручками ввести одноразовый пароль. А у компьютера или субъекта в сети ручек нету.
Что Вы делаете. Вы даете недоверенному компьютеру возможность управлять генерацией секрета, то есть даете ему ручки. Весь смысл автономного OTP-токена коту под хвост :)
Но в оправдание можно сказать что
— это не массовый продукт, уязвимости в вашем ПО и принципах работы искать никто не будет
— токен всегда можно забрать с собой (это нужно делать обязательно, когда Вас нет)
— это удобно :)
Но Ваш Security Manager, если ему не зря платят зарплату, должен Вас очень сильно отругать за такое изобретение.
Я вмешаюсь в разговор и блесну отсутствием каких-либо знаний в области ИБ, извините. Так вот, с чего вдруг в данном случае компьютер стал недоверенным? Если его как-то скомпрометировали, то не проще ли поставить кейлоггер/сниффер, либо воспользоваться поднятой ssh-сессией, чем пытаться найти уязвимость в ПО распознавалки?
Эта схема работает только если есть токен в устройстве. Процесс генерации сопровождается шумом и визуально виден, т.е. «тихой сапой» генерировать не получится. Уходя, токен просто забирается.
Спасибо за развёрнутый ответ и попытку объяснить суть проблемы.
На мой взгляд в ваши рассуждения закралась ошибка, вот тут: «Вы даете недоверенному компьютеру возможность управлять генерацией секрета». В моём случае компьютер ничего не генерирует — он всё так же является «каналом» доставки, — ключ генерируется токеном по запросу пользователя. Описываемое в статье устройство — всего лишь замена канала доставки под названием «человек» на канал доставки под названием «мой девайс».
Поправьте меня, если я ошибаюсь.
На мой взгляд в ваши рассуждения закралась ошибка, вот тут: «Вы даете недоверенному компьютеру возможность управлять генерацией секрета». В моём случае компьютер ничего не генерирует — он всё так же является «каналом» доставки, — ключ генерируется токеном по запросу пользователя. Описываемое в статье устройство — всего лишь замена канала доставки под названием «человек» на канал доставки под названием «мой девайс».
Поправьте меня, если я ошибаюсь.
Если я правильно понял суть Вашего девайса, то происходит следующее: по команде из компьютера (например, по нажатию short key), девайс жмет на кнопку на токене снимает результат, после чего изображение передается в компьютер на анализ.
Таким образом, компьютер управляет событием генерации и получает результат. Причем Ваша программа выводит результат в машиночитаемом виде (но это уже не принципиально).
Идеологически, недоверенному компьютеру (вирус, вредоносное ПО, шпионский софт и пр.) ничего не мешает без Вас послать команду на генерацию OTP и получить его значение. Вот и нарушение безопасности.
Об оговорках («кому это надо?», «можно унести токен с собой», «процесс генерации видно» и пр.) я писАл выше. Но мы сейчас руссуждаем о принципах :)
Таким образом, компьютер управляет событием генерации и получает результат. Причем Ваша программа выводит результат в машиночитаемом виде (но это уже не принципиально).
Идеологически, недоверенному компьютеру (вирус, вредоносное ПО, шпионский софт и пр.) ничего не мешает без Вас послать команду на генерацию OTP и получить его значение. Вот и нарушение безопасности.
Об оговорках («кому это надо?», «можно унести токен с собой», «процесс генерации видно» и пр.) я писАл выше. Но мы сейчас руссуждаем о принципах :)
Да, теперь я понял о чём речь.
Согласен со всеми приведёнными доводами.
К счастью, есть тысячи более простых (но, тем не менее, практически — невозможных) способов получить доступ к системе и я могу спать спокойно.
Согласен со всеми приведёнными доводами.
К счастью, есть тысячи более простых (но, тем не менее, практически — невозможных) способов получить доступ к системе и я могу спать спокойно.
Нужно просто сделать аппаратную кнопку активации процесса вместо управления с компьютера.
как вариант, ранее человек самостоятельно управлял событием «генерация токена».
Сейчас же можно удалённо запустить данную процедуру. Тем самым исключая контроль человека над этим независимым участком процесса аутентификации и авторизации.
Сейчас же можно удалённо запустить данную процедуру. Тем самым исключая контроль человека над этим независимым участком процесса аутентификации и авторизации.
Радовался и хлопал в ладоши, когда ему показали устройство.
Томас Эдисон в свое время, работая оператором связи на ЖД, вынужден был каждые 30 минут отстукивать азбукой Морзе «я не сплю», чтобы показывать, что готов принимать сообщение. Ясное дело, ночью ему хотелось спать и он придумал устройство, которое отстукивало нужный код, если провернуть колесо с рукояткой. Затем он договорился с ночным сторожем, чтобы тот каждые 30 минут подходил и поворачивал ручку. :-)
И можно было долго спать. Правда, он спалился на том, что ночью нужно было принять сообщение о внеочередном важном поезде и отправить ответ о готовности, вместо этого его автомат послал «я не сплю», тут все и поняли, что происходит. Выгнать его выгнали, но это не помешало ему стать известнейшим и уважаемым изобретателем.
Владимир, браво!
И можно было долго спать. Правда, он спалился на том, что ночью нужно было принять сообщение о внеочередном важном поезде и отправить ответ о готовности, вместо этого его автомат послал «я не сплю», тут все и поняли, что происходит. Выгнать его выгнали, но это не помешало ему стать известнейшим и уважаемым изобретателем.
Владимир, браво!
Мне нравится. Конструкция напомнило средневековое орудие пыток.
А можно было бы сделать токен-генератор на андроиде и передавать в компьютер по bluetooth…
Sign up to leave a comment.
Распознаём изображение с токена при помощи камеры