Pentest
Bus Pirate
Christophe Villeneuve
@hellosct1
@hellosct1@mamot.fr
DevCon #12 – le 16 Dec. 2021
Atos open source - afup – lemug.fr – mariadb – drupal – mozilla - firefox – lemugfr - sumo – webextensions – VR – AR – XR - Cause commune 93.1 FM - TechSpeaker - Lizard - eyrolles – editions eni – programmez – linux pratique – webriver – elephpant - CommonVoice – Sécurité -
Cybersécurité
Christophe Villeneuve
●
Consultant Open Source
●
Dresseur animaux
@hellosct1
Aujourd’hui
●
Présentation
●
Que fait-on avec ?
●
Et… Alternatives
@hellosct1 – Programmez #10 -
●
Présentation
●
Que fait-on avec ?
●
Alternatives
@hellosct1
Qu’est ce ? Le bus pirate
●
Multi-outil
– open source
– Open Hardware
●
But
– Tester qui parle aux appareils électroniques.
●
Nombreuses fonctionnalités
– Vérifier la sécurité d’un nouveau produit
●
Interface de terminal simple
– Disponible sur Linux et Windows
@hellosct1
Le bus pirate
●
Outil
– Proposé par Dangerous prototypes
– Développé par Ian Lesnet.
●
Permet le dialogue entre un PC et une cible
1-wire, 2-wire, 3-wire, UART, I2C, SPI, et HD44780
●
Permet de fournir des alimentations 5V ou 3.3V
●
Lire des tensions (0-6V)
●
Générer un PWM
●
Mesurer des fréquences jusqu’à 40MHz
●
Activer des résistances de pull-up…
Un compagnon idéal
de l’ingénieur en
phase de
prototypage ou du
hacker.
@hellosct1
La carte peut faire
●
Protocoles de base avec le firmware officiel :
– 1-Wire
– I2C
– SPI
– Asynchronous serial
– MIDI
– HD44780 LCD
– 2 et 3-wire
– mode "raw binary" sur les modes
●
bitbang, 1-Wire, I2C, SPI, et UART
@hellosct1
Idée
●
Besoin de dialoguer
– Avec un nouveau composant
– De sniffer un réseau I2C
●
Interface USB-série
– Permet d’envoyer des commandes depuis un PC
●
via un simple terminal (type PuTTY ou terminal)
– Les commandes reçues seront analysées syntaxiquement
(parsing) par le logiciel du bus pirate
●
Et traduites en instructions machines (opcodes)
●
Afin de programmer les périphériques concernés
– timers, I/O, ADC, …
●
Transparents pour l’utilisateur
@hellosct1
Prise en main
●
Pour pouvoir
commencer
A utiliser le bus pirate
●
Il faut le relier
– Port USB
●
à l’aide d’un câble
mini USB type B mâle
/ USB type A mâle.
●
Sur Windows :
– Télécharger un driver
FTDI et un émulateur
de terminal.
– Prise en main du bus
pirate sur Windows.
●
Sur Linux :
– pas besoin
●
De driver FTDI
●
Emulateur de terminal
@hellosct1
En pratique
●
Voir le tampon des messages du noyau.
$ dmesg | tail
[243117.786653] usb 1-3: Product: FT232R USB UART
[243117.786658] usb 1-3: Manufacturer: FTDI
[243117.786662] usb 1-3: SerialNumber: A906H8YA
[243117.898706] usbcore: registered new interface driver usbserial_generic
[243117.898717] usbserial: USB Serial support registered for generic
[243117.909313] usbcore: registered new interface driver ftdi_sio
[243117.909327] usbserial: USB Serial support registered for FTDI USB Serial Device
[243117.909376] ftdi_sio 1-3:1.0: FTDI USB Serial Device converter detected
[243117.909411] usb 1-3: Detected FT232RL
[243117.909985] usb 1-3: FTDI USB Serial Device converter now attached to ttyUSB0
@hellosct1
Flashrom (1/2)
●
Utilitaire pour
– Identifier
– Lire
– Ecrire
– Vérifier
– Effacer les puces
flash.
●
Conçu pour flasher les
images BIOS
– EFI
– Coreboot
– Firmware
– optionROM
●
sur
– Les cartes mères,
– Les cartes de contrôleur
réseau/graphique/stockage
@hellosct1
Flashrom (2/2)
●
Prend en charge plus
– 476 puces flash,
– 291 chipsets
– 500 cartes mères,
– 79 périphériques PCI
– 17 périphériques USB
@hellosct1
Modem terminal
●
Tapez :
$ sudo minicom -b 115200 -D /dev/ttyUSB0
@hellosct1
Comment l’utilisé ?
●
Pour discuter avec un module
●
Faire une analyse de signaux
●
Faire du « Reverse engineering » sur une carte
inconnu
Ce qui faut savoir :
« bus pirate » est bootloadé
Possible
Mettre à jour
Changer de firmware, etc …
via le port usb
sans aucun autre matériel.
@hellosct1 – Programmez #10 -
●
Présentation
●
Que fait-on avec ?
●
Alternatives
@hellosct1
Matériels
●
Firmware officiel
– Fonctionnalités de base
●
Ce dont vous aurez besoin :
– une carte « bus pirate »
●
de préférence la v4
– un câble « bus pirate probe » de seeedstudio
– un câble mini usb
@hellosct1
Le cable
@hellosct1
Les raccourcis clavier
@hellosct1
Matériels
●
un lecteur de carte
RFID série de
parallax
●
un tag RFID
compatible avec le
lecteur ci dessus
➢
UART
➢
I2C
➢
SPI
➢
LCD
➢
Analogique (ADC)
@hellosct1
Session 2
●
Pour la partie I2C :
– un module RTC
(horloge)
de sparkfun
➢
I2C
➢
UART
➢
SPI
➢
LCD
➢
Analogique (ADC)
@hellosct1
Session 3
●
Pour la partie SPI :
●
Serial Peripheral Interface
●
Modèle 74HC595
●
Composé
– 8 leds
– 8 résistances de
330ohms
➢
SPI
➢
UART
➢
I2C
➢
LCD
➢
Analogique (ADC)
@hellosct1
Session 4
●
Pour la partie LCD
– un adaptateur lcd
●
« bus pirate »
de seeedstudio
– un écran lcd 2×16
➢
LCD
➢
UART
➢
I2C
➢
SPI
➢
Analogique (ADC)
@hellosct1
Session 5
●
Pour la partie analogique
– un potentiomètre
– un joystick
➢
Analogique (ADC)
➢
UART
➢
I2C
➢
SPI
➢
LCD
@hellosct1
Mode UART
●
Un lecteur RFID
●
Fonctionne en 2400 bauds
●
Câblage notre lecteur RFID
– lecteur RFID -> Bus pirate
– SOUT -> MISO
– ENABLE -> AUX
– VCC -> +5v
– GND -> GND
@hellosct1
Tester si le connecteur est ouvert ?
HiZ>m
1. HiZ
2. 1-WIRE
3. UART
4. I2C
5. SPI
6. 2WIRE
7. 3WIRE
8. LCD
9. DIO
x. exit(without change)
(1)>3
Set serial port speed: (bps)
1. 300
2. 1200
3. 2400
4. 4800
5. 9600
6. 19200
7. 38400
8. 57600
9. 115200
10. BRG raw value
(1)>3 (2400 bauds)
Data bits and parity:
1. 8, NONE *default
2. 8, EVEN
3. 8, ODD
4. 9, NONE
(1)>1
Stop bits:
1. 1 *default
2. 2
(1)>1
Receive polarity:
1. Idle 1 *default
2. Idle 0
(1)>1
Select output type:
1. Open drain
(H=Hi-Z, L=GND)
2. Normal (H=3.3V,
L=GND)
(1)>1
Ready
UART>
●
Connexion : Hiz
@hellosct1
Tester si le connecteur est ouvert ?
●
Résultat :
– La led « mode » est allumé
→ Câblage notre lecteur RFID… Succès
@hellosct1
Etape 2 : Allumer notre bus pirate
●
Commande « W »
●
La led « vreg » doit s’allumer
– Le circuit en cours de test est alimenté
Le lecteur RFID est allumé
La led est verte
mode sleep
@hellosct1
Etape 3
●
Pour utiliser le lecteur RFID
– Sleep → ON
●
Placer la broche AUX à l’état BAS.
Le lecteur RFID est
désormais prêt à être
utilisé
@hellosct1
Récupérer les octets du tag lecteur RFID
●
Test 1
r:10
→ Lire 10 octets
UART>r:10
READ: -f 0x00 FAILED, NO DATA0x00 FAILED, NO DATA0x00 FAILED, NO
DATA0x00 FAILED, NO DATA0x00 FAILED, NO DATA0x00 FAILED, NO DATA0x00
FAILED, NO DATA0x00 FAILED, NO DATA0x00 FAILED, NO DATA0x00
UART>
→ Probléme
Nous ne savons pas quand le lecteur RFID envoie quelque chose,
→ Obligation :
Placer le bus pirate en mode lecture continu pour avoir un affichage en continu des données reçu.
@hellosct1
Récupérer les octets du Tag lecteur RFID
●
Test N°2
(2)
UART>(2)
Raw UART input
Any key to exit
Le mode lecture continu est en marche
Les octets correspondant à l’identifiant du tag RFID
2600D6F1A8
@hellosct1
Arrêt Mode lecture
●
w
●
m
●
HiZ>m
1. HiZ
2. 1-WIRE
3. UART
4. I2C
5. SPI
6. 2WIRE
7. 3WIRE
8. LCD
9. DIO
x. exit(without change)
@hellosct1
Mode Analogique (ADC)
●
Un Joystick
●
Alimenté en 0/5v le bus pirate
●
Câblage :
– joystick -> bus pirate
– GND -> GND
– VCC -> +5v
– VERT -> ADC
@hellosct1
Tester si le connecteur est ouvert ? (1/2)
HiZ>m
1. HiZ
2. 1-WIRE
3. UART
4. I2C
5. SPI
6. 2WIRE
7. 3WIRE
8. LCD
9. DIO
x. exit(without change)
(1)>9 (mode DIO)
Ready
DIO>
DIO>W
Power supplies ON
DIO>
●
Connexion : Dio
Pour allumer :
@hellosct1
Pour mesurer une tension (1/
●
Plusieurs options :
– d
●
pour faire une mesure seul
– v
●
pour afficher les tensions global de la carte bus pirate
en faisant une mesure
– D
●
pour passer en mode voltmètre.
@hellosct1
DIO>d
VOLTAGE
PROBE: 2.06V
DIO>v
Pinstates:
1.(BR) 2.(RD) 3.(OR) 4.(YW) 5.(GN) 6.(BL) 7.
(PU) 8.(GR) 9.(WT) 0.(Blk)
GND 3.3V 5.0V ADC VPU AUX CLK MOSI CS
MISO
P P P I I I I I I I
GND 3.32V 5.02V 2.06V 0.00V H H H H H
DIO>D
VOLTMETER MODE
Any key to exit
VOLTAGE PROBE: 2.06V
@hellosct1
Retour au menu
●
w
●
m
●
HiZ>m
1. HiZ
2. 1-WIRE
3. UART
4. I2C
5. SPI
6. 2WIRE
7. 3WIRE
8. LCD
9. DIO
x. exit(without change)
@hellosct1
Mode I2C
●
module RTC (real time clock)
– Ex DS1307
●
On connaît le datasheet mais pas son adresse I2C
●
Câblage :
– DS1307 -> bus pirate
– GND -> GND
– 5V -> +5V
– SDA -> MOSI
– SCL -> CLK
@hellosct1
Trouver l’heure actuelle stocké dans le module RTC
HiZ>m
1. HiZ
2. 1-WIRE
3. UART
4. I2C
5. SPI
6. 2WIRE
7. 3WIRE
8. LCD
9. DIO
x. exit(without change)
(1)>4
Set speed:
1. ~5KHz
2. ~50KHz
3. ~100KHz
4. ~400KHz
(1)>3
Ready
I2C>W
Power supplies ON
I2C>(0)
0.Macro menu
1.7bit address search
2.I2C sniffer
I2C>
●
Connexion : Hiz
@hellosct1
Trouver l’heure actuelle stocké dans le module RTC
2C>W
Power supplies ON
I2C>P
Pull-up resistors ON
I2C>v
Pinstates:
1.(BR) 2.(RD) 3.(OR) 4.(YW) 5.(GN) 6.(BL)
7.(PU) 8.(GR) 9.(WT) 0.(Blk)
GND 3.3V 5.0V ADC VPU AUX SCL SDA - -
P P P I I I I I I I
GND 3.32V 5.02V 0.00V 5.03V L H H H H
I2C>
Mise sous tension « vpu »
I2C>(1)
Searching I2C address space.
Found devices at:
0xD0(0x68 W) 0xD1(0x68 R)
I2C>
module RTC
trouvé
@hellosct1
●
Mémoire du DS1307
@hellosct1
●
Pour demander l’heure, plusieurs étapes :
– Envoyé 0 à l’adresse 0xD0
– puis demander 8 octets à l’adresse 0xD1
●
C’est à dire
– [
– ]
– r:8
bit de start
bit de stop
demande de 8 octets
@hellosct1
Au niveau du code
I2C>[0xd0 0 [0xd1 r:8]
I2C START BIT
WRITE: 0xD0 ACK
WRITE: 0x00 ACK
I2C START BIT
WRITE: 0xD1 ACK
READ: 0x28 ACK 0x47 ACK 0x14 ACK
0x02 ACK 0x25 ACK 0x10 ACK 0x11 ACK 0x00
NACK
I2C STOP BIT
I2C>
envoyé un bit de start
pour dire aux périphériques du bus I2C
J’envoie ensuite à 0xD0 l’octet 0
puis sans fermé la communication
Je renvois un bit de start
pour demander à 0xD1
cette fois si 8 octets
une fois les huits octets recu
je coupe la communication
@hellosct1
Résultat
0x28 – 28 secondes
0x47 – 47 minutes
0x14 – 14 heures
0x02 – 2 (mardi)
0x25 – 25 (jours)
0x10 – 10 (octobre)
0x11 – 2020 (années)
E n français
Le mardi 25 octobre 2020
et il est 14 heures, 47 minutes, 28 secondes.
@hellosct1
Retour au menu
●
w
●
m
●
HiZ>m
1. HiZ
2. 1-WIRE
3. UART
4. I2C
5. SPI
6. 2WIRE
7. 3WIRE
8. LCD
9. DIO
x. exit(without change)
@hellosct1
Mode SPI
●
CI 74HC595 qui est un registre à décalage 8 bits
– Chaque sortie une led, soit un total de 8 led
– Valeur transmise sous la forme d’un octet via le bus SPI
●
Câblage :
– 74HC595 -> bus pirate
– DS -> MOSI
– ST_CP -> CS
– SH_CP -> TCK
– GND -> GND
– VCC -> +5v
– OE -> GND
– MR -> +5v
Chaque led est cablé ainsi : IO -> led -> résistance (330ohms) -> GND
@hellosct1
Tester si le connecteur est ouvert ? (1/2)
HiZ>m
1. HiZ
2. 1-WIRE
3. UART
4. I2C
5. SPI
6. 2WIRE
7. 3WIRE
8. LCD
9. DIO
x. exit(without change)
(1)>7
Set speed:
1. ~5KHz
2. ~50KHz
3. ~100KHz
4. ~400KHz
(1)>1
CS:
1. CS
2. /CS *default
(2)>2
Select output type:
1. Open drain
(H=Hi-Z, L=GND)
2. Normal (H=3.3V,
L=GND)
(1)>2
Ready
3WIRE>
●
Connexion : Hiz
@hellosct1
3WIRE>W
Power supplies ON
3WIRE>[
/CS ENABLED
3WIRE>0][
WRITE: 0x00
/CS DISABLED
/CS ENABLED
3WIRE>255][
WRITE: 0xFF
/CS DISABLED
/CS ENABLED
3WIRE>
Comment ça marche ?
* On allume l’alimentation avec « W »
A partir de là le 74HC595 est alimenté.
* On exécute la commande « [ »
pour mettre CS à LOW,
se qui active le 74HC595
qui attend alors un octet.
* On envoi nos données sous la forme d’un
octet.
* Puis on dit au 74HC595
de placer ses sorties
selon l’octet qu’on vient de lui envoyer
* Plaçant CS à HIGH puis à LOW
* On dit au 74HC595 que l’envoi est terminé
* Selon ce qu’on lui a demandé
puis avec le second « [ »
on lui dit d’attendre le prochain octet
@hellosct1
Mode LCD
●
Un écran LCD
●
brancher le câble sur l’adaptateur LCD
– l’autre bout au bus pirate
●
Câblage
– N/A
@hellosct1
Tester si le connecteur est ouvert ? (1/2)
HiZ>m
1. HiZ
2. 1-WIRE
3. UART
4. I2C
5. SPI
6. 2WIRE
7. 3WIRE
8. LCD
9. DIO
x. exit(without change)
(1)>8
This mode requires an
adapter
Ready
LCD>W
Power supplies ON
●
Connexion : Hiz
@hellosct1
LCD>(0)
0.Macro menu
1.LCD Reset
2.Init LCD
3.Clear LCD
4.Cursor position ex:(4) 0
6.Write test numbers ex:(6) 80
7.Write test characters ex:(7) 80
LCD>(1)
RESET
LCD>(2)
RESET
Display lines:
1. 1
2. Multiple
(2)>2
INIT
LCD>(3)
CLEAR
LCD>"Hello World !"
WRITE: "Hello World !"
LCD>
@hellosct1 – Programmez #10 -
●
Présentation
●
Que fait-on avec ?
●
Bonus
@hellosct1
Alternatif
Ds projets de firmware alternatif on vu le jour,
●
programmateur de fpga,
●
d’avr,
●
analyseur logique
●
mini oscilloscope
●
module jtag
@hellosct1
En voir plus
@hellosct1 – Programmez #10 -
Atos Recrute
●
CDI
●
Stage
●
Alternance
●
...
@hellosct1
Merci
Christophe Villeneuve
@hellosct1
@hellosct1@mamot.fr

Pentest bus pirate

  • 1.
  • 2.
    Atos open source- afup – lemug.fr – mariadb – drupal – mozilla - firefox – lemugfr - sumo – webextensions – VR – AR – XR - Cause commune 93.1 FM - TechSpeaker - Lizard - eyrolles – editions eni – programmez – linux pratique – webriver – elephpant - CommonVoice – Sécurité - Cybersécurité Christophe Villeneuve ● Consultant Open Source ● Dresseur animaux
  • 3.
  • 4.
    @hellosct1 – Programmez#10 - ● Présentation ● Que fait-on avec ? ● Alternatives
  • 5.
    @hellosct1 Qu’est ce ? Lebus pirate ● Multi-outil – open source – Open Hardware ● But – Tester qui parle aux appareils électroniques. ● Nombreuses fonctionnalités – Vérifier la sécurité d’un nouveau produit ● Interface de terminal simple – Disponible sur Linux et Windows
  • 6.
    @hellosct1 Le bus pirate ● Outil –Proposé par Dangerous prototypes – Développé par Ian Lesnet. ● Permet le dialogue entre un PC et une cible 1-wire, 2-wire, 3-wire, UART, I2C, SPI, et HD44780 ● Permet de fournir des alimentations 5V ou 3.3V ● Lire des tensions (0-6V) ● Générer un PWM ● Mesurer des fréquences jusqu’à 40MHz ● Activer des résistances de pull-up… Un compagnon idéal de l’ingénieur en phase de prototypage ou du hacker.
  • 7.
    @hellosct1 La carte peutfaire ● Protocoles de base avec le firmware officiel : – 1-Wire – I2C – SPI – Asynchronous serial – MIDI – HD44780 LCD – 2 et 3-wire – mode "raw binary" sur les modes ● bitbang, 1-Wire, I2C, SPI, et UART
  • 8.
    @hellosct1 Idée ● Besoin de dialoguer –Avec un nouveau composant – De sniffer un réseau I2C ● Interface USB-série – Permet d’envoyer des commandes depuis un PC ● via un simple terminal (type PuTTY ou terminal) – Les commandes reçues seront analysées syntaxiquement (parsing) par le logiciel du bus pirate ● Et traduites en instructions machines (opcodes) ● Afin de programmer les périphériques concernés – timers, I/O, ADC, … ● Transparents pour l’utilisateur
  • 9.
    @hellosct1 Prise en main ● Pourpouvoir commencer A utiliser le bus pirate ● Il faut le relier – Port USB ● à l’aide d’un câble mini USB type B mâle / USB type A mâle. ● Sur Windows : – Télécharger un driver FTDI et un émulateur de terminal. – Prise en main du bus pirate sur Windows. ● Sur Linux : – pas besoin ● De driver FTDI ● Emulateur de terminal
  • 10.
    @hellosct1 En pratique ● Voir letampon des messages du noyau. $ dmesg | tail [243117.786653] usb 1-3: Product: FT232R USB UART [243117.786658] usb 1-3: Manufacturer: FTDI [243117.786662] usb 1-3: SerialNumber: A906H8YA [243117.898706] usbcore: registered new interface driver usbserial_generic [243117.898717] usbserial: USB Serial support registered for generic [243117.909313] usbcore: registered new interface driver ftdi_sio [243117.909327] usbserial: USB Serial support registered for FTDI USB Serial Device [243117.909376] ftdi_sio 1-3:1.0: FTDI USB Serial Device converter detected [243117.909411] usb 1-3: Detected FT232RL [243117.909985] usb 1-3: FTDI USB Serial Device converter now attached to ttyUSB0
  • 11.
    @hellosct1 Flashrom (1/2) ● Utilitaire pour –Identifier – Lire – Ecrire – Vérifier – Effacer les puces flash. ● Conçu pour flasher les images BIOS – EFI – Coreboot – Firmware – optionROM ● sur – Les cartes mères, – Les cartes de contrôleur réseau/graphique/stockage
  • 12.
    @hellosct1 Flashrom (2/2) ● Prend encharge plus – 476 puces flash, – 291 chipsets – 500 cartes mères, – 79 périphériques PCI – 17 périphériques USB
  • 13.
    @hellosct1 Modem terminal ● Tapez : $ sudominicom -b 115200 -D /dev/ttyUSB0
  • 14.
    @hellosct1 Comment l’utilisé ? ● Pour discuteravec un module ● Faire une analyse de signaux ● Faire du « Reverse engineering » sur une carte inconnu Ce qui faut savoir : « bus pirate » est bootloadé Possible Mettre à jour Changer de firmware, etc … via le port usb sans aucun autre matériel.
  • 15.
    @hellosct1 – Programmez#10 - ● Présentation ● Que fait-on avec ? ● Alternatives
  • 16.
    @hellosct1 Matériels ● Firmware officiel – Fonctionnalitésde base ● Ce dont vous aurez besoin : – une carte « bus pirate » ● de préférence la v4 – un câble « bus pirate probe » de seeedstudio – un câble mini usb
  • 17.
  • 18.
  • 19.
    @hellosct1 Matériels ● un lecteur decarte RFID série de parallax ● un tag RFID compatible avec le lecteur ci dessus ➢ UART ➢ I2C ➢ SPI ➢ LCD ➢ Analogique (ADC)
  • 20.
    @hellosct1 Session 2 ● Pour lapartie I2C : – un module RTC (horloge) de sparkfun ➢ I2C ➢ UART ➢ SPI ➢ LCD ➢ Analogique (ADC)
  • 21.
    @hellosct1 Session 3 ● Pour lapartie SPI : ● Serial Peripheral Interface ● Modèle 74HC595 ● Composé – 8 leds – 8 résistances de 330ohms ➢ SPI ➢ UART ➢ I2C ➢ LCD ➢ Analogique (ADC)
  • 22.
    @hellosct1 Session 4 ● Pour lapartie LCD – un adaptateur lcd ● « bus pirate » de seeedstudio – un écran lcd 2×16 ➢ LCD ➢ UART ➢ I2C ➢ SPI ➢ Analogique (ADC)
  • 23.
    @hellosct1 Session 5 ● Pour lapartie analogique – un potentiomètre – un joystick ➢ Analogique (ADC) ➢ UART ➢ I2C ➢ SPI ➢ LCD
  • 24.
    @hellosct1 Mode UART ● Un lecteurRFID ● Fonctionne en 2400 bauds ● Câblage notre lecteur RFID – lecteur RFID -> Bus pirate – SOUT -> MISO – ENABLE -> AUX – VCC -> +5v – GND -> GND
  • 25.
    @hellosct1 Tester si leconnecteur est ouvert ? HiZ>m 1. HiZ 2. 1-WIRE 3. UART 4. I2C 5. SPI 6. 2WIRE 7. 3WIRE 8. LCD 9. DIO x. exit(without change) (1)>3 Set serial port speed: (bps) 1. 300 2. 1200 3. 2400 4. 4800 5. 9600 6. 19200 7. 38400 8. 57600 9. 115200 10. BRG raw value (1)>3 (2400 bauds) Data bits and parity: 1. 8, NONE *default 2. 8, EVEN 3. 8, ODD 4. 9, NONE (1)>1 Stop bits: 1. 1 *default 2. 2 (1)>1 Receive polarity: 1. Idle 1 *default 2. Idle 0 (1)>1 Select output type: 1. Open drain (H=Hi-Z, L=GND) 2. Normal (H=3.3V, L=GND) (1)>1 Ready UART> ● Connexion : Hiz
  • 26.
    @hellosct1 Tester si leconnecteur est ouvert ? ● Résultat : – La led « mode » est allumé → Câblage notre lecteur RFID… Succès
  • 27.
    @hellosct1 Etape 2 :Allumer notre bus pirate ● Commande « W » ● La led « vreg » doit s’allumer – Le circuit en cours de test est alimenté Le lecteur RFID est allumé La led est verte mode sleep
  • 28.
    @hellosct1 Etape 3 ● Pour utiliserle lecteur RFID – Sleep → ON ● Placer la broche AUX à l’état BAS. Le lecteur RFID est désormais prêt à être utilisé
  • 29.
    @hellosct1 Récupérer les octetsdu tag lecteur RFID ● Test 1 r:10 → Lire 10 octets UART>r:10 READ: -f 0x00 FAILED, NO DATA0x00 FAILED, NO DATA0x00 FAILED, NO DATA0x00 FAILED, NO DATA0x00 FAILED, NO DATA0x00 FAILED, NO DATA0x00 FAILED, NO DATA0x00 FAILED, NO DATA0x00 FAILED, NO DATA0x00 UART> → Probléme Nous ne savons pas quand le lecteur RFID envoie quelque chose, → Obligation : Placer le bus pirate en mode lecture continu pour avoir un affichage en continu des données reçu.
  • 30.
    @hellosct1 Récupérer les octetsdu Tag lecteur RFID ● Test N°2 (2) UART>(2) Raw UART input Any key to exit Le mode lecture continu est en marche Les octets correspondant à l’identifiant du tag RFID 2600D6F1A8
  • 31.
    @hellosct1 Arrêt Mode lecture ● w ● m ● HiZ>m 1.HiZ 2. 1-WIRE 3. UART 4. I2C 5. SPI 6. 2WIRE 7. 3WIRE 8. LCD 9. DIO x. exit(without change)
  • 32.
    @hellosct1 Mode Analogique (ADC) ● UnJoystick ● Alimenté en 0/5v le bus pirate ● Câblage : – joystick -> bus pirate – GND -> GND – VCC -> +5v – VERT -> ADC
  • 33.
    @hellosct1 Tester si leconnecteur est ouvert ? (1/2) HiZ>m 1. HiZ 2. 1-WIRE 3. UART 4. I2C 5. SPI 6. 2WIRE 7. 3WIRE 8. LCD 9. DIO x. exit(without change) (1)>9 (mode DIO) Ready DIO> DIO>W Power supplies ON DIO> ● Connexion : Dio Pour allumer :
  • 34.
    @hellosct1 Pour mesurer unetension (1/ ● Plusieurs options : – d ● pour faire une mesure seul – v ● pour afficher les tensions global de la carte bus pirate en faisant une mesure – D ● pour passer en mode voltmètre.
  • 35.
    @hellosct1 DIO>d VOLTAGE PROBE: 2.06V DIO>v Pinstates: 1.(BR) 2.(RD)3.(OR) 4.(YW) 5.(GN) 6.(BL) 7. (PU) 8.(GR) 9.(WT) 0.(Blk) GND 3.3V 5.0V ADC VPU AUX CLK MOSI CS MISO P P P I I I I I I I GND 3.32V 5.02V 2.06V 0.00V H H H H H DIO>D VOLTMETER MODE Any key to exit VOLTAGE PROBE: 2.06V
  • 36.
    @hellosct1 Retour au menu ● w ● m ● HiZ>m 1.HiZ 2. 1-WIRE 3. UART 4. I2C 5. SPI 6. 2WIRE 7. 3WIRE 8. LCD 9. DIO x. exit(without change)
  • 37.
    @hellosct1 Mode I2C ● module RTC(real time clock) – Ex DS1307 ● On connaît le datasheet mais pas son adresse I2C ● Câblage : – DS1307 -> bus pirate – GND -> GND – 5V -> +5V – SDA -> MOSI – SCL -> CLK
  • 38.
    @hellosct1 Trouver l’heure actuellestocké dans le module RTC HiZ>m 1. HiZ 2. 1-WIRE 3. UART 4. I2C 5. SPI 6. 2WIRE 7. 3WIRE 8. LCD 9. DIO x. exit(without change) (1)>4 Set speed: 1. ~5KHz 2. ~50KHz 3. ~100KHz 4. ~400KHz (1)>3 Ready I2C>W Power supplies ON I2C>(0) 0.Macro menu 1.7bit address search 2.I2C sniffer I2C> ● Connexion : Hiz
  • 39.
    @hellosct1 Trouver l’heure actuellestocké dans le module RTC 2C>W Power supplies ON I2C>P Pull-up resistors ON I2C>v Pinstates: 1.(BR) 2.(RD) 3.(OR) 4.(YW) 5.(GN) 6.(BL) 7.(PU) 8.(GR) 9.(WT) 0.(Blk) GND 3.3V 5.0V ADC VPU AUX SCL SDA - - P P P I I I I I I I GND 3.32V 5.02V 0.00V 5.03V L H H H H I2C> Mise sous tension « vpu » I2C>(1) Searching I2C address space. Found devices at: 0xD0(0x68 W) 0xD1(0x68 R) I2C> module RTC trouvé
  • 40.
  • 41.
    @hellosct1 ● Pour demander l’heure,plusieurs étapes : – Envoyé 0 à l’adresse 0xD0 – puis demander 8 octets à l’adresse 0xD1 ● C’est à dire – [ – ] – r:8 bit de start bit de stop demande de 8 octets
  • 42.
    @hellosct1 Au niveau ducode I2C>[0xd0 0 [0xd1 r:8] I2C START BIT WRITE: 0xD0 ACK WRITE: 0x00 ACK I2C START BIT WRITE: 0xD1 ACK READ: 0x28 ACK 0x47 ACK 0x14 ACK 0x02 ACK 0x25 ACK 0x10 ACK 0x11 ACK 0x00 NACK I2C STOP BIT I2C> envoyé un bit de start pour dire aux périphériques du bus I2C J’envoie ensuite à 0xD0 l’octet 0 puis sans fermé la communication Je renvois un bit de start pour demander à 0xD1 cette fois si 8 octets une fois les huits octets recu je coupe la communication
  • 43.
    @hellosct1 Résultat 0x28 – 28secondes 0x47 – 47 minutes 0x14 – 14 heures 0x02 – 2 (mardi) 0x25 – 25 (jours) 0x10 – 10 (octobre) 0x11 – 2020 (années) E n français Le mardi 25 octobre 2020 et il est 14 heures, 47 minutes, 28 secondes.
  • 44.
    @hellosct1 Retour au menu ● w ● m ● HiZ>m 1.HiZ 2. 1-WIRE 3. UART 4. I2C 5. SPI 6. 2WIRE 7. 3WIRE 8. LCD 9. DIO x. exit(without change)
  • 45.
    @hellosct1 Mode SPI ● CI 74HC595qui est un registre à décalage 8 bits – Chaque sortie une led, soit un total de 8 led – Valeur transmise sous la forme d’un octet via le bus SPI ● Câblage : – 74HC595 -> bus pirate – DS -> MOSI – ST_CP -> CS – SH_CP -> TCK – GND -> GND – VCC -> +5v – OE -> GND – MR -> +5v Chaque led est cablé ainsi : IO -> led -> résistance (330ohms) -> GND
  • 46.
    @hellosct1 Tester si leconnecteur est ouvert ? (1/2) HiZ>m 1. HiZ 2. 1-WIRE 3. UART 4. I2C 5. SPI 6. 2WIRE 7. 3WIRE 8. LCD 9. DIO x. exit(without change) (1)>7 Set speed: 1. ~5KHz 2. ~50KHz 3. ~100KHz 4. ~400KHz (1)>1 CS: 1. CS 2. /CS *default (2)>2 Select output type: 1. Open drain (H=Hi-Z, L=GND) 2. Normal (H=3.3V, L=GND) (1)>2 Ready 3WIRE> ● Connexion : Hiz
  • 47.
    @hellosct1 3WIRE>W Power supplies ON 3WIRE>[ /CSENABLED 3WIRE>0][ WRITE: 0x00 /CS DISABLED /CS ENABLED 3WIRE>255][ WRITE: 0xFF /CS DISABLED /CS ENABLED 3WIRE> Comment ça marche ? * On allume l’alimentation avec « W » A partir de là le 74HC595 est alimenté. * On exécute la commande « [ » pour mettre CS à LOW, se qui active le 74HC595 qui attend alors un octet. * On envoi nos données sous la forme d’un octet. * Puis on dit au 74HC595 de placer ses sorties selon l’octet qu’on vient de lui envoyer * Plaçant CS à HIGH puis à LOW * On dit au 74HC595 que l’envoi est terminé * Selon ce qu’on lui a demandé puis avec le second « [ » on lui dit d’attendre le prochain octet
  • 48.
    @hellosct1 Mode LCD ● Un écranLCD ● brancher le câble sur l’adaptateur LCD – l’autre bout au bus pirate ● Câblage – N/A
  • 49.
    @hellosct1 Tester si leconnecteur est ouvert ? (1/2) HiZ>m 1. HiZ 2. 1-WIRE 3. UART 4. I2C 5. SPI 6. 2WIRE 7. 3WIRE 8. LCD 9. DIO x. exit(without change) (1)>8 This mode requires an adapter Ready LCD>W Power supplies ON ● Connexion : Hiz
  • 50.
    @hellosct1 LCD>(0) 0.Macro menu 1.LCD Reset 2.InitLCD 3.Clear LCD 4.Cursor position ex:(4) 0 6.Write test numbers ex:(6) 80 7.Write test characters ex:(7) 80 LCD>(1) RESET LCD>(2) RESET Display lines: 1. 1 2. Multiple (2)>2 INIT LCD>(3) CLEAR LCD>"Hello World !" WRITE: "Hello World !" LCD>
  • 51.
    @hellosct1 – Programmez#10 - ● Présentation ● Que fait-on avec ? ● Bonus
  • 52.
    @hellosct1 Alternatif Ds projets defirmware alternatif on vu le jour, ● programmateur de fpga, ● d’avr, ● analyseur logique ● mini oscilloscope ● module jtag
  • 53.
  • 54.
    @hellosct1 – Programmez#10 - Atos Recrute ● CDI ● Stage ● Alternance ● ...
  • 55.