Хакерский синезуб User anonymous Хакер, номер #094, стр. 094-130-3 int r = rand(); if (j) printf("-"); printf("%0x", r & 0xff); При генерации MAC-адреса подобным методом надо учитывать, что разные производители мобильных телефонов имеют индивидуальные первые 3 байта МАК-адреса, так что при генерации чисел необходимо прибавить те самые кусочки, чтобы идея сработала. Если тебе интересно узнать, у каких производителей какие адреса, — посмотри на врезку. Теперь с помощью функции BluetoothAuthenticateDevice обращаемся на указанный адрес устройства и коннектимся к нему, не забыв при этом указать пароль: BluetoothAuthenticateDevice(NULL, &hRadio, &pbtri, //цепляемся к BLUETOOTH_DEVICE_INFO passKey, //непосредственно PIN-код ); Взлом PIN’a Если хорошо изучить всю документацию по использованию Bluetooth-протокола, то можно выделить 2 метода взлома PIN-кода. Сейчас мы их рассмотрим и выберем ту технологию перебора, которая будет подходить для нас. Отойдя от темы, скажу, что все обозначение имен, функций и идентификаторов буду приводить те же, что и в оригинальной документации. Так что не поленись, прочти оригинальную спецификацию на эту тему. 1. В самом начале сеанса простым текстом пересылается параметр IN_RAND, который при помощи определенных навыков вполне может быть украден. Точно так же пересылается и параметр AU_RAND. Если отловить эту информацию, то уже возможно вычислить используемый для связи PIN-код! Совершенно ясно, что сделать это на куске папируса невозможно, а значит, ответ прост: получить доступ к этим секретным данным можно обычным перебором PIN’а. Таким образом, с определенной вероятностью можно восстановить используемый при соединении PIN-код. Однако такие действия требуют времени. Это довольно ресурсоемкая задача. Но если вспомнить, что любой нормальный человек при использовании bluetooth не указывает PIN’ы длиннее шести символов (а некоторые вообще его не используют), то можно с уверенностью сказать, что за секунд тридцать (Notebook: 2.6 MHz, 512 Mb RAM) компьютер с такой задачей справится. 2. Иногда можно перебирать PIN и без всяких лишних раздумываний. Например, если есть желание воспользоваться чужой bluetooth-гарнитурой, то подобрать к ней PIN будет очень просто. Все дело в том, что у таких устройств обычно статичный PIN. Устройство самостоятельно реагирует на попытки подключиться к нему из-за возможности вести прямой перебор этого ключа. Но существует маленькая загвоздка: если аутентификация не удалась, то гарнитура не отвечает некоторое время на повторные запросы от этого же устройства. Так вот, ничто на самом деле не мешает каждую попытку проводить от имени нового устройства, просто меняя BD_ADDR. По мне, лучше уж описать второй метод (заодно и повеселишься). Генерируем PIN-код и высылаем его в поток: double* x=new double[N],w = 0,e = 6; randset(); for(int i=0;i<N;i++){ x[i]=randpro(w,e); cont <<x[i]<<endl;} //а теперь высылаем полученное число //отсылаем пароль, если получено приглашение int bytesSent; int bytesRecv = SOCKET_ERROR; char sendbuf[32] = x[i]; char recvbuf[32] = ""; |