elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Scanner un dispositivo bluetooth
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Scanner un dispositivo bluetooth  (Leído 2,563 veces)
hanx

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Scanner un dispositivo bluetooth
« en: 9 Enero 2011, 02:07 am »

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #include <bluetooth/bluetooth.h>
  5. #include <bluetooth/hci.h>
  6. #include <bluetooth/hci_lib.h>
  7.  
  8. int main ()
  9. {
  10. inquiry_info *ii = NULL; //Almacena la lista de dispositivos detectados durante el inquiry
  11. int max_rsp, num_rsp; //No de respuestas/dispositivos detectados
  12. int dev_id; //Identificador del adaptador Bluetooth local
  13. int socket; //Socket HCI;
  14. int len, i;
  15. char MAC_dev[20]; //Direccion MAC del dispositivo detectado
  16. char nombre_dev[248]; //Nombre del dispositivo detectado
  17.  
  18. //Obtenemos el identificador del adaptador local Bluetooth
  19. dev_id = hci_get_route(NULL);
  20. if (dev_id < 0)
  21.   {
  22.       printf("Error. Dispositivo Bluetooth local no disponible.\n");
  23.       exit(1);
  24.   }
  25.  
  26.   //Abrimos un socket local HCI
  27.   socket = hci_open_dev(dev_id);
  28.  
  29.   if (socket < 0)
  30.   {
  31.       printf("Error. Fallo al intentar abrir socket HCI.\n");
  32.       exit(1);
  33.   }
  34.  
  35.   //Inicializamos algunas variables
  36.   len = 8; //El tiempo de inquiry es de 1.28x8=10.24 secs/dispositivo
  37.   max_rsp = 255; //Se pueden detectar a lo sumo 255 dispositivos
  38.  
  39.   //Creamos la lista de dispositivos detectados con hci_inquiry
  40.   ii = (inquiry_info*)malloc(max_rsp * sizeof(inquiry_info));
  41.   printf("Detectando dispositivos...\n\n");
  42.  
  43.   //hci_inquiry lleva a cabo un descubrimiento de dispositivos
  44.   //Bluetooth y devuelve una lista de dispositivos detectados en
  45.   //inquiry_info ii para ser almacenados.
  46.   //
  47.   //La bandera IREQ_CACHE_FLUSH permite que la caché sea limpiada
  48.   //antes de buscar nuevos dispositivos, ya que podrian aparecer
  49.   //dispositivos anteriormente detectados pero ahora fuera de rango.
  50. num_rsp = hci_inquiry(dev_id, len, max_rsp, NULL, &ii, IREQ_CACHE_FLUSH);
  51.  
  52.   if(num_rsp < 0)
  53.       printf("Error. Fallo al intentar hci_inquiry.\n");
  54.  
  55.   //Para cada una de las respuestas obtenidas durante el inquiry
  56.   //obtenemos el nombre del dispositivo
  57.   for(i=0; i<num_rsp; i++)
  58.   {
  59.         ba2str(&(ii+i)->bdaddr, MAC_dev);
  60.         memset(nombre_dev, 0, sizeof(nombre_dev));
  61.  
  62.         if(hci_read_remote_name(socket,&(ii+i)->bdaddr,sizeof(nombre_dev), nombre_dev, 0) < 0)
  63.         {
  64.             strcpy(nombre_dev, "[Desconocido]");
  65.         }
  66.  
  67.     printf("Dispositivo (%d) encontrado:\n\tMAC: %s\t\tNombre: %s\n\n",i+1, MAC_dev, nombre_dev);  
  68. }
  69.  
  70.   free(ii);
  71.   close(socket);
  72.   return(0);
  73. }
  74.  


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines