Идея создания беспроводного периметра у
вашего компьютера довольно занимательна.
Соединив сотовый телефон с компьютером
через Bluetooth, можно реализовать массу
полезных вещей. В данном случае мы
рассмотрим создание защитного периметра,
защитной системы, которая будет лочить
компьютер при удалении пользователя с
телефоном на определенное расстояние от
него. Возьмем для примера скрипт из Gentoo
Wiki
и дистрибутив SuSE и реализуем такую
систему.

Прежде всего необходимо наладить связь
между компьютером и телефоном через Bluetooth.
Возможны варианты, в зависимости от модели
телефона, но в целом это выглядит так.
Открываем YaST и идем Hardware->Bluetooth:

Открываем окно конфигурации:

Необходимо убедиться, что сервер включен,
и задать PIN-коды для связи с телефоном, имя
устройства. Если все настроено правильно,
то связь между телефоном и компьютером
заработает — в телефоне просканируйте
эфир и найдите свой компьютер, попробуйте
зайти в него, при запросе PIN-а введите пароль
из конфигурации.

Следующим шагом вам надо получить MAC-адрес
вашего телефона. Найти его можно в /var/lib/bluetooth.
Там будет директория (или несколько, если вы
устанавливали связь с несколькими
устройствами), которая в шестнадцатеричной
форме и будет представлять собой MAC-адрес
телефона. Например 00:14:41:0D:2E:6D. В такой
директории хранится файл с именем
устройства и определенным MAC-адресом.

Покончив со связью устройств, сделаем
нужные изменения в системе (для этого
понадобятся root-права). Заходим в терминал и
выполняем:

chmod +s /usr/bin/hcitool
chmod +s /usr/bin/l2ping

Это позволит всем пользователям
запускать эти программы.

Последний шаг — создаем скрипт, который
будет связанно обрабатывать это все. В нашем случае
мы используем SLED 10 с дефолтовой установкой
GNOME, но вы можете задать произвольные
команды, которые будут выполнять
необходимые лично вам действия. У Bluetooth-связи есть возможность определять
удаленность объекта, так что зададим
действия, которые будут совершаться при
выходе телефона за периметр и обратном его
появлении в нем. Начнем с такого скрипта:

#!/bin/bash
#set -o verbose sh -v
# Copied from Steven on http://gentoo-wiki.com/Talk:TIP_Bluetooth_Proximity_Monitor

# These are the sections you'll need to edit

# You'll need to use the MAC address of your phone here
DEVICE="00:0F:46:FF:05:07"

# How often to check the distance between phone and computer in seconds
CHECK_INTERVAL=2

# The RSSI threshold at which a phone is considered far or near
THRESHOLD=-13

# The command to run when your phone gets too far away
FAR_CMD='/opt/gnome/bin/gnome-screensaver-command --activate'

# The command to run when your phone is close again
NEAR_CMD='/opt/gnome/bin/gnome-screensaver-command --poke'

HCITOOL="/usr/bin/hcitool"
STARTX_PID=0
DEBUG="/tmp/btproximity.log"

connected=0

function msg {
echo "$1" #>> "$DEBUG"
}

function check_connection {
connected=0;
found=0
for s in `$HCITOOL con`; do
if [[ "$s" == "$DEVICE" ]]; then
found=1;
fi
done
if [[ $found == 1 ]]; then
connected=1;
else
msg 'Attempting connection...'
if [ -z "`$HCITOOL cc $DEVICE 2>&1`" ]; then
msg 'Connected.'
connected=1;
else
if [ -z "`l2ping -c 2 $DEVICE 2>&1`" ]; then
if [ -z "`$HCITOOL cc $DEVICE 2>&1`" ]; then
msg 'Connected.'
connected=1;
else
msg "ERROR: Could not connect to device $DEVICE."
connected=0;
fi
fi
fi
fi
}

check_connection

while [[ $connected -eq 0 ]]; do
check_connection
sleep 3
done

name=`$HCITOOL name $DEVICE`
msg "Monitoring proximity of \"$name\" [$DEVICE]";

state="near"
while /bin/true; do

check_connection

if [[ $connected -eq 1 ]]; then
rssi=$($HCITOOL rssi $DEVICE | sed -e 's/RSSI return value: //g')

if [[ $rssi -le $THRESHOLD ]]; then
if [[ "$state" == "near" ]]; then
msg "*** Device \"$name\" [$DEVICE] has left proximity"
state="far"
$FAR_CMD > /dev/null 2>&1
fi
else
if [[ "$state" == "far" && $rssi -ge $[$THRESHOLD+2] ]]; then
msg "*** Device \"$name\" [$DEVICE] is within proximity"
state="near"
$NEAR_CMD > /dev/null 2>&1
STARTX_PID=$(pgrep startx)
fi
fi
msg "state = $state, RSSI = $rssi"
fi

sleep $CHECK_INTERVAL
done

В нем необходимо заменить
значение DEVICE на MAC-адрес телефона.

Возможно, вы захотите
попробовать другие команды при удалении и
приближении. Например, если вы хотите, чтобы
скринсейвер GNOME деактивировался при
приближении оператора, а не показывал
запрос пароля, то надо сделать так:

NEAR_CMD=’/opt/gnome/bin/gnome-screensaver-command ?deactivate’

Если вы используете xscreensaver:

FAR_CMD=’/usr/bin/xscreensaver-command -lock’ NEAR_CMD=’/usr/bin/xscreensaver-command
-deactivate’

Существует масса возможностей
контролировать ваш компьютер при помощи
настроенного периметра безопасности, и дело
тут только за вашей фантазией.

Сохранив срипт, надо сделать его
исполняемым. Мы сохраним его в ~/bin/proximity.sh, но
вы можете использовать произвольное место
в системе. Записав программу, можно
попробовать запустить ее и протестировать
работу:

username@host:~> chmod +x ~/bin/proximity.sh
username@host:~> ~/bin/proximity.sh
Monitoring proximity of «BlackBerry 8100» [00:0F:46:FF:05:07]
state = near, RSSI = -5
state = near, RSSI = -4
state = near, RSSI = -4
state = near, RSSI = -4

Возможно, понадобится тонкая настройка
параметров связи (например, пункта THRESHOLD),
но если все заработало, то у вас уже есть
свой периметр безопасности, который будет
давать компьютеру указания при вашем
присутствии или отсутствии.

Оставить мнение

Check Also

Хакер ищет авторов. Читатель? Хакер? Программист? Безопасник? Мы тебе рады!

Восемнадцать лет мы делаем лучшее во всем русскоязычном пространстве издание по IT и инфор…