mardi 25 mars 2008

Connexion en bluetooth d'un téléphone Nokia 6280

Je connecte régulièrement non téléphone portable Nokia 6820 avec mon pc sous linux via un câble USB. J'ai voulu faire de même avec l'asus eee. J'arrive à monter le téléphone comme un disque externe USB , je navigue sans problème dans les répertoires . Mais dès que je demande à transférer un fichier (photo) de mon téléphone vers l'asus , la copie commence puis 'gèle' . Les autres périphériques en USB fonctionnent normalement. (Est ce un problème de vitesse ou de version de l'USB ?) .

Ne renonçant pas à connecter mon téléphone sur l'asus , j'ai essayé le mode 'bluetooth' . En effet j'ai piqué à mon fils un dongle USB/bluetooth qui marche parfaitement sous windows.

1 )Premiers essais (ou émois) en bluetooth .
Je démarre le service bluetooth par /etc/init.d/bluetooth start
réponse :
home/user> /etc/init.d/bluetooth start
Starting bluetooth: hcid sdpd sdp_options rfcomm.


J'insère le dongle , qui reste éteint .
Je lance la la commande :
hcidconfig
/home/user> hciconfig
hci0: Type: USB
BD Address: 00:00:00:00:00:00 ACL MTU: 0:0 SCO MTU: 0:0
DOWN
RX bytes:0 acl:0 sco:0 events:0 errors:0
TX bytes:0 acl:0 sco:0 commands:0 errors:0

L'interface est down , je la passe à UP par

hcidconfig hci0 up
Miracle , le voyant de la clé clignote !

Je lance la découverte blutooth de mon téléphone et j'obtiens :

CRC-bc4

Je tente une connexion , le téléphone me demande un code PIN , je rentre '0000' . Le téléphone n'arrive pas à valider ce code PIN .

J'essaye une manœuvre symétrique sur l'asus en tapant :

hcitool scan
/home/user> hcitool scan
Scanning ...
00:1A:16:34:AB:F5 Germanlinux

l'asus voie mon téléphone .
Je continue par
/home/user> l2ping 00:1A:16:34:AB:F5
Ping: 00:1A:16:34:AB:F5 from 00:1B:1D:10:37:DD (data size 44) ...
0 bytes from 00:1A:16:34:AB:F5 id 0 time 15.87ms
0 bytes from 00:1A:16:34:AB:F5 id 1 time 26.50ms
2 sent, 2 received, 0% loss

la commande l2ping réalise des pings sur la couche L2t .
Les pings fonctionnent
Je tente de 'binder' mon téléphone par la commande

rfcomm -i hci0 bind 0 00:1A:16:34:AB:F5 1

Cette commande crée un l'entrée dans /dev/rfcomm0
je tente ensuite de monter mon téléphone par la commande :
p3nfsd -series60 -tty /dev/rfcomm0 -dir /media/bluetooth/

Mon téléphone me demande le code PIN protégeant la connexion , et là pareil , pas moyen de rentrer un code valide.

2)Les fichiers de configuration
Les différentes doc sur Internet indiquent la présence de trois fichiers de configuration dans le répertoire /etc/bluetooth . sous xandros , je n'en trouve que deux :
/etc/bluetooth/hci.conf
/etc/rfcomm.conf

Le fichier hci.conf contient une ligne particulière :

passkey "0000";

C'est normalement le code PIN à entrer pour autoriser la connexion . Le fichier manquant est /etc/bluetooth/pin
qui peut contenir lui aussi le code PIN ( la chaine '0000').
En fait le daemon hcid sous xandros ne tient pas compte de ces informations . Pour obtenir quelque chose qui marche
Je lance le service dbus
(/etc:init.d/dbus start)

Puis j'active le service hcid de la manière suivante :

hcid -n -f /etc/bluetooth/hcid.conf

l'option 'n' permet de ne pas placer le daemon en tache de fond .
En ressayant la connexion à partir du téléphone , je vois arriver sur la console les demandes de code PIN et cette fois ci le téléphone autorise les connexions de l'asus .
Il faut- noter au passage que le nom de la connexion à changée de CRC-bc4 à asus-nnnnnn
Par contre si je veux aller plus loin dans la connexion avec le téléphone , j'obtiens un message d'erreur (pas de connexion bluetooth) .

3)Le protocole OBEX

Finalement la solution vient par l'utilisation du protocole OBEX .

Je procède de la manière suivante :
Lancement de dbus
Lancement de hcid (à la main)
bind de mon asus et de mon téléphone par :

rfcomm -i hci0 bind 0 00:1A:16:34:AB:F5 1
puis je lance la commande de mon client OBEX (obexftp)

obexftp -b -l /

pour lister le contenu du réperoire racine

et
obexftp -b -c /Eric/Photos/ -g Photo576.jpg

pour copier le fichier Photo576.jpg du répertoire /Eric/Photos/ de mon téléphone vers le répertoire courant de mon pc .

Et là ça marche !!


Conclusion
J'arrive à présent à faire diaéloguer mon téléphone avec l'asus.
Il me reste à automatiser les opérations. En lisant la doc , il semble possible de s'introduire sur les téléphones portables en exploitant les failles de sécurité.

Aucun commentaire: