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


 


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  como emparejar dispositivos bluetooth?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: como emparejar dispositivos bluetooth?  (Leído 4,705 veces)
Belial & Grimoire


Desconectado Desconectado

Mensajes: 548


Tea_Madhatter


Ver Perfil
como emparejar dispositivos bluetooth?
« en: 7 Marzo 2009, 03:03 »

hola

estoy programando una aplicacion para bluetooth en linux, hasta ahorita ya aprendi como buscar dispositivos y como conectarme por ejemplo a mi celular, pero no encuentro como emparejar el bluetooth de mi compu con el bluetooth de mi celular ya que mi cel necesita PIN.

Estuve leyendo que para eso se necesita Kinit y kab y tambien lei un poco del codigo abierto de hcitool y al parecer se necesita usar hci_authenticate_link, pero no entiendo komo hacer lo del algoritmo E1 E22.etc..

alguien sabe como emparejar los dispositivos bluetooth?  :huh:

salu2  ;D


En línea

.                                 
EvilGoblin


Desconectado Desconectado

Mensajes: 2.323


YO NO LA VOTE!


Ver Perfil
Re: como emparejar dispositivos bluetooth?
« Respuesta #1 en: 7 Marzo 2009, 04:24 »

la autentificacion es simplemente una contraseña q envia el dispositivo al cual quieres emparejarte y tu debes saberla  y creo q se envian una especie de SID el cual se usa en la conexion (como una conexion segura) .. busca sobre bluez es un proyecto abierto y esta bastante avanzado ahora


En línea

Experimental Serial Lain [Linux User]
Belial & Grimoire


Desconectado Desconectado

Mensajes: 548


Tea_Madhatter


Ver Perfil
Re: como emparejar dispositivos bluetooth?
« Respuesta #2 en: 8 Marzo 2009, 19:51 »

hola

estaba leyendo el codigo de bluez y encontre esto, a ver si me pueden ayudar, esto es lo que yo entendi, pero si alguien me puede corregir o decirme si estoy bien o mal, se lo agradeceria.

lo que necesito es emparejar los dispositivos de bluetooth

Código:
static void pincode_cb(struct agent *agent, DBusError *err, const char *pincode,
struct btd_device *device)

/*PRIMERO ESTA FUNCION LE PIDE LA CONRASEÑA AL CELULAR */
{
struct btd_adapter *adapter = device_get_adapter(device);
pin_code_reply_cp pr;
bdaddr_t sba, dba;
size_t len;
int dev;
uint16_t dev_id = adapter_get_dev_id(adapter);

dev = hci_open_dev(dev_id);
if (dev < 0) {
error("hci_open_dev(%d): %s (%d)", dev_id,
strerror(errno), errno);
return;
}

adapter_get_address(adapter, &sba);
device_get_address(device, &dba);

if (err) {
hci_send_cmd(dev, OGF_LINK_CTL,
OCF_PIN_CODE_NEG_REPLY, 6, &dba);
goto done;
}

len = strlen(pincode);

set_pin_length(&sba, len);

memset(&pr, 0, sizeof(pr));
bacpy(&pr.bdaddr, &dba);
memcpy(pr.pin_code, pincode, len);
pr.pin_len = len;
hci_send_cmd(dev, OGF_LINK_CTL, OCF_PIN_CODE_REPLY,
PIN_CODE_REPLY_CP_SIZE, &pr);

done:
hci_close_dev(dev);
}
/*DESPUES ESTA FUNCION PRIMERO SE FIJA SI EL DISPOSITIVO YA ESTA EMPAREJADO Y SI NO LO ESTA RECIBE EL PIN DEL MOVIL*/
int hcid_dbus_request_pin(int dev, bdaddr_t *sba, struct hci_conn_info *ci)
{
struct btd_adapter *adapter;
struct btd_device *device;

if (!get_adapter_and_device(sba, &ci->bdaddr, &adapter, &device, TRUE))
return -ENODEV;

/* Check if the adapter is not pairable and if there isn't a bonding in
* progress */
if (!adapter_is_pairable(adapter) && !device_is_bonding(device, NULL))
return -EPERM;

return device_request_authentication(device, AUTH_TYPE_PINCODE, 0,
pincode_cb);
}
/*ESTA FUNCION LE PIDE AL CEULARL que CONFIRME LOS DATOS que LE ENVIARA
LA COMPU O EN OTRAS PALABRAS LA CONTRASEÑA*/

static void confirm_cb(struct agent *agent, DBusError *err, void *user_data)
{
struct btd_device *device = user_data;
struct btd_adapter *adapter = device_get_adapter(device);
user_confirm_reply_cp cp;
int dd;
uint16_t dev_id = adapter_get_dev_id(adapter);

dd = hci_open_dev(dev_id);
if (dd < 0) {
error("Unable to open hci%d", dev_id);
return;
}

memset(&cp, 0, sizeof(cp));
device_get_address(device, &cp.bdaddr);

if (err)
hci_send_cmd(dd, OGF_LINK_CTL, OCF_USER_CONFIRM_NEG_REPLY,
USER_CONFIRM_REPLY_CP_SIZE, &cp);
else
hci_send_cmd(dd, OGF_LINK_CTL, OCF_USER_CONFIRM_REPLY,
USER_CONFIRM_REPLY_CP_SIZE, &cp);

hci_close_dev(dd);
}

/*Y ESTA FUNCION MANDA LA CONTRASEÑA AL MOVIL PARA que EL CELULAR LO COMPARE Y LA ACEPTE*/
static void passkey_cb(struct agent *agent, DBusError *err, uint32_t passkey,
void *user_data)
{
struct btd_device *device = user_data;
struct btd_adapter *adapter = device_get_adapter(device);
user_passkey_reply_cp cp;
bdaddr_t dba;
int dd;
uint16_t dev_id = adapter_get_dev_id(adapter);

dd = hci_open_dev(dev_id);
if (dd < 0) {
error("Unable to open hci%d", dev_id);
return;
}

device_get_address(device, &dba);

memset(&cp, 0, sizeof(cp));
bacpy(&cp.bdaddr, &dba);
cp.passkey = passkey;

if (err)
hci_send_cmd(dd, OGF_LINK_CTL,
OCF_USER_PASSKEY_NEG_REPLY, 6, &dba);
else
hci_send_cmd(dd, OGF_LINK_CTL, OCF_USER_PASSKEY_REPLY,
USER_PASSKEY_REPLY_CP_SIZE, &cp);

hci_close_dev(dd);
}

alguien me podria decir si estoy bien o mal porfavor?

salu2  ;D
En línea

.                                 
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Emparejar dispositivos Bluetooth
Redes
raulsm35 2 953 Último mensaje 30 Junio 2012, 20:56
por ccrunch
Powered by SMF 1.1.19 | SMF © 2006-2008, Simple Machines