Vue lecture

ddrescue + Raspberry Pi Imager - Le combo pour cloner vos cartes SD sans vous arracher les cheveux

Vous avez un parc de Raspberry Pi à déployer et vous en avez marre de refaire la config à chaque fois ? Ou pire, votre carte SD commence à faire des siennes et vous voulez la sauver avant qu'elle rende l'âme ? Hé bien j'ai le combo parfait pour vous les amis !

Je vais vous parler en réalité de deux outils complémentaires que vous connaissez déjà je pense : ddrescue pour le clonage/sauvetage de cartes SD, et Raspberry Pi Imager pour créer des images préconfigurées. Ensemble, ils forment une chaîne de production quasi "industrielle" pour vos projets Pi. Ça va vous faire gagner un temps précieux mais aussi vous sécuriser car on sait à quel point les cartes SD c'est capricieux parfois sur les Rpi (surtout quand y'a des coupures de jus ^^).

Commençons donc par ddrescue qui est l'outil libre parfait pour cloner des disques, mais avec un truc en plus que dd n'a pas : la gestion des erreurs et la reprise. Son secret, c'est le mapfile, un fichier journal qui garde trace de tout ce qui a été copié, du coup, si votre clone plante en plein milieu (câble qui se débranche, coupure de courant, carte SD qui fait la gueule), vous relancez la même commande et ça reprend exactement où ça s'était arrêté. Sans ce fichier, par contre, c'est retour à la case départ... snif.

⚠️ Attention : la destination va être écrasée. Donc vérifiez 3 fois vos /dev/... avant d'appuyer sur Entrée. Et oui, l'option --force porte bien son nom puisqu'elle autorise l'écriture sur un disque brut, donc si vous vous trompez de cible, c'est le drame.

La commande de base, c'est ça :

sudo ddrescue --force /dev/sdX /dev/sdY rescue.map

Vous remplacez /dev/sdX par votre carte source et /dev/sdY par la destination et le fichier rescue.map, c'est votre filet de sécurité, donc gardez-le précieusement à côté de vos images.

Après si vous préférez cloner vers un fichier image plutôt que directement vers une autre carte, c'est quasi pareil :

sudo ddrescue /dev/sdX raspios.img rescue.map

Et pour les cartes un peu fatiguées avec des secteurs défectueux, y'a une astuce en deux passes. D'abord une passe rapide qui saute les erreurs (le but c'est de récupérer le max sans s'acharner tout de suite) :

sudo ddrescue -n /dev/sdX raspios.img rescue.map

Puis une deuxième passe qui insiste sur les zones problématiques :

sudo ddrescue -r3 /dev/sdX raspios.img rescue.map

Le -r3 dit à ddrescue de réessayer 3 fois sur chaque secteur récalcitrant par contre, évitez de mettre --no-split par défaut. Ça peut sembler logique ("ne coupe pas"), mais sur un support vraiment abîmé, laisser ddrescue découper et isoler les zones foireuses est souvent plus efficace.

Maintenant faut vérifier que tout s'est bien passé… alors oui, on peut faire des contrôles, mais il faut être clair, si vous comparez juste un bout, vous validez juste un bout. Par exemple cette commande compare seulement 1 Go, et pas toute la carte :

sudo cmp -n 1G /dev/sdX /dev/sdY

Donc si vous voulez comparer TOUT (et que ça ne vous dérange pas d'attendre ^^), vous pouvez comparer l'image et la carte clonée en faisant un hash sur la totalité. Par exemple, pour vérifier que l'image écrite sur la carte correspond bien à l'image d'origine :

sha256sum raspios.img
sudo ddrescue /dev/sdY - | sha256sum

Si les deux hashes sont identiques, là, on parle (beaucoup plus) sérieusement. Et si vous ne voulez pas streamer le disque, vous pouvez aussi faire un hash du périphérique directement (mais ça lit tout le disque, donc c'est long).

Vous l'aurez compris, ddrescue nous sert à cloner ou à sauver une carte existante, mais pour déployer proprement une image, on va maintenant utiliser le fameux Raspberry Pi Imager. Car oui, l'outil officiel de la fondation a une fonction que beaucoup de gens ne connaissent pas qui est la personnalisation avancée. Comme ça, avant de flasher votre carte, vous pouvez préconfigurer plein de trucs.

Par exemple, le hostname du Pi, genre pi-cuisine ou pi-garage, l'utilisateur et son mot de passe, le Wi-Fi avec SSID et mot de passe, le SSH activé avec mot de passe ou clé publique, le fuseau horaire et la config clavier. Et précision importante, Imager prépare tout ça pour que ce soit appliqué au premier boot (c'est injecté pour l'initialisation), ce qui revient au même pour vous, mais ça explique pourquoi c'est si pratique en mode headless.

Du coup, vous flashez la carte, vous la mettez dans le Pi, vous branchez l'alimentation, et souvent c'est accessible en SSH très vite :

ssh pi@pi-cuisine.local

C'est le mode headless parfait puisque ça vous évite d'avoir à brancher un écran + clavier + souris sur votre Rpi. Notez que l'extension en .local de mon exemple ci-dessus dépendra du mDNS (Bonjour / Avahi)... Sur certains réseaux (ou certains PC), ça pourra ne pas résoudre donc dans ce cas-là, vous passez par l'IP ou votre DNS/DHCP habituel.

Et maintenant, roulements de tambours, voici le workflow magique pour déployer un parc de Pi. Cela consiste tout simplement à configurer un Pi de référence avec tout ce qu'il vous faut dedans (paquets, services, configs...). Ensuite vous l'éteignez proprement, vous clonez sa carte avec ddrescue, et vous dupliquez cette image à volonté.

MAIS (et là c'est le point qui évite des sueurs froides), cloner une carte Linux telle quelle, ça clone aussi des identifiants qui devraient être uniques, typiquement :

  • le machine-id
  • les clés SSH hôte (host keys)

Donc si vous déployez 10 Pi clonés à l'identique, vous vous retrouvez avec 10 machines qui se présentent pareil, et côté SSH vous pouvez avoir des alertes cheloues (et côté admin, c'est pas propre).

La solution la plus simple c'est donc de préparer votre image "master" pour que chaque nouveau Pi régénère ça au premier démarrage. Sur votre Pi de référence (avant de cloner), vous pouvez faire :

sudo rm -f /etc/machine-id
sudo truncate -s 0 /etc/machine-id
sudo rm -f /etc/ssh/ssh_host_*

Comme ça, au prochain boot, le système régénère un machine-id propre, et OpenSSH régénère ses clés hôte. (Si jamais ça ne se régénère pas automatiquement sur votre variante d'OS, un redémarrage + réinstallation/relance SSH règle généralement le truc.)

Après ça, à chaque nouveau Pi, vous flashez l'image.

Maintenant si vous n'avez pas de parc à déployer, mais que vous voulez simplement personnaliser le hostname, le Wi-Fi, le user, etc., le plus simple ça reste donc de passer par Raspberry Pi Imager au moment du flash avec ses options avancées car si vous écrivez l'image avec dd/ddrescue directement sur la carte, Imager ne pourra évidemment pas appliquer ses paramètres.

Et SURTOUT, avant de lancer quoi que ce soit, pensez à identifier vos disques pour pas faire de bêtises (c'est une commande Linux, btw) :

lsblk -o NAME,SIZE,MODEL,MOUNTPOINT

Ah et désactivez aussi l'automontage sur votre machine, sinon vous allez avoir des soucis avec la destination qui se retrouvera occupée par l'OS.

Bref, avec ddrescue et Raspberry Pi Imager, vous avez maintenant de quoi cloner vos cartes SD beaucoup plus sereinement (et pas juste "les yeux fermés").

Enjoy !

  •  

Hackberry Pi CM5 - Construisez votre propre cyberdeck de pentester

Vous connaissez les cyberdecks ?

Non ?? Pourtant, je vous en ai parlé déjà. Ce sont des petits ordis portables custom qu'on voit par exemple dans les films cyberpunk, où genre, le mec sort son bouzin de sa poche et hop, il peut hacker le monde entier. HACK THE PLANET !! Oué Oué !

Et bien tenez-vous bien car le Hackberry Pi CM5 9900 , c'est exactement ça, mais en vrai !

Le Hackberry Pi c'est donc un projet DIY qui transforme un Raspberry Pi Compute Module 5 en plateforme de hacking portable, ce qui est parfait pour les pentesters, les gens de l'infosec, ou simplement les geeks qui veulent un Linux puissant dans un format ultra-compact.

Le châssis mesure 143,5 x 91,8 x 17,6 mm pour 306 grammes et vous avez une coque en aluminium sur le devant et le dos, avec une partie centrale imprimée en 3D. À l'intérieur, un écran tactile 720x720, un vrai clavier physique style BlackBerry 9900, et un Raspberry Pi CM5 avec un quad-core Cortex-A76 qui tourne à 2,4 GHz.

L'écran est carré, ce qui est un format assez inhabituel mais plutôt pratique quand vous bossez en terminal. Le clavier, c'est celui du BlackBerry 9900, donc un vrai clavier physique avec des touches qui cliquent, et si vous avez déjà tapé sur un clavier tactile pendant 3 heures d'affilée, vous comprendrez pourquoi c'est cool.

Côté connectique, vous avez aussi 2 ports USB 3.0, un HDMI pleine taille, un slot M.2 2242 pour un SSD NVME, un lecteur microSD, une batterie de 5 000 mAh, et même des enceintes stéréo intégrées. La batterie vous donnera environ 5 heures en veille et 3 ou 4 heures en utilisation active. Et une recharge complète se fera en 3 heures via USB-C.

Donc plutôt que d'utiliser votre ordi principal pour vos tests de sécu, vous pouvez monter un environnement dédié sur ce petit deck. Vous flashez Kali Linux sur le SSD NVME, vous ajoutez quelques dongles WiFi style ALFA Network AWUS036ACM, peut-être un adapteur Bluetooth, un hub USB, et hop, vous avez une plateforme de pentesting portable.

Le truc cool, c'est surtout que le projet est modulaire donc vous pouvez par exemple modifier l'antenne WiFi.. Les fichiers STL sont également dispo en ligne, donc si vous avez une imprimante 3D, vous pouvez vous imprimer un support d'antenne custom. Certains ont même ajouté des radios logicielles (SDR) pour jouer avec les fréquences radio.

Ensuite, l'installation est assez simple. Vous commencez par insérer le module CM5 dans son slot dédié, vous ajoutez le SSD NVME, vous imprimez éventuellement votre support d'antenne custom, vous flashez Raspbian sur une carte microSD pour le boot initial, puis vous installez Kali Linux sur le NVME, et vous configurez les options de boot pour démarrer directement depuis le SSD.

Si vous avez capté tout ce qui est écrit ci-dessus, ce sera simple oui. Sinon, faudra lire un peu de doc ^^.

Le système supporte aussi plusieurs OS : Kali pour le pentesting, Pi OS par défaut, Ubuntu, LineageOS (Android), Manjaro, TwisterOS, ou même ParrotOS. Et vous pouvez basculer entre les environnements selon ce que vous voulez faire.

Maintenant niveau prix, comptez environ 300-350 dollars pour le setup complet. Le châssis Hackberry Pi CM5 9900 coûte 168 dollars, le module Raspberry Pi CM5 Lite avec 16 Go de RAM tourne à 132 dollars, vous ajoutez un SSD NVME de 256 Go, la batterie 5 000 mAh avec charge MagSafe, et quelques accessoires.

C'est dispo chez plusieurs revendeurs : Elecrow, Carbon Computers, Tindie, ou même Etsy mais le module CM5 par contre, faudra le sourcer séparément, genre chez Pishop.us.

Ce projet a été développé par ZitaoTech, c'est open source, donc toute la communauté peut contribuer, améliorer les designs, partager des configs, etc et y'a d'ailleurs déjà pas mal de mods qui circulent, notamment des antennes externes pour améliorer la portée WiFi pendant les tests de pénétration.

Comme ça, si vous êtes dans la sécu offensive, c'est quand même pratique d'avoir un device dédié qui ne risque pas de foutre en l'air votre config perso si un test part en vrille. Vous isolez vos outils, vos payloads, vos exploits sur un système séparé, et si ça plante, bah vous rebootez le deck, c'est tout.

Et puis franchement, c'est plutôt classe je trouve de sortir un truc comme ça de sa poche. Ça donne l'impression que vous êtes en mission, comme dans les films... vous dégainez votre petit cyberdeck avec son clavier BlackBerry, vous vous branchez sur un port Ethernet, et hop, vous lancez vos scans. Ça a plus de gueule je trouve qu'un laptop Dell sous Windows avec un autocollant Mr. Robot ^^.

A découvrir ici !

  •  

BotWave - L'esprit des radios pirates sur Raspberry Pi

Vous vous souvenez des radios pirates clandestines qui diffusaient de la musique interdite depuis des appartements ou des camionnettes ? Hé bien le même concept revient en force, mais cette fois avec un Raspberry Pi et quelques lignes de Python.

BotWave , c'est un projet open source qui transforme n'importe quel Raspberry Pi en émetteur FM fonctionnel. Vous branchez une antenne sur le GPIO 4 (la broche 7), vous lancez le script, et hop, vous diffusez sur la bande FM comme un vrai pirate des ondes. Vos voisins peuvent alors vous capter sur leur autoradio sans le savoir.

⚠️ Attention : diffuser sur la bande FM sans autorisation de l'ANFR est illégal en France (et dans la plupart des pays). Les sanctions peuvent aller jusqu'à 6 mois de prison et 30 000 € d'amende. En pratique, avec une antenne bricolée, la portée se limite à quelques mètres, mais légalement, même ça reste interdit. Les développeurs recommandent d'ailleurs d'utiliser un filtre passe-bande pour limiter les interférences.

Le truc que j'ai trouvé intéressant avec BotWave, c'est son architecture client-serveur. Vous pouvez contrôler plusieurs Raspberry Pi depuis un seul serveur central, du coup, si vous voulez monter un réseau de diffusion avec des émetteurs disséminés un peu partout, c'est possible. L'interface en ligne de commande permet d'envoyer des fichiers audio, de démarrer ou stopper les diffusions à distance, et de gérer tout ça de manière centralisée.

Pour l'installation, c'est hyper simple. Une seule commande suffit :

curl -sSL https://botwave.dpip.lol/install | sudo bash

Le script vous demande alors si vous voulez installer le serveur, le client, ou les deux. Et c'est parti mon kiki ! Le système détecte automatiquement votre Pi (compatible avec les modèles 0, 1, 2, 3 et 4) et configure tout ce qu'il faut.

Sous le capot, ça utilise PiFmRds pour générer le signal FM et c'est du Python à 75% avec un peu de Shell pour l'installation. Le projet est sous licence GPLv3, donc vous pouvez l'auditer, le modifier, le redistribuer, bref, faire ce que vous voulez avec.

Car quand tout tombe, la radio FM reste un des rares moyens de communication qui fonctionne sans infrastructure centralisée. Pas besoin de serveurs, pas besoin de tours cellulaires. Juste un émetteur, un récepteur, et un peu d'électricité. Les radioamateurs le savent depuis toujours, et avec BotWave, chacun peut monter son propre réseau de diffusion.

  •  

Pico-2-Explorer : ce que des clients en pensent

Bonjour à tous,

Je profite de l'occasion pour faire suivre quelques commentaires clients concernant le Pico-2-Explorer et sa documentation.

Pico-2-Explorer disponible chez MC Hobby

 Merci à Christian H. pour son retour

Pico explorer est idéal pour commencer la programmation tout y est bien expliqué, je n'ai eu aucun problème. Merci beaucoup.

Merci aussi à Paul L. pour son retour

Très intéressant

Le Pico-2-Explorer à venir découvrir chez MC Hobby

  •  

Pico-2-BB : Garder un maximum de place sur le breadboard

Bonjour à tous,

Aujourd'hui, j'aimerais vous parler d'une idée pour faciliter le prototypage avec le Raspberry-Pi Pico.

Le meilleur adaptateur breadboard pour Pico

Constat avec le Pico

Lorsque le Pico est inséré directement sur un breadboard (demi-taille, le plus courant):

  • Une grande partie du breadboard est occupé par le Pico.
  • Il reste deux rangs de connexion pour le prototypage. 
  • Il n'y a pas de distribution d'alimentation sur les rails d'alimentation.
  • Il n'y a toujours pas de bouton Reset

 Pour faire un prototypage rapidement c'est convenable mais dès que cela se complique un peu, on manque rapidement de place.

Pico-2-Breadboard

Le Pico-2-Breadboard permet de brancher un Pico/Pico2/Pico-Wireless/Pico2-Wireless sur un breadboard en apportant une foule d'avantages.

Pico-2-Breadboard

 Il a l'air de rien vu comme ça mail il y une intense réflexion autour de la conception de cette carte.
Cette carte est d'ailleurs réalisée en 4 couches afin de pouvoir réaliser le routage.

Encombrement minimum

Pico-2-Breadboard

Pour commencer, la disponibilité des GPIO n'utilise que la moitié du breadboard MAIS EN PLUS il n'utilise qu'un seul rang sur le breadboard.
Cela laisse quatre rangs pour réaliser les connexions de prototypage.

Les rails d'alimentation son automatiquement alimentés:

  • +5V et GND sur le rail supérieur. En provenance du connecteur USB.
  • +3.3V et GND sur le rail inférieur. En provenance du régulateur du Pico.
 A noter que la tension d'alimentation et polarité sont indiqués sur la sérigraphie.

Interface utilisateur

Une interface utilisateur minimale permet de se concentrer directement le coeur du prototypage (souvent un capteur à tester).

Interfaces du Pico-2-Breadboard

L'interface utilisateur est composée des éléments suivants:
  • Bouton Reset: pour redémarrer rapidement le Pico. Ce dernier est bien séparé des deux boutons utilisateurs pour éviter de se tromper.
  • Boutons utilisateurs: branchés respectivement sur les GPIO 16 et 17, il force le potentiel d'une broche à la masse via une résistance de 100 Ohms. Il faudra donc activer la résistance pull-up avec
    btn = Pin(Pin.board.GP16, Pin.PULL_UP)
    Remarque: la résistance est utilisée pour éviter un court-circuit franc si la broche était configurée en sortie (lorsque le bouton est pressé).
  • LEDs utilisateurs: une LED rouge est branchée sur GP14 (en haut, comme sur un feu tricolore) et une LED verte sur le GP15. 
    Avec la LED du Pico, cela fait 3 LEDs pour réaliser une interface... même rudimentaire.

Connecteurs Qwiic/StemmaQT et Grove

Le dessous de la carte Pico-2-BB qui est déporté hors du breadboard.
Cela a permit de placer des cavaliers de configuration et deux connectiques populaires.
Connecteurs et configuration du Pico-2-Breadboard

Connecteur Grove et Qwiic/StemmaQT
 
Ces deux connecteurs sont branchés sur le même bus I2C(1) connecté sur les GP6 & GP7. C'est d'ailleurs pour cette raison que la mention des libellés est sda et scl sur le connecteur GPIO central.
 
Le connecteur Qwiic/StemmaQT permet de brancher facilement des capteurs I2C produit par Adafruit Industries ou SparkFun. C'est vraiment très pratique pour connecter un afficheur LCD ou OLED!
 
Le connecteur Grove (de SeedStudio) permet de brancher des capteurs I2C SeedStudio exploitant une alimentation et une logique 3.3V.
Je peux recommander les capteurs I2C et extension I2C de M5Stack qui utilisent exclusivement une logique 3.3V.
 
Remarques:
  1. Un cavalier permet de configurer la tension d'alimentation du connecteur Grove sur 5V.
    Il suffit de sectionner la piste entre la pastille centrale et la pastille 3V3.
    Enfin, souder ensemble les pastilles centrales et 5V.
  2. Peut importe la tension sur le connecteur Grove, les signaux logiques restent en 3.3V
  3. Rien n'empêche d'utiliser les GP6 et GP7 en entrée/sortie mais c'est aussi se priver d'une interface I2C sur-laquelle il est possible de connecter de multiples périphériques.

Cavalier de configuration des LEDs

Il est possible d'utiliser les GPIO des LEDs en entrée/sortie pour autre chose que contrôler les LEDs utilisateurs. Pour libérer la broche de l'influence de sa LED utilisateur, il suffit de sectionner la piste présente entre les pastilles JP_Green (LED verte) et JP_Red (LED rouge). 
 
Remarque:
  1. Les GPIOs des boutons utilisateurs peuvent être librement utilisés à d'autres fins. Il n'y aura pas de perturbation pour autant que l'utilisateur ne presse pas le bouton correspondant au GPIO.

Où acheter

Le Pico-2-BB ("Pico to Breadboard" ou encore "Pico 2 Breadboard") est disponible chez MCHobby.

  •  
❌