Trame d’une télécommande 433 MHz

L’objectif est de commander à distance des prises de courant télécommandées depuis un montage Arduino.

Arduino + récepteur RTL-SDR + télécommande 433,92 MHz
Modulation OOK (ASK) ???

Méthode :

Dans Universal Radio Hacker, après avoir enregistré le signal de la télécommande, si Autodetect parameters ne donne rien, on sélectionne sur le signal ce qui pourrait correspondre à 1 bit et on règle Samples/Symbol sur la valeur obtenue (selected), puis on tâtonne autour de cette valeur, l’objectif est de récupérer une trame qui se répète. Si la trame se répète entre 860 et 986 Samples/Symbol, on règle celui-ci sur 923 (la moyenne). On affine Samples/Symbol en divisant le nombre de samples de la trame par le nombre de bits.

Puis on calcule la durée des impulsions de chaque bit :
137679 selected => 68,84 ms / 135 bits = 0,510 ms = 510 microsecondes
=> BIT_LEN 510 (dans le programme Arduino)

On calcule enfin la durée entre 2 trames en se basant sur le nombre de samples et Sample rate => SEQ_PAUSE dans le programme Arduino.

La télécommande de ma prise envoie le signal qui suit, j’arrive à décoder la trame mais pas à réémettre ce signal. Même le HackRF One en mode émission a du mal à se faire reconnaître ! À approfondir…

NFC

Liens :

https://github.com/miguelbalboa/rfid => doc
RFID / Arduino : Copy a card with known keys
Comprendre le NFC Mifare
Calcul du BCC
Cours RFID => MIFARE Classic EV1 1K
L’Atelier du Geek
Cloner une carte NFC
RFID Proximity Cloning Attacks
nfc-tools => https://www.kali.org/tools/libnfc/
mfoc => https://www.kali.org/tools/mfoc/
mfoc-hardnested

Installer nfc-tools et mfoc sur Debian :

sudo apt-get install libnfc-bin mfoc
nfc-list -v

Le fichier extended-std.keys ci-dessous se trouve à cette adresse.
Carte utilisée : Secteur 0 réinscriptible (cf W ci-dessous)

mfoc -f extended-std.keys -O carte-originale.mfd
mfoc -O carte-vierge.mfd
nfc-mfclassic W a u carte-originale.mfd carte-vierge.mfd f

Pb : Toutes les clés passent à FFFFFFFFFFFF, la copie n’est donc pas parfaite. Poursuivre le clonage (sans l’option bloc 0) avec l’appli MIFARE Classic Tool sur Android.

Si nécessaire (« Card is not vulnerable to nested attack »), installer mfoc-hardnested :

git clone https://github.com/nfc-tools/mfoc-hardnested
sudo apt-get install libnfc-dev
sudo apt-get install autoconf (nécessaire pour autoreconf ci-dessous)
cd mfoc-hardnested
autoreconf -vis
./configure
make && sudo make install
mfoc-hardnested -h
mfoc-hardnested -O carte-originale.mfd

ESP32-WROOM-32E, Arduino et Debian

Je viens de recevoir ma carte ESP Minitel conçue par iodeo. Cela va me permettre de mettre à jour la bibliothèque Minitel1B_Hard en tenant mieux compte de l’ESP32.

Tout d’abord, il faut installer esptool dans Debian 11, sinon on obtient ce message d’erreur lorsqu’on veut charger un script :

python3: can't open file '/home/$USER/___REMOVE___/esptool.py': [Errno 2] No such file or directory
Une erreur est survenue lors du transfert du croquis

Dans la console, on tape donc :

sudo apt-get update
sudo apt-get install esptool

Dans Arduino, dans Fichier > Préférences > URL de gestionnaire de cartes supplémentaires, ajouter :

https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json

Remarque : Les différentes URL sont séparées par des virgules.

Dans Arduino 1.8.19, au niveau du gestionnaire de cartes, il faut installer esp32 d’Espressif Systems. À ce jour la dernière version est la 2.0.7.
Remarque : Si on obtient l’erreur indiquée ci-dessus (celle concernant esptool), il faut supprimer esp32 du gestionnaire de cartes et réinstaller la dernière version d’esp32.

Ensuite, je choisis la carte : ESP32 Dev Module et je garde les paramètres par défaut.

Mettre à jour Minitel1B_Soft à partir de Minitel1B_Hard

Dans Minitel1B_Hard.h / Minitel1B_Soft.h :

Sont spécifiques à Minitel1B_Hard :

////////////////////////////////////////////////////
/*
   Minitel1B_Hard - Fichier d'en-tête - Version du
class Minitel
{
public:
  Minitel(HardwareSerial& serial);
private: 
  HardwareSerial& mySerial; 

Sont spécifiques à Minitel1B_Soft :

////////////////////////////////////////////////////
/*
   Minitel1B_Soft - Fichier d'en-tête - Version du
#include "SoftwareSerial.h"
class Minitel : public SoftwareSerial
{
public:
  Minitel(int rx, int tx);

Dans Minitel1B_Hard.cpp / Minitel1B_Soft.cpp :

Sont spécifiques à Minitel1B_Hard :

#include "Minitel1B_Hard.h"
Minitel::Minitel(HardwareSerial& serial) : mySerial(serial) {

Sont spécifiques à Minitel1B_Soft :

#include "Minitel1B_Soft.h"
Minitel::Minitel(int rx, int tx) : SoftwareSerial(rx,tx) {

Enlever tous les mySerial. présents dans Minitel1B_Hard et absents dans Minitel1B_Soft.

Remplacer tous les !mySerial présents dans Minitel1B_Hard par !isListening() présents dans Minitel1B_Soft.

Mise à jour de la centrale Alpha 4

Je viens de mettre à jour la centrale Alpha 4. Elle est le 4ème prototype d’une centrale d’acquisition LIBRE à destination des enseignants de physique-chimie notamment. La centrale Alpha 4 a subi une cure d’amaigrissement par rapport à la version précédente (les capteurs internes ont été retirés) et le code informatique a été amélioré.

Les données (horodatées) sont enregistrées au format texte sur une carte SD. Elles se récupèrent par l’intermédiaire d’un câble USB connecté à un ordinateur sous Linux, Windows ou Mac OS X. Les données brutes sont ensuite facilement exploitables notamment grâce à un programme que j’ai écrit en Python. Celui-ci crée un fichier au format CSV, trace une courbe et permet de modéliser la fonction obtenue, tout cela automatiquement en appuyant sur un seul bouton de la centrale.

Charge d’un condensateur sous 5 volts avec une résistance de 1 MΩ et un condensateur de 100 µF :
b = -0,010 => τ = RC = 100 s

Oscillations :