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

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el ttwitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Comunicaciones
| |-+  Dispositivos Móviles (PDA's, Smartphones, Tablets)
| | |-+  Hacking Mobile
| | | |-+  .: TALLER DE PROGRAMACIÓN en BLUEZ :.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: .: TALLER DE PROGRAMACIÓN en BLUEZ :.  (Leído 7,229 veces)
Gospel
Ex-Staff
*
Desconectado Desconectado

Mensajes: 1.587


Ver Perfil WWW
.: TALLER DE PROGRAMACIÓN en BLUEZ :.
« en: 6 Diciembre 2005, 02:22 am »

Taller orientado al desarrollo de programas relacionados con la Seguridad en Bluetooth en Linux.

Se necesita tener instalados los siguientes paquetes Bluez (a ser posible, las últimas versiones):
- bluez-utils
- bluez-libs
- bluez-libs-devel


« Última modificación: 25 Julio 2007, 14:35 pm por Gospel » En línea

Gospel
Ex-Staff
*
Desconectado Desconectado

Mensajes: 1.587


Ver Perfil WWW
Re: .: TALLER DE PROGRAMACIÓN BLUETOOTH :.
« Respuesta #1 en: 6 Diciembre 2005, 02:30 am »

Programa 1 - Resolver el nombre de un dispostivo Bluetooth a partir de su dirección MAC.

Código:
#include <stdio.h>
#include <stdlib.h>
#include <bluetooth/bluetooth.h>
#include <bluetooth/hci.h>
#include <bluetooth/hci_lib.h>

int main (int argc, char **argv)
{
      bdaddr_t bdaddr; //Estructura bdaddr_t para almacenar la direccion MAC
      char MAC_dev[20]; //Direccion MAC del dispositivo
      char nombre_dev[248]; //Nombre del dispositivo
      int id_dev; //Identificador del adaptador Bluetooth local
      int socket; //Socket HCI

      if(argc < 2)
      {
            printf("Sintaxis: %s <direccion MAC>\n",argv[0]);
            exit(1);
      }

      printf("+ BlueResolver por Gospel [elblogdegospel.blogspot.com]\n\n");
     
      strncpy(MAC_dev,argv[1],20);

      printf("Detectando nombre del dispositivo <%s>...\n",MAC_dev);

      //Convertimos la dirección MAC al formato de estructura bdaddr_t
      baswap(&bdaddr, strtoba(MAC_dev));
                     
      //Obtenemos el identificador del adaptador local Bluetooth
      id_dev = hci_get_route(&bdaddr);
      if (id_dev < 0)
      {
            printf("[!] Error. Dispositivo Bluetooth local no disponible.\n");
            exit(1);
      }
                     
      //Abrimos un socket local HCI
      socket = hci_open_dev(id_dev);
      if (socket < 0)
      {
            printf("[!] Error. Fallo al intentar abrir socket HCI.\n");
            exit(1);
      }
           
      //Obtenemos el nombre de la dirección MAC remota
      int timeout = 10000;
      if (hci_read_remote_name(socket,&bdaddr,sizeof(nombre_dev), nombre_dev, timeout) == 0)
      {
            printf("Dispositivo encontrado:\n\tMAC: %s\n\tNombre: %s\n",MAC_dev,nombre_dev);
      }
      else
      {
            printf("[!] Error. No se ha podido resolver el nombre del dispositivo.\n");
            printf("Dispositivo encontrado:\n\tMAC: %s\n\tNombre: [Desconocido]\n",MAC_dev);
      }
       
      close(socket);

      return(0);
}


« Última modificación: 8 Diciembre 2005, 20:33 pm por Gospel » En línea

Gospel
Ex-Staff
*
Desconectado Desconectado

Mensajes: 1.587


Ver Perfil WWW
Re: .: TALLER DE PROGRAMACIÓN BLUETOOTH :.
« Respuesta #2 en: 8 Diciembre 2005, 20:52 pm »

Programa 2 - Escanear y detectar dispositivos Bluetooth cercanos

Código:
#include <stdio.h>
#include <stdlib.h>
#include <bluetooth/bluetooth.h>
#include <bluetooth/hci.h>
#include <bluetooth/hci_lib.h>

int main ()
{
      inquiry_info *ii = NULL; //Almacena la lista de dispositivos detectados durante el inquiry
      int max_rsp, num_rsp; //Numero de respuestas/dispositivos detectados
      int dev_id; //Identificador del adaptador Bluetooth local
      int socket; //Socket HCI;
      int len, i;

      char MAC_dev[20]; //Direccion MAC del dispositivo detectado
      char nombre_dev[248]; //Nombre del dispositivo detectado

      printf("+ BlueScanner por Gospel [elblogdegospel.blogspot.com]\n");
      printf("+ src: people.csail.mit.edu/albert/bluez-intro/c401.html\n\n");

      //Obtenemos el identificador del adaptador local Bluetooth
      dev_id = hci_get_route(NULL);
      if (dev_id < 0)
      {
            printf("[!] Error. Dispositivo Bluetooth local no disponible.\n");
            exit(1);
      }
                     
      //Abrimos un socket local HCI
      socket = hci_open_dev(dev_id);
      if (socket < 0)
      {
            printf("[!] Error. Fallo al intentar abrir socket HCI.\n");
            exit(1);
      }

      //Inicializamos algunas variables
      len = 8; //El tiempo de inquiry por dispositivo es de 1.28x8=10.24 secs/dispositivo
      max_rsp = 255; //Se pueden detectar a lo sumo 255 dispositivos

      //Creamos la lista de dispositivos detectados con hci_inquiry
      ii = (inquiry_info*)malloc(max_rsp * sizeof(inquiry_info));

      printf("Detectando dispositivos...\n\n");

      //hci_inquiry lleva a cabo un descubrimiento de dispositivos Bluetooth y devuelve una lista de
      //dispositivos detectados en inquiry_info ii para ser almacenados.
      //La bandera IREQ_CACHE_FLUSH permite que la caché sea limpiada antes de buscar nuevos dispositivos.
      //En otro caso, podrian aparecer dispositivos anteriormente detectados pero ahora fuera de rango.
      num_rsp = hci_inquiry(dev_id, len, max_rsp, NULL, &ii, IREQ_CACHE_FLUSH);
      if(num_rsp < 0)
            printf("[!] Error. Fallo al intentar hci_inquiry.\n");

      //Para cada una de las respuestas obtenidas durante el inquiry obtenemos el nombre del dispositivo
      for(i=0;i<num_rsp;i++)
      {
            ba2str(&(ii+i)->bdaddr, MAC_dev);
            memset(nombre_dev, 0, sizeof(nombre_dev));
            if(hci_read_remote_name(socket, &(ii+i)->bdaddr, sizeof(nombre_dev), nombre_dev, 0) < 0)
                  strcpy(nombre_dev, "[Desconocido]");

            printf("Dispositivo (%d) encontrado:\n\tMAC: %s\n\tNombre: %s\n\n", i+1, MAC_dev, nombre_dev);
      }
     
      free(ii);

      close(socket);

      return(0);

}
« Última modificación: 8 Diciembre 2005, 20:57 pm por Gospel » 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