Vue normale

Reçu aujourd’hui — 19 décembre 2025

BotWave - L'esprit des radios pirates sur Raspberry Pi

Par :Korben
19 décembre 2025 à 10:00

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.

Reçu — 16 décembre 2025

Cordon - L'outil qui trouve les aiguilles dans vos meules de logs

Par :Korben
16 décembre 2025 à 10:31

Vous avez déjà passé des heures à éplucher des fichiers de logs de plusieurs millions de lignes pour trouver ce qui cloche ? Genre une pauvre erreur bizarre qui se produit une fois sur 100 000, noyée dans un océan de messages répétitifs et d'infos inutiles ? Moi, oui plein de fois !

Mais ça c'était avant de tomber sur Cordon !

Cordon est un outil en Python qui utilise des modèles de transformers et du scoring k-NN pour détecter les anomalies sémantiques dans vos logs. En gros, au lieu de chercher des mots-clés comme un bourrin avec grep, Cordon comprend le sens des messages et repère ce qui sort de l'ordinaire.

Les patterns répétitifs sont alors considérés comme du bruit de fond normal, même si ce sont des erreurs parce que si vous avez la même erreur FATALE qui se répète 10 000 fois, c'est probablement un problème connu. Et vous, ce que vous voulez trouver, c'est l'événement rare, celui qui se produit une seule fois et qui est sémantiquement différent du reste.

L'installation est simple comme bonjour. Un petit pip install cordon et c'est réglé. Pour l'utilisation de base, vous balancez juste votre fichier de logs en argument :

cordon system.log

Et hop, Cordon va analyser tout ça et vous sortir uniquement les trucs intéressants. Par défaut, il garde les 10% les plus "anormaux" sémantiquement. Vous pouvez ajuster ce pourcentage avec --anomaly-percentile 0.05 pour être plus sélectif (top 5%).

Sous le capot, ça utilise le modèle all-MiniLM-L6-v2 de sentence-transformers pour vectoriser les logs. Le fichier est découpé en fenêtres de N lignes (4 par défaut), chaque fenêtre est transformée en vecteur, puis un score de densité k-NN est calculé. Les fenêtres qui ont des vecteurs très différents du reste sont marquées comme anomalies.

Et si vous avez un GPU, Cordon peut l'utiliser automatiquement avec l'option --device cuda. D'après les benchmarks, ça donne un speedup de 5 à 15x sur le scoring pour les gros datasets. Sur des logs HDFS de 1 à 5 millions de lignes, l'outil arrive à réduire le volume de 98%. Autant dire que ça filtre sévère.

Y'a aussi un mode "range" qui est pratique pour explorer par tranches. Genre si vous voulez exclure le top 5% (trop bizarre, probablement du garbage) mais garder le top 5-15%, vous faites :

cordon --anomaly-range 0.05 0.15 app.log

Ça permet d'affiner l'investigation de manière itérative.

Pour les environnements conteneurisés, Cordon propose également une image Docker avec un backend llama.cpp au lieu de sentence-transformers. Pratique si vous voulez utiliser des modèles GGUF ou si vous êtes dans un contexte où les dépendances PyTorch posent problème.

L'outil peut aussi s'utiliser comme bibliothèque Python si vous voulez l'intégrer dans vos propres scripts :

analyzer = SemanticLogAnalyzer()
output = analyzer.analyze_file(Path("system.log"))

C'est top moumoute pour le prétraitement de logs avant de les balancer à un LLM (pour réduire le contexte), le triage initial de fichiers de logs inconnus, ou la découverte de patterns inattendus. Par contre, si vous cherchez une erreur spécifique que vous connaissez déjà, grep reste votre ami. Et si vous avez besoin d'un historique complet pour la conformité, oubliez Cordon qui est volontairement "lossy".

Notez qu'au premier lancement, Cordon téléchargera le modèle d'embedding (environ 80 Mo) donc ce sera un peu lent, mais ensuite, ça sera quasi instantané car les lancements suivants utiliseront le cache. Et si vos logs sont très verbeux avec de longues lignes, le modèle par défaut (256 tokens max) risque de tronquer les lignes, dans ce cas, passez à un modèle plus costaud comme BAAI/bge-base-en-v1.5 qui supporte 512 tokens avec le paramètre --model-name.

Voilà, j'espère que ça vous sera utile ! C'est open source sous licence Apache 2.0 et ça se trouve sur GitHub .

Marathon, enfin daté en 2026, se dévoile avec 23 minutes de gameplay

16 décembre 2025 à 09:45

Bungie a enfin levé le voile sur la nouvelle fenêtre de lancement de Marathon. Le shooter d’extraction en ligne, très attendu par les fans du célèbre studio (à qui l’on doit Halo), sortira finalement au mois de mars 2026 sur PlayStation 5, Xbox Series X|S et PC, avec …

Lire la suite

Aimez KultureGeek sur Facebook, et suivez-nous sur Twitter

N'oubliez pas de télécharger notre Application gratuite iAddict pour iPhone et iPad (lien App Store)


L’article Marathon, enfin daté en 2026, se dévoile avec 23 minutes de gameplay est apparu en premier sur KultureGeek.

Reçu — 13 décembre 2025

Raspberry Pi 5 : piloter des LEDs WS2812B de manière fiable avec le bus SPI

La question du pilotage des LEDs WS2812B sur Raspberry Pi 5 a récemment été soulevée par Victor lors d’un échange sur un réseau social. Le Raspberry Pi 5 introduit une nouvelle architecture matérielle qui complique le pilotage des LEDs WS2812B avec les bibliothèques historiques. Les solutions basées sur le PWM ou le DMA montrent rapidement […]

Cet article Raspberry Pi 5 : piloter des LEDs WS2812B de manière fiable avec le bus SPI a été publié en premier sur Framboise 314, le Raspberry Pi à la sauce française.....

💾

Reçu — 10 décembre 2025
Reçu — 5 décembre 2025

12 semaines de formation Machine Learning gratos sur GitHub (et en français svp !)

Par :Korben
5 décembre 2025 à 10:07

Vous vous souvenez quand je vous avais parlé de la formation gratuite de Microsoft sur GitHub Copilot ? Hé bien ils remettent le couvert, mais cette fois c’est pour nous apprendre la science du Machine Learning from scratch ! Et c’est pas un petit tuto de 2h fait à l’arrache comme sur ma chaine Youtube… Non, c’est un bon gros programme complet en 12 semaines avec 26 leçons et tout ça dans la langue Gims.

Le repo s’appelle ML-For-Beginners et le truc cool c’est que Microsoft a choisi de se concentrer sur le Machine Learning “classique” avec Scikit-learn et pas du deep learning de richou qui demande des GPU à 3000 balles. Du coup c’est accessible à n’importe qui avec un laptop normal !

Leur programme couvre à peu près tout ce qu’il faut savoir pour débuter : Régression, classification, clustering, traitement du langage naturel, séries temporelles, et même un peu d’apprentissage par renforcement. Chaque leçon démarre par un quiz pour voir où vous en êtes, suivi de contenu avec des explications pas à pas, des challenges à faire, et un autre quiz de fin pour vérifier que vous avez bien tout capté.

Y’a même des “sketchnotes” (c’est à dire des résumés visuels) et des vidéos si vous êtes plus du genre à apprendre en regardant qu’en lisant . Et pour ceux qui préfèrent R à Python, y’a des versions alternatives des exercices en R Markdown .

La version française du README est dispo sur le repo et tout est traduit dans plus de 50 langues, du chinois à l’arabe en passant par le croate… Microsoft a automatisé la traduction via GitHub Actions, donc soyez souple d’esprit si vous croisez quelques phôtes…

L’approche pédagogique de cette formation est basée sur des projets concrets du genre prédire le prix des citrouilles, classifier des cuisines du monde (forcement, la française arrivera en premier ^^), analyser de la musique pour du clustering…etc. Bref, c’est un peu original !

Voilà si vous êtes en vacances ou en reconversion IA, pour commencer, il suffit de forker le repo et de le cloner sur votre machine.

Voilà, si vous avez toujours voulu comprendre comment fonctionne le Machine Learning sans vous taper des formules de maths pendant 6 mois ou vendre un rein pour un abonnement à un cours en ligne, c’est le bon moment je pense !

Merci Microsoft !

Reçu — 2 décembre 2025

CM-Colors - Un petit changement de couleurs pour une accessibilité maximum

Par :Korben
2 décembre 2025 à 10:09

L’accessibilité web c’est comme le tri sélectif… tout le monde dit que c’est génial mais azy, j’ai pas le temps. Et pourtant, c’est super important car près de 80% des pages web ont des problèmes de contraste de texte.

C’est le souci noumber ouane détecté sur le million de sites analysés chaque année par WebAIM . En gros, si vous avez un site, y’a de fortes chances que certains visiteurs galèrent à lire votre contenu, et je ne vous parle pas uniquement des personnes malvoyantes, hein… y’a aussi le daltonisme qui touche environ 8% des hommes et 0,5% des femmes. Rajoutez à ça les gens qui lisent leur téléphone en plein soleil, ceux qui ont une dalle de laptop toute pourrie, et vous comprendrez vite que le problème concerne pas mal de monde.

Alors est ce que vous connaissez les normes WCAG ?

Hé bien c’est le standard international pour l’accessibilité web. Ainsi pour être conforme au niveau AA (le minimum recommandé), votre texte doit avoir un ratio de contraste d’au moins 4,5:1 avec son arrière-plan. Pour le niveau AAA (l’idéal), c’est 7:1. Et là vous vous dites “super, je vais calculer ça à la main pour mes 47 couleurs de palette, mais va bien te faire cuire le cul, Korben”. (Oui, c’est comme ça que je vous imagine quand vous lisez mes articles).

Heureusement, y’a un outil qui vient de sortir et qui va vous changer la vie : CM-Colors . Vous lui donnez vos couleurs, et il les ajuste automatiquement pour qu’elles soient accessibles, le tout en modifiant les teintes le moins possible pour garder votre design intact.

L’installation est super fastoche…. C’est du Python donc un petit pip install cm-colors et hop c’est réglé. Ensuite, vous pouvez l’utiliser soit en ligne de commande directement sur vos fichiers CSS, soit via l’API dans votre code. Par exemple, vous avez un gris #5f7887 sur un fond #e6f0f5 qui passe pas les tests, hop, CM-Colors le transforme automatiquement en #5c6f7b et maintenant c’est conforme AA. Et la différence à l’œil nu est quasi invisible. Bref, c’est nickel pour l’accessibilité !

from cm_colors import ColorPair

# Your colors
pair = ColorPair("#999999", "#ffffff")

# Fix them and preview in the terminal
fixed_color, success = pair.make_readable(show=True)

print(f"Use {fixed_color} instead of #999999")
# Output: Use #8e8e8e instead of #999999

Le truc vraiment cool, c’est que l’outil gère plusieurs niveaux de lisibilité. Y’a “Readable” qui correspond au AA, “Very Readable” pour le AAA, et même une option large_text=True pour les gros titres qui ont des exigences moins strictes. Vous pouvez donc adapter selon vos besoins et pour les devs qui bossent sur de gros projets, y’a aussi une fonction make_readable_bulk qui permet de corriger plusieurs paires de couleurs d’un coup.

from cm_colors import make_readable_bulk

my_colors = [
 ("#777", "#fff"),
 ("#888", "#000"),
]

results = make_readable_bulk(my_colors)

for color, status in results:
 print(f"{color} is {status}")

Vous lui balancez une liste de tuples (texte, fond) et il vous retourne tout ça au propre. Et si vous voulez traiter directement vos fichiers CSS, la commande cm-colors styles.css génère un nouveau fichier styles_cm.css avec toutes les couleurs corrigées. L’outil peut même générer des rapports HTML pour visualiser les changements avant/après.

Alors oui, je sais, se taper de l’accessibilité c’est un peu relou car on a toujours l’impression que c’est du temps perdu sur des détails. Mais dites vous que ça impacte vraiment l’expérience de millions d’utilisateurs, donc ça vaut le coup d’y passer 5 minutes, surtout avec un outil automatisé !

Bref, CM-Colors c’est gratuit, c’est open source sous licence GPL-3, et ça peut vous éviter pas mal de galères. Toute la documentation est ici et y’a même une démo interactive sur leur site si vous voulez tester avant d’installer.

Reçu — 27 novembre 2025

Gradio 6 débarque pour créer des interfaces encore plus fluides

Par :Korben
27 novembre 2025 à 06:30

Si vous bidouiller un peu de machine learning et que vous avez la flemme de coder une interface web from scratch pour montrer vos jolis modèles, vous connaissez probablement Gradio , cette librairie Python qui permet de créer des démos interactives en quelques lignes de code.

Hé bien, excellente nouvelle, la version 6 vient de sortir et elle apporte pas mal de nouveautés intéressantes.

La grosse news de cette mise à jour , c’est d’abord la refonte complète de l’architecture avec le passage à Svelte 5 . Pour ceux qui s’en fichent du frontend, ça veut dire concrètement que vos apps seront plus légères et plus rapides à charger. L’équipe a aussi bossé sur l’optimisation des files d’attentes (quand y’a du monde sur votre démo), surtout pour les serveurs MCP (Model Context Protocol), donc si vous hébergez des trucs sur Hugging Face Spaces, vous devriez sentir la différence.

Côté fonctionnalités, y’a aussi quelques ajouts sympas comme le support natif des sous-titres pour les vidéos et l’audio, une nouvelle interface “MultimodalTextbox” améliorée pour le mobile (qui était franchement pas terrible avant), et pour ceux qui font des apps multipages, y’a maintenant un composant “Navbar” dédié à ça !

Le truc qui va plaire aux devs aussi, c’est qu’on peut désormais écrire des composants web personnalisés directement en HTML/JavaScript inline dans le code Python. Comme ça, plus besoin de sortir l’artillerie lourde avec des outils de build externes. Vous collez juste votre HTML, votre JS, et c’est parti mon kiki.

Par contre, attention si vous avez des projets existants… Y’a des changements qui vont casser des trucs. Par exemple, le format tuple dans le Chatbot a été supprimé, le composant Sketch est déprécié, et pas mal de paramètres ont bougé dans les composants graphiques natifs. L’équipe a quand même prévu un guide de migration avec des warnings de dépréciation pour vous aider à faire la transition.

A partir de maintenant, seule la branche 6.x sera maintenue, donc si vous êtes encore sur une vieille version, c’est le moment de migrer. La mise à jour se fait classiquement avec un

pip install --upgrade gradio

Notez que Gradio 6 nécessite Python 3.10 minimum et le support de Python 3.14 a été ajouté pour vous, les early adopters ^^.

Voilà, si vous faites du ML ou autre et que vous voulez montrer vos démos sans vous prendre la tête avec du React ou du Vue, Gradio reste une valeur sûre, et avec cette version 6 qui arrive, ce sera encore plus fluide et rapide !

Source

Reçu — 23 novembre 2025

GitHub - chifflier/mind-your-languages: Languages and security

23 novembre 2025 à 05:28

This collection of examples discussing the question of the intrinsic security characteristics of programming languages. Through illustrations and discussions, it advocates for a different vision of well-known mechanisms and is intended to provide some food for thoughts regarding languages and development tools, as well as recommendations regarding the education of developers or evaluators for secure software.


Permalink
Reçu — 19 novembre 2025

Les dons du Téléthon seront versés au gouvernement pour financer le budget 2026

19 novembre 2025 à 09:59

“Chaque euro compte !”, rappelle Cyril Féraud dans l’appel aux dons lancé hier, quelques semaines avant le Téléthon. Comme chaque année début décembre, l’événement caritatif fera son grand retour ponctué par 30 heures d’émission en direct sur France Télévisions. Mais contrairement aux éditions précédentes, les dons des Français ne financeront pas la recherche sur les maladies génétiques. 

Chaque don récolté permettra de financer le budget 2026, explique Cyril Féraud qui co-animera l’émission cette année et espère une mobilisation record. En effet, en 2024, seulement 96 millions d’euros avaient été récoltés lors du Téléthon. “Trop peu” selon Sébastien Lecornu qui rappelle que les dons ouvrent droit à une réduction d’impôt de 66 %, (malheureusement compensée par la hausse des impôts de 72 % décidée pour financer ce même budget 2026). L’autocollant “Cette année, j’ai donné” restera quant à lui totalement gratuit, assure le premier Ministre.

L’appel aux dons porte déjà ses fruits et les Français sont nombreux à avoir apporté leur contribution sur le site du Téléthon. Muriel, retraitée, espère que “son petit don de 100 € aidera à financer l’école publique, les hôpitaux ou un nouveau tailleur pour la Maire du 8e arrondissement de Paris”. Autre donateur, Amir s’est d’ores et déjà inscrit aux épreuves sportives du 5 décembre afin de collecter des dons “en espérant que le gouvernement existe toujours d’ici là”.

Inspirés par cet élan de solidarité, les Enfoirés souhaitent également reverser les recettes de leur concert au gouvernement, toujours prêts à agir pour les plus démunis.

L’article Les dons du Téléthon seront versés au gouvernement pour financer le budget 2026 est apparu en premier sur Le Gorafi.fr Gorafi News Network.

Reçu — 13 novembre 2025

Récupération: reconditionner un clavier Samsung Galaxy Tab S6

Bonjour à tous,

J'ai eu l'occasion, de récupérer une ancienne tablette Galaxy Tab 6 (2019) et son clavier Bluetooth. Un système Android malheureusement plus tenu à jour en 2025 donc à l'utilisation déconseillée.

Clavier Galaxy Tab S6 (Bluetooth)

Contre toute attente, il m'a été impossible d'appairer ce clavier avec un autre système. Ceci dit, cela n'est pas très étonnant d'être confronté à un système fermé.

A contre-courant de l'obsolescence

Si je n'ai pas encore trouvé comment reconvertir la tablette (n'hésitez pas à commenter), je me suis lancé dans la reconversion du clavier pour une future application MicroPython.

Cela commence forcement par l'ouverture du clavier qui n'est pas bien difficile (il y a 4 vis sous chacun des anti-dérapant.

Clavier Galaxy Tab S6

On y retrouve un clavier à membranes connecté sur un connecteur 26 broches, un accu Lipo de faible puissance, un touchpad I2C et un microcontroleur bluetooth (non visible de ce côté de la carte).

Clavier Galaxy Tab S6

Loin moi l'idée de reprogrammer le microcontrôleur Bt de la carte (ses protections matérielles sont certainement active), je me suis dit qu'il serait plus facile de réutiliser directement la membrane avec un Pico.

C'est que l'on imagine cette membrane comme un clavier de KeyPad dont le fonctionnement est sommaire.


Avec un peu d'analyse, j'ai rapidement repéré des résistances pull-down de 35 KΩ sur chacune des lignes (excepté les 5 premières). D'autres lignes marquée sont elles équipées d'un composant spécifique (voir les points blancs sur l'image ci-dessous).


Je pensais avoir repéré les colonnes, les autres signaux étant alors les lignes.

Malheureusement, les choses ne furent pas si simples!

Un peu de hacking

Je commence donc par souder des fils vernis 0.2mm sur le connecteur en vue de réaliser des tests. Les fils sont maintenus bien en place à l'aide de colle chaude (pour éviter  de casser les fragiles soudures des fils).

Quelques fils soudés sur le connecteur (pin 1 à droite).

J'ai procédé de même avec les 26 contacts ensuite reporté sur une plaque de prototypage (bien dans l'ordre).

report des connexions sur une plaque de prototypage offrant un accès via connecteur 2.54mm

Connexion au Pico

J'ai utilisé 2x MCP23017 (GPIO expander 16 bits) pouvant être contrôlé via bus I2C, donc avec seulement deux lignes connectés sur le Pico.

Matrice clavier branché sur des MCP23017

Brochage du MCP23017

L'intérêt des MCP23017 est d'avoir les broches 1 à 26 du connecteur clavier branchés scrupuleusement dans l'ordre croissant des GPIOs des MCP23017. Pas de mathématiques complexes, il y a une relation 1-à-1 entre les MCP et la matrice clavier.

Correspondance broche clavier (1..26) vers MCP (0..15) + MCP (0..9)

Enfin, j'ai aussi remarqué que l'usage de résistance pull-down sur les 5 premières lignes améliorait la stabilité de la détection. Ces pull-down manquantes sur le connecteur clavier était probablement activée sur le microcontroleur bluetooth.


Décoder la matrice clavier

Après un premier échec sur l'identification des colonnes et des lignes de la matrice, un second script a été écrit pour tester une à une chaque ligne comme une colonne considérant alors les 25 autres lignes pour détecter une touche.

Le script tester2.py publié sur le dépôt agit comme suit:

  1. Presser une touche du clavier
  2. Au démarrage, toutes les broches sont configurées en entrée.
    Elles présentent toutes une haute impédance.
  3. Ensuite le script sélectionne une ligne -- dite driver pin--, la configure en sortie et la place au niveau haut. Cette broche présente donc une faible impédance et est capable de fournir du courant.
  4. Ensuite, les 25 autres broches --read pin-- sont interrogés une par une pour y détecter un niveau haut.
    Note:
    la touche pressée doit permettre au courant de circuler vers une des broches en lecture.
  5. S'il N'Y A PAS de détection de niveau haut ALORS
    * le script repasse la driver pin au niveau bas
    * PUIS  reconfigure celle-ci en entrée.
    * ENFIN, le script passe la driver pin sur la broche suivante
    * et recommence le cycle de détection au point 3.
  6. S'il Y A détection d'un niveau haut  ALORS le script a détecté un couple (driver_pin, read_pin) permettant de détecter la touche enfoncée.

Après avoir testé toutes les touches et répertorié les combinaisons dans une feuille calcul. Nous avons enfin un description de la matrice du clavier.

feuille calcul des détection de touches

La feuille de calcul reprend les couples drive_pin,read_pin dans la 2ieme colonne. 

Puisque le contact électrique se fait dans les deux sens entre drive_pin--et--read_pin alors il est possible d'écrire la relation de détection de F12 comme 7,13 ou 13,7 (d'ailleurs, les deux options sont indiquées par tester2.py ). 

Par souci de simplicité, la relation est écrite avec le plus petit numéro de broche d'abord (donc 7,13 pour la touche F12).

Compilation des broches

Maintenant que nous disposons d'une description de la matrice, il serait opportun d'identifier les driver_pin et les read_pin utilisés dans la matrice.... cela revient à identifier les lignes et les colonnes du keypad présenté plus haut dans l'article.

C''est justement l'objectif du script tester2-driver-pin-detect.py disponible dans le dépôt.

Ce dernier permet d'identifier:

  • driver pin = [6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]
  • read pin = [12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]

Remarque:

Il y a un recouvrement des broches driver_pin et read_pin. Suivant les circonstances, une broche de la matrice clavier agit tantôt comme broche driver_pin tantôt comme broche de read_pin (de lecture).

Lecture optimisée

Sur base des informations obtenue, le script tester3.py disponible dans le dépôt effectue une détection optimisée des touches du clavier.
La détection s'étend aux combinaisons de touches avec Shift,Ctrl,Alt.

Il reste encore un peu de travail mais le plus gros est fait :-)

 

 

Reçu — 12 novembre 2025

La 4G avec un Raspberry Pi Pico ? C’est possible !

Il y a un peu plus de trois ans, je vous présentais déjà la carte NadHAT MK2, basée sur un modem 4G A7682E, imaginée et fabriqué en France par Garatronic et distribuée par McHobby. Cette carte bénéficie d’un support sérieux et de bibliothèques bien suivies, ce qui la distingue de nombreuses productions asiatiques. Aujourd’hui, place […]

Cet article La 4G avec un Raspberry Pi Pico ? C’est possible ! a été publié en premier sur Framboise 314, le Raspberry Pi à la sauce française.....

Reçu — 10 novembre 2025

Dead Domain Discovery DNS - Une veille mortuaire pour les domaines

Par :Korben
10 novembre 2025 à 07:57

Vous naviguez sur le web en mode pépouze comme tous les jours… Et comme tous les jours, votre navigateur charge des scripts, des CSS, des cookies, des images, parfois des iframes. Et malheureusement, certains de ces trucs viennent de domaines qui n’existent plus. Vous ne vous en rendez pas compte et votre navigateur non plus. Mais Dead Domain Discovery DNS le sait, lui. Et il va vous le dire.

Dead Domain Discovery DNS , c’est un outil créé par Lauritz Holtmann , un chercheur en sécurité allemand et c’est un DNS forwarder UDP super léger codé en Python qui écoute sur le port 53 de votre ordinateur et note tous les domaines qui ne répondent plus. Ce n’est donc pas un scanner actif mais plutôt un observateur passif qui regarde passer les requêtes DNS et repère les morts.

Vous configurez Dead Domain Discovery comme votre serveur DNS primaire comme ça, toutes vos requêtes DNS passent par lui. Il forward ensuite ça vers un resolver upstream, genre Google DNS ou Cloudflare. Si un domaine ne résout pas, il réessaye sur un resolver secondaire mais si le secondaire échoue aussi, il marque alors le domaine comme “potentiellement mort” puis toutes les 15 secondes, il vous envoie un message contenant les nouveaux domaines HS découverts.

Les notifications partent sur Telegram, par email, ou via un webhook selon ce que vous voulez. Rassurez-vous, y’aura pas de fausse alerte à répétition puisqu’un domaine notifié une fois ne l’est plus pendant un certain temps.

L’intérêt pour les chercheurs en sécurité, c’est que les domaines morts sont une surface d’attaque intéressante. Un domaine expire, quelqu’un d’autre le réenregistre mais comme les enregistrements DNS qui pointaient vers l’ancien propriétaire existent toujours, ça ouvre des portes pour mettre en place des sous-domaines, des CNAME, charger des scripts externes autorisés…etc car tout continue de pointer vers le domaine mort. Ça permet de contrôler une partie du trafic autorisé.

Cette attaque est connue et s’appelle le subdomain takeover ou domain hijacking. Par exemple en 2024, l’attaque Sitting Ducks a mis plus d’un million de domaines à risque , exploitée par des cybercriminels russes. Et début 2025, des domaines expirés ont permis de contrôler plus de 4000 backdoors sur des systèmes gouvernementaux, académiques et privés. La campagne SubdoMailing a même utilisé plus de 8000 domaines légitimes pour envoyer des emails de phishing, en exploitant leur réputation pour contourner les filtres anti-spam. Donc autant vous dire que c’est un vrai problème…

Dead Domain Discovery vous aide donc à trouver ces domaines avant qu’un attaquant ne le fasse. Ensuite, si le domaine est réenregistrable, vous avez 2 options. Soit vous le réenregistrez vous-même pour sécuriser votre infrastructure, soit vous signalez le problème au propriétaire du site qui référence ce domaine HS.

L’infra recommandée par Lauritz pour faire tourner Dead Domain Discovery est un Raspberry Pi configuré comme DNS primaire de votre réseau. Faible conso, c’est toujours allumé, et ça permet de tout surveiller en continu. Mais vous pouvez aussi le déployer sur un VPS si vous voulez monitorer un réseau distant.

Notez que les notifications Telegram nécessitent un bot API token et un chat ID. L’email passe par du SMTP classique et les webhooks acceptent des headers personnalisés, ce qui est pratique si vous voulez intégrer ça dans votre système de monitoring existant.

L’outil dispose aussi d’une extension Chrome qui fais la même chose et scanne les pages web pour iframes, scripts et autres styles externes, puis vérifie si leurs domaines résolvent. Même auteur, même principe, mais côté navigateur. L’extension utilise l’API Google DNS pour vérifier les domaines et ne communique aucune donnée à son auteur. Vous scannez, vous voyez les morts au combat, et ensuite, vous pouvez agir.

Bref, vous l’aurez compris, Dead Domain Discovery ne vous protègera pas directement mais vous dira juste quels cadavres traînent dans votre réseau.

À vous ensuite de les enterrer comme il se doit.

Reçu — 6 novembre 2025

MicroPython: Mesurer la vitesse de l'air avec le capteur FS3000

Amis de MicroPython... Bonjour,

Cela faisait longtemps que nous n'avions pas eu l'occasion de porter un nouveau pilote sous MicroPython. 

Renesas FS3000

Cette fois, nous nous sommes penchés sur le capteur FS3000  de Renesas qui mesure la vélocité de l'air. Capteur que l'on retrouve sur les breakout FS3000 de SparkFun.

Capteur FS3000 de SparkFun

Ce type de capteur est principalement utilisé dans des systèmes de refroidissement ou de conditionnement d'air. Comme il dispose d'une interface I2C, il est très facile de l'exploiter avec de nombreux microcontrôleur.

Les cartes breakout existent en deux versions:

  • FS3000-1015 mesurant des flux jusqu'à 15m/s (54 Km/H).
  • FS3000-1005 mesurant des flux jusqu'à 7ms/s  (25 km/H).

Pilote MicroPython

Bien que SparkFun propose un pilote MicroPython --ce que je salue-- celui-ci est construit sur une surcouche d'abstraction permettant permettant d'utiliser le capteur avec CircuitPython et MicroPython.

Etant un fan inconditionnel de MicroPython, je pense qu'il est préférable de disposer d'un code qui va droit au but... avec le moins de détour possible! C'est ainsi que l'on maintient une efficacité optimale d'exécution.

J'ai décidé de recréer un pilote à partir du code Arduino. En effet, il à été plus facile de travailler à partir du code Arduino que de suivre la couche d'abstraction CircuitPython/MicroPython.

Le pilote alternatif est disponible sur notre dépôt esp8266-upy/qwiic-ait-velocity .

Brancher sur un Raspberry-Pi Pico

Le schéma suivant indique comment brancher le capteur sur un Pico à l'aide d'un câble Qwiic (qui transporte un bus I2C).

Brancher un capteur FS3000 sur un Raspberry-Pi Pico
 

Du code pour le peuple

Après avoir transféré la bibliothèque airspeed sur la plateforme MicroPython, il ne reste plus exécuter l'exemple ci-dessous.

from machine import I2C,Pin
from airspeed import FS3000, AIRFLOW_RANGE_15_MPS
import time

# Raspberry-Pi Pico
i2c = I2C( 1, sda=Pin.board.GP6, scl=Pin.board.GP7 )
# Adresse par défaut
air_speed = FS3000( i2c )

# air_speed.set_range( AIRFLOW_RANGE_7_MPS )
air_speed.set_range( AIRFLOW_RANGE_15_MPS )

while True:
	print( "FS3000 lecture brute:", air_speed.read_raw() ) # 125ms acquisition
	#  lecture en metre par seconde, retourne un float de 0 - 7.23 pour FS3000-1005, 0 - 15 pour FS3000-1015 
	airflow_mps = air_speed.read_mps()
	if airflow_mps != None: # retourne None en cas d'erreur CRC!
		print( "   m/s:", airflow_mps ) 
		airflow_kmh = airflow_mps*3600/1000
		print( "   Km/h:", airflow_kmh ) 
		airflow_mph = airflow_mps*2.2369362912
		print( "   Miles/h:", airflow_mph ) 
	time.sleep( 1 )

Ressources

MCHobby investit du temps et de l'argent dans la réalisation de traduction et/ou documentation. C'est un travail long et fastidieux réalisé dans l'esprit Open-Source... donc gratuit et librement accessible. 

SI vous aimez nos traductions et documentations ALORS aidez nous à en produire plus en achetant vos produits chez MCHobby.

Reçu — 4 novembre 2025
Reçu — 3 novembre 2025
Reçu — 30 octobre 2025
❌