Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #94, ОКТЯБРЬ 2006 г.

Хакерский синезуб

User anonymous

Хакер, номер #094, стр. 094-130-2


GUID serviceClassId;

ULONG port;

} SOCKADDR_BTH,

*PSOCKADDR_BTH;

Самое главное в этом коде то, что BTH_ADDR - структура, которая определяет имя Bluetooth-устройства и возвращает его в SOCKADDR_BTH.

Для получения более подробного теоретического материала смотри документацию Socket Windows в платформе SDK, а также не забудь про Bluetooth API.

Ну-с, приступим!

Кое-что важное мы уже знаем, поэтому действовать будем по утвержденному плану. А именно:

1. Обнаружение устройств;

2. Выбор устройства;

3. Установление соединения с выбранным устройством;

4. Авторизация на выбранном устройстве;

5. Передача сообщения;

6. Дисконнект.

Для начала сделаем каркас нашего приложения, а потом будем модернизировать его по своему вкусу.

Любая, даже самая вшивая сетевая программа не обойдется без подобной инициализации:

// Инициализация WinSock

WSADATA wsd; //Код откомментировать надо

WORD wVersionRequested;

wVersionRequested= MAKEWORD(2,2);

if (WSAStartup(Version,&wsd)!=0)

{

printf("WSAStartup error\n");

return 1;

};

Этот код должен знать любой программист. Вышеописанные строки определяют структуру WSADATA и версию, через которую мы будем прогонять все данные. Теперь вставим несколько функций, уже относящихся к самому Bluetooth-программированию.

Если ты хочешь передать какую-либо информацию, необходимо, чтобы компьютер опознал передатчик и устройство, с которым требуется соединиться. Уж как хочешь, а без Bluetooth-устройства, установленного на компьютере, программа работать не будет! Код до безобразия простой: инициализируем стандартные функции по нахождению устройства, и если таковое найдено, то используем функцию BLUETOOTH_RADIO_INFO для того, чтобы узнать об удаленном устройстве всю общедоступную информацию.

// Поиск первого Bluetooth-устройства, установленного на компьютере

HANDLE hRadio;

BLUETOOTH_RADIO_INFO pbtri;

BLUETOOTH_FIND_RADIO_PARAMS btfrp;

HBLUETOOTH_RADIO_FIND hFind;

BLUETOOTH_RADIO_INFO RadioInfo= {0};

btfrp.dwSize = sizeof(btfrp);

// Определяем параметр поиска

hFind = BluetoothFindFirstRadio(&btfrp,&hRadio);

// Что, если?

if (hFind != 0) {

printf("Устройство найдено\n");

} else {

printf("Устройства нет\n");

return 1;

};

Можно сказать, что безобидная часть нашей программы готова. Теперь приступаем к решительным действиям.

Обнаружение невидимок

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

Суть этого режима заключается в том, что на широковещательные запросы устройство не подает голоса. Однако если обратиться к устройству по адресу, то оно начнет действовать! Поэтому для начала составим программку, которая будет последовательно перебирать адреса и обращаться к каждому, пока тот не откликнется. Для начала надо сделать генерацию МАК-адреса:

// главная функция генерации MAK

Назад на стр. 094-130-1  Содержание  Вперед на стр. 094-130-3