Мобильные юниксы vol. 3 Anton Karpov Хакер, номер #071, стр. 071-098-2 # devd $devd_enable=YES Пропишем в /etc/devd.conf следующее: attach 10 { device-name "ubt[0-9]+"; action "/etc/rc.bluetooth start $device-name"; }; detach 10 { device-name "ubt[0-9]+"; action "/etc/rc.bluetooth stop $device-name"; }; Спариваем устройства После того как ты воткнул BT-адаптер в USB-слот и включил Bluetooth на мобиле, уже можно попробовать обнаружить девайс, используя утилиту hccontrol(8): # hccontrol -n ubt0hci inquiry Inquiry result, num_responses=1 Inquiry result #0 BD_ADDR: 00:01:e2:3f:с5:9a Page Scan Rep. Mode: 0x1 Page Scan Period Mode: 00 Page Scan Mode: 00 Class: 72:02:04 Clock offset: 0x105c Inquiry complete. Status: No error [00] Мы увидели нашу мобилу, идентифицировав ее BD_ADDR. Но устройства еще не сконнекчены. Можно провести аналогию с Wi-Fi, когда точка доступа (AP) обнаружена и идентифицирована по ее SSID, но пользоваться услугами Сети мы пока не можем, т.к. необходимо авторизовать себя по WEP-ключу. К авторизации я и перехожу, но советую тебе предварительно почитать man hccontrol - утилита весьма функциональная. По стандарту Bluetooth перед сеансом связи стороны могут аутентифицировать себя PIN-кодом (строчка из 16-ти символов максимум) или ключом (32 символа) для предоставления того или иного сервиса. Обе стороны обязаны знать этот код, на основе которого генерируется сеансовый ключ. Это не ключ шифрования, как можно было подумать, а просто квитанция, подтверждающая, что стороны уже аутентифицированы и могут устанавливать новые сеансы связи без запроса PIN-кода. И если мобила сама попросит тебя ввести PIN, то во FreeBSD за это отвечает демон hcsecd(8). Формат конфига /etc/bluetooth/hcsecd.conf состоит из секций device {}, внутри которых нужно прописать BD_ADDR и PIN (или ключ) для идентификации и авторизации удаленного устройства. Формат записи для одного девайса (а нам больше и не надо) таков: device { bdaddr 00:01:e2:3f:с5:9a; # BD_ADDR девайса (мобилы) name "PockeToxa"; # имя девайса, исключительно для красоты key nokey; # ключ, nokey - ключ не используется pin "123456"; # пин-код, nopin - PIN не используется } В этом же конфиге можно также иметь и дефолтную запись. В случае если ни одна не подойдет, неизвестное устройство будет считаться авторизованным без PIN-кода или ключа, если оно, конечно, соответствующим образом сконфигурировано. Насколько это безопасно - суди сам. device { bdaddr 00:00:00:00:00:00; name "Default entry"; key nokey; pin nopin; } Далее запускаем демон безо всяких параметров: # hcsecd В принципе, сконнектить телефон с ноутбуком можно уже сейчас. В ответ на ввод корректного PIN-кода (того, что прописан в hcsecd.conf) с мобилы в логах должны появиться следующие строчки: Got PIN_Code_Request, Found matching entry, Sending PIN_Code_Reply, Got Link_Key_Notification, Updating link key for the entry. Девайсы сконнектились, но нам нужны полезные функции, например, заливка картинок и Java-мидлетов на мобилу, использование трубки как модема для доступа в интернет через GPRS и т.д. |