Archive for the ‘ Uncategorized ’ Category

ez430-Chrono BlueRobin reverse engineering

this is a quick-wrote draft, it will be reviewed

Hello
here is just a little tutorial to give you some idea for reverse engineer and hack your next gadget

today i would like to know how the blueRobin chest strap can communicate with the ez430-chrono

the software delivered with the watch contain a « BlueRobin emulator »

the software only launch when the CC1111 dongle is plugged – ok, no problem

the dongle is seen as /dev/ttyACM0 and is configured at 115200 baud

let’s assume we have 2 dongles CP2102 providing usb serial port /dev/ttyUSB0 and /dev/ttyUSB1

and they are connected together like this

gnd ---- gnd
RX  <--- TX
TX  ---> RX

close the software, unplug the CC1111 dongle.

plug the 2 dongle CP2102 (FTDI dongles  will certainly work too)

create a fake ttyACM0 symbolicaly linked to /dev/ttyUSB0

sudo ln -s /dev/ttyUSB0 /dev/ttyACM0

set the speed of both dongle:

sudo stty -F /dev/ttyUSB0 speed 115200
sudo stty -F /dev/ttyUSB1 speed 115200

in a terminal be ready to read the output of ttyUSB1 = what the software send to ttyACM0

cat /dev/ttyUSB1 | xxd -p

the probleme here is that xxd only write the line to the terminal when it get a full line, so we can use the option « -c 10 » or even « -c 1 » to reduce the line, but it would be hardly readable.

I prefered send a bunch of zeros from another terminal whit this command:

echo 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | xxd -p -r  > /dev/ttyUSB0

so this technic help me to cut the communication in several sentence

In Fine, I get this : ( I add some comment while i capture to remind me what the « sentence » means)

mathieu@confusion:~$ cat /dev/ttyUSB1 | xxd -p
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000ff01030aff00
04000aff0004000aff0004000aff0004000aff0004000aff0004000aff00
04000aff0004000aff0004000aff0004000a000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
init ^^^ control center launch
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000ff030798ffff000aff02030aff0504280aff
0a060000000aff0504290aff0a060000000aff05042a0aff0a060000000a
ff05042b0aff0a060000000aff05042c0aff0a060000000aff05042d0aff
06030aff0a060000000a0000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
start, sweep from 40 to 45 bpm, then stop
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
00000000ff030798ffff000aff02030aff05042d0aff0a060a00000aff05
042d0aff0a061401000aff05042d0aff0a061e02000aff05042d0aff0a06
3205000aff05042d0aff0a063c07000aff05042d0aff0a06500a000aff05
042d0aff0a065a0e000aff06030a00000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
start, sweep from 1 to 10 km/h, then stop
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
0000000000000000ff030798ffff000aff02030aff05042d0aff0a06110f
000aff05042d0aff0a062110000aff05042d0aff0a063112000aff05042d
0aff0a065116000aff05042d0aff0a06611a000aff05042d0aff0a06811f
000aff05042d0aff0a069125000aff06030a000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
start, sweep from 1 to 10 mph, the stop
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
TX ID: 1677711
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000ff07030aff31160380000007
d90101061e0000000000000000000aff0004000a00000000000000000000
000000000000000000000000000000000000000000000000000000000000
0000000000000000ff31160381020307d90101061e000000000000000000
0a0000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000ff31160381020307d90706
061e0028000500000000000a000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
ff3116070000000000000000000000000000000000000aff09030a000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
^^^ here i try to set the time : 01:02:03 AM, 4°C, 5m Alt...

Ok, I Hope this little tuto will help you

I think that the more useful command in this tuto is « xxd » : it can translate octet-stream to readable string and make the inverse operation with the « -r » option.

And now a litle script to watch the cpu load of your computer directly on your watch :

#! /bin/sh

stty -F /dev/ttyACM0 speed 115200

# send the initialisation frame
echo "ff0307beffff000aff02030a" | xxd -r -p>  /dev/ttyACM0

sleep 1

while true
do  
    BPMDec=`cat /proc/loadavg | sed 's/\(.\)[.]\(..\).*/\1\2/g'`
    BPMHex=`printf "%02s" $(echo "ibase=10;obase=16;$BPMDec" | bc) | tr ' ' '0'`

    data=ff0504`echo $BPMHex`0aff0a060af3010a

    echo $data | xxd -r -p>  /dev/ttyACM0
    sleep 1

done

# send the termination frame -- never used since there is a "while true" before
echo "ff06030a" | xxd -r -p>  /dev/ttyACM0

exit 0
Publicités

Authentification SSH par clé privé/clé publique

Authentification SSH par clé privé/clé publique

l’authentification par clé necessite 2 clés :
la clé publique et la clé privé. Ces deux clé sont complémantaires
– la clé publique : ~/.ssh/id_dsa.pub
elle devra etre ajoutee sur le serveur dans le fichier ~/.ssh/authorized_keys2 du user utilisé pour la connexion
sur des vieilles versions de ssh ou des OS moins standard, il est possible qu’il s’agisse de :
~/.ssh/authorized_keys
~/.ssh2/authorized_keys2
– la clé privé : ~/.ssh/id_dsa
elle devra rester sur la machine cliente et être bien protégée (quiconque l’aura pourra s’authentifier sur le serveur)
1 ) si il n’y a pas de clés ou que la clé publique a été retirée, créer de nouvelles clés
attention: vous risquez d’ecraser une clé privé existante et ainsi d’empecher la connexion
a un serveur ayant la clé publique correspondante.
#  ssh-keygen -t dsa -P ""
ici on crée des clés de type dsa , avec un mot de passe vide (si on met un mot de passe, il sera demandé à chaque connexion en plus de l’échange de clé)
( # keygen -h pour connaitre toutes les possibilités )
les fichiers suivants sont créés :
~/.ssh/id_dsa
~/.ssh/id_dsa.pub
2 ) ajouter la clé publique d’un client à un serveur
allers sur le client, dans le répertoire ~/.ssh/ du user à utiliser pour la connexion.
copier la clé publique sur le serveur :
# scp id_dsa.pub <user>@<serveur>:.ssh/
vous connecter sur le serveur :
# ssh <user>@<serveur>
(le mot de passe est demandé)
ajouter la clé publique du client dans les clé authorisées du serveur :
# cat .ssh/id_dsa.pub >> .ssh/authorized_keys2
supprimer ce fichier, maintenant inutile
# rm -f .ssh/id_dsa.pub
très important !  si ce n’est pas fait, regler les droits du fichier authorized_keys2, sinon ssh refuse la connexion.
# chmod 600 .ssh/authorized_keys2
vous déconnecter
# exit
vérification :
reconnectez vous au serveur :
# ssh <user>@<serveur>
(cette fois, le mot de passe n’est plus demandé)
Troubleshouting
un mot de passe est toujours demandé :
– si vous avez utilisé une clé existante, celle si a peut-etre un mot de passe, essayez de le retirer avec « ssh-keygen -p »
– verifiez les droits des fichiers présents dans .ssh
– l’authentification par clé a elle été désactivée ? voir dans /etc/ssh/sshd_config du serveur et dans /etc/ssh/ssh_config du client.
pour plus d’info : ajouter l’option « -v » ou « -vv »
se connecter avec PuTTY ?
le format des clé est différent pour le client Putty. utiliser C:\Program Files\PuTTY\puttygen.exe pour convertir la clé (conversion>import key, puis « save private key »)
ensuite dans putty, spécifier la clé sauvegardée dans Connection>SSH>Auth> »Private key file for authentification »
un bon article :

Reminder for myself

the next post i plan :
-a gps logger
-a voltage regulator for mountig the t5510 in a car
-some Processing sketchs
-…