Pull to refresh

Comments 61

Залез в Synaptic проверить какие пакеты есть по теме bluetooth и наткнулся на blueproximity (сам не ставил еще): «blueproximity helps you adding a little more security to your desktop. It does so by detecting one of your bluetooth devices, most likely your mobile phone, and keeping track of its distance»
В пакетной базе Gentoo не нашел ничего подобного, поэтому решил делать своими руками.
Когда я ставил blueproximity себе году этак в 2010-м, работала очень даже прилично. Но зато в варианте, предложенном автором, не надо никакой софт ставить, всё решается несколькими строчками в конфигах + скриптик.
Да, про это и на Хабре было. Да и про скрипты тоже что-то было, по-моему, но я не нашел.
blueproximity прекрасно работает, активно пользовался долгое время.
Помнится, делал подобный скрипт (только вместо скринсейвера запускал/выключал motion, который управлял камерой) на коленке пару лет назад, правда, из-за жручести bluetooth забыть про него.

Вот, кстати, откопал сам скрипт :)

gist.github.com/drakmail/4977094
А чем вам не угодил xscreensaver и блокировка через некоторое время и по хоткею?

Описанное решение не спасет, если забудете телефон у компьютера или отойдете недостаточно далеко (мне код портили, пока я был в трех метрах и наливал себе кофе).
Блокировка по bluetooth, не заменяет традиционные методы, а дополняет. Заранее определенный короткий интервал для скринсейвера мешает чтению статей с экрана, приходится дергать курсор или нажимать шифт.
Не знаю, по мне так проще нажать хоткей, отходя от компа, чем не забыть взять с собой телефон.
Можно ж настроить, чтоб скринсейвер врубался, скажем, через 2 мин, а блокировка еще через минуту.
Т.е. при чтении с экрана блокировка мешать не будет, но включаться тем не менее будет достаточно быстро.
Каждые две минуты придется «генерировать активность» чтобы экран не потух. Разве нет?
Если экран гаснет плавно, а не резко — это вообще почти никаких неудобств не доставляет, после пары раз на автомате скринсейвер выключаешь.
мне код портили, пока я был в трех метрах и наливал себе кофе

Буду не оригинален, но за такое надо бить морду.

Сам использую хоткей что-бы скрыть личную переписку от проходящих мимо.
Но что-бы кто-то у нас в офисе полез в компьютер соседа — для меня звучит очень странно.
Какой-то злой у вас коллектив.
Мне вот правили код, пока я ходил наливать кофе. Правда, эффект тоже хороший был, думал, схожу с ума. Уходил, не работало, вернулся — всё завелось.

А лочить имеет смысл, действительно, разве что, личную переписку.
Есть только одна проблема: телефон со включенным синим зубом сажает батарею гораздо быстрее, чем без него.
Ждем кого-нибудь, кто запилит софтину для оповещении хозяина о необходимости отключить блютус на смартфоне при потере связи с компом ;-)
Тоже самое решается простым hot-key
П.С.
У меня на ноутбуке Asus N53Jq система (Ubuntu начиная с 11.04) решила считать кнопкой блокировки дополнительную аппаратную кнопку которая призвана загрузить ноутбук в EZ Boot (разновидность linux, должна грузиться за 8 секунд, на деле порядка 20-30)
Если вы отвлечены важным звонком, то можете просто забыть нажать hotkey, т.к. мысли заняты другим. Много раз себя ловил на этом.
ну в этом случае у bluetooth может хватить радиуса действия.
Вариант для тех у кого телефон постоянно на зарядке от компа контролировать наличие usb устройства.
Для ответа снял со шнура и комп залочился.
Если есть желание использовать короткие расстояния, то можно в скрипте проверки проверять уровень сигнала.
тоже вариант.
Но дома bluetooth мышь logitech M555b в паре с ноутбуками с встроенным адаптером пользоваться нереально, постоянные лаги (с внешним адаптером безукоризненно). Так конфликт с WiFi проявляется.
Не будет ли такое ухудшение связи причиной неожиданных блокировок
Не готов ответить на этот вопрос, у меня нет bluetooth мыши. Надо тестировать.
Вы сами то этот метод используете? Как с ложными срабатываниями из-за отсутствия пинга?
Вот я только что для теста запустил в цикле (раз в минуту) l2ping -c 1, так за 20 минут 2 раза пинг не прошел, 2 раза бы экран залочился. При этом телефон (Galaxy Nexus) конечно лежал рядом.
Лично сам использую. В течении дня проскакивает 1-2 ложных срабатывания, но из-за того что на телефоне Bluetooth «зависает». Чем это вызвано пока не могу поймать. Телефон LG-E400.
Попробуйте увеличить кол-во попыток пинга, с одной до трех например (параметр -c 3).
Да это понятно, просто я думал, если вы постоянно это используете, то уже сделали для себя надежный метод защиты от ложных срабатываний, но вы стало быть так и живете с парой внезапных блокировок в сутки :)

Простое увеличение параметра -c ничего не даст, т.к. при первой же потере пакета l2ping вывалится с exit code 1 и будет ложное срабатывание. Другое дело — на уровне скрипта проверять успешность нескольких проверок подряд и на основе этого принимать решение о блокировке.
Да. Предложенный мной подход позволяет использовать любую логику, со скольким угодно кол-вом проверок подходящих именно вам. В посте приведена простейшая реализация, чтобы понять принцип работы.
Самый простой вариант — делать каждую минуту по три(например) пинга в цикле, и считать фейлом лишь тот случай, когда все 3 попытки не нашли телефон.
Важно учитывать что чем чаще мы обращаемся к телефону, тем быстрее у него сядет батарейка.
Так если телефон будет найден в первый раз, то дополнительных проверок не будет.
Если проверка фейлит — проверяем еще n раз и затем блочим.
Настроена блокировка компа на клавишу Pause Break. Вполне достаточно и даже очень удобно.
То есть обычная блокировка по hotkey?
Да, встал — нажл. Удобно, а самое главное, не надо заморачиваться — сработает не сработает, думать, на сколько сажает батарейку и т.п.
О недостатке этого способа написано выше.
Сейчас делаю то же самое, только на основе веб камеры и детектирование лица: python + opencv. То есть как только физиономия пропадает из кадра, лочим через 10 секунд.
А если отвернулся или просто сменил позу, так что лицо выехало за границы видимости веб-камерой? Мне кажется этот метод больше подходит для разблокировки экрана, вместо ввода пароля, особенно, если быстро обработает появление нужного лица в кадре.
Как раз-таки проблемы начинаются когда держишь руку у лица или половина лица в кадре — срабатывает блокировка, к сожалению эту проблему пока решить не удалось.

Другая проблема заключается в том, что иногда спинку кресла за туловище воспринимает и не делает блокировку.
Фигасе, а просто Ctrl + Shift + L отменили?

Скорее психолога в коллектив надо вызывать, когда такие случаи случаются :)

ps: А вообще рецепты забавные — на базе них можно что-то более полезное изобрести.
пришла идея сделать специальный USB-коврик под пятую точку — убить два зайца разом: и геморроя не будет, и личные секреты никто не увидит
Можно ли как-то уменьшить расстояние? Зачастую необходимо выйти не в пределах 10-20 метров, а до 5-7, буквально за стенку, но там BT будет прекрасно добивать до машины.
В таком случае вам надо следить не за доступностью, а за уровнем сигнала.
hcitool tpl <адрес телефона>
У вас на предприятии не используются политики безопасности.
Встал из-за компьютера — на автомате заблокировал экран.
Если кто-то из коллег полез без спроса за чужой компьютер — по рукам (выговор/штраф).

особенно так шпионов хорошо ловить, по рукам им, выговор или даже штраф! [сарказм>
А еще можно сделать usb брелок на телефон. Когда нужно с телефоном отойти, брелок вытаскивается, система реагирует и блокирует компьютер.
UFO just landed and posted this here
Странно, что никто еще не реализовал проверку физического присутствия пользователя с помощью веб-камеры.
Я себе запилил похожее. Только с возможностью автоматического анлока и настройкой уровня сигнала (расстояние на котором будет выполнен лок).
UFO just landed and posted this here
Сосед по офису может пошутить — притащить глушилку на 2.4 Ghz :)
Операясь на стандарт bluetooth — использовать постоянное соединение дешевле.
В случае обрыва — попытка подключения, иначе блокировка.
Вы хотите сказать что 8 часовое подключение «энергоэффективнее» чем 480 подключений по 1-2 секунде?
Делал то же самое на основе udev когда мобильник втыкается на подзарядку :) Если интересно — напишу
Именно. 8 часов пассивного соединения менее энерго эффективно чем 8 минут передачи данных.
Скиньте пожалуйста ссылку на материал, где про это сказано.
Пришлось слегка попотеть, надеюсь она вам правда была нужна и вы не поверили мне на слово, не прогуглили сами.
Litepoint один из производителей чипов, в том числе блютус
www.litepoint.com/whitepaper/Bluetooth%20Low%20Energy_WhitePaper.pdf
Страница 3.
peak — десятки mA, idle — десятки nA
В качестве примера на странице 4 — пик 12.5 mA, порядка 12микро ампер за секунду передачи. Возьмем за эталон, хорошо?
Страница 5. Передачи на скорости 1mbit 8-27 октетов. Думаю имеется в виду передача данных, включая служебных, протокола bluetooth. Заметим и учтем что чип применяет AES.
Рассмотрим паке(8 стр) — 8 октет служебных данных и кадр 2-37 октета. (Причем 2 байта — заголовок)
Т.е 10 байт это минимальный overheat, причем его достаточно для поддержания соединения.
Страница 12 — картинка. Такую нагрузку дают стеки. В данном случае запрос ARP.

C блютус покончили, езернет(ваш пинг)
en.wikipedia.org/wiki/Ethernet_frame
В вашу пользу начальные и конечные данные я отброшу, наверняка их нет в итоге — блютус же давал начало фрейма.
6+6 маки, 2 тип запроса, CRC 4 байта. Причем скорее всего не отброшено, что бы считаться корректно для этой части.

— Что мы получаем
Пусть для bluetooth-keepalive будет проверка каждые 10 секунд(Sniff-subtracking). Получается в минуту 60 байт для передачи.
ping ethernet over bluetooth каждую минуту(однократный) это — 10+18 байт в одну сторону. Т.е 56 байт.

===Т.е для вашей ситуации передача выгоднее
Давайте решим задачку(О которой спор, и я оговорился там, 8 минут передачи менее эффективно). 8 часов пассивного соединения это 28.125 kb, на скорости 0.3Mbps(ухудшим ситуацию) это 65.918ms передачи данных.

С этим ок. По вашей ситуации:
В день вы передаете 61.523ms, что согласно приведенной таблице — 0.8 миллиампер в день на передачу, плюс шифрование (AES процессора), плюс операционка возбудится что ее пингуют. вобщем я оцениваю в 100mA расходы максимум(cpu, ram, шина бла бла). В моем же методе дальше чипа информация не проходит, а значит тратится в районе 1mA.

Итог
Я распинался больше двух часов что бы доказать кому то в интернете что он не прав что ваши ежеминутные расходы на пинг того же порядка что и расходы на keepalive. Но любой запрос выше протокола обслуживаемого чипом требует ответа котроллера шины, прерывания МК и вероятно просыпания ОС. Все это ведет дополнительные расходы, которые в лучшем случае удвоят потребление, в худшем приведут его к бесконечности.

P.S нас рассудит эксперимент

Достойный ответ, плюсанул карму. Подумаю как провести эксперимент с keepalive.
Спасибо, а то ближе к четырем утра, когда я пришел к выводу что потребление примерно равное и даже хуже, и еще не долумался что ОС тоже должна что то крякнуть — расстроился слегка ;)
Точнее эксперимент с постоянным подключением, вместо пингов (keepalive).
Sign up to leave a comment.

Articles