Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - hanx

#1
Código (cpp) [Seleccionar]

#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; //No 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
                                                                   
//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 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, ya que 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\t\tNombre: %s\n\n",i+1, MAC_dev, nombre_dev);   
}

    free(ii);
    close(socket);
    return(0);
}
#2
Programación C/C++ / Scanner en gnu/linux
8 Enero 2011, 01:39 AM

#include <stdio.h>

#include <string>

using namespace std;

#include "PracticalSocket.h"



int main(int argc, char **argv)

{

char help[]="\n usage: address start end\n";

char temp[255];

string ip;

int start;

int end;

int i=0;

TCPSocket *tcs;

switch(argc)

{

case 4:

//argv[1] ip to scan, argv[2] is the start port, argv[3] is the end port

ip=argv[1];

start=atoi(argv[2]);

end=atoi(argv[3]);

for(i=start;i<=end;i++)

{

try

{

sprintf(temp,"testing %i\n",i);

fputs(temp,stdout);

tcs = new TCPSocket;

//try and connect to the port...if connection fails an exception is thrown

tcs->connect(ip,i);

sprintf(temp,"open port at %i\n",i);

fputs(temp,stdout);

//if we succeeded in connecting to a port

delete tcs;

}

catch(SocketException ex)

{

continue;//run a continue to scan the next port

}

}

break;

default:

printf(help);

break;

}

return 0;

}