Vue normale

Il y a de nouveaux articles disponibles, cliquez pour rafraîchir la page.
À partir d’avant-hierKorben

Plus de confort de lecture sur Korben

Par : Korben ✨
12 mai 2026 à 10:14

Je viens de pousser en prod une fonctionnalité sur laquelle je bosse depuis quelques temps et comme je suis content du résultat, c'est le moment de partager ça avec vous.

En haut à gauche du site, juste à côté de l'icône qui change le thème, vous trouverez un petit bouton "abc" qui jusqu'à présent ne servait qu'à appliquer une police spéciale dyslexique à mon contenu. Mais j'ai amélioré un peu tout ça pour que maintenant niveau "Confort de lecture" vous soyez refait !

En cliquant donc sur cette icône, s'ouvre un petit panneau de config avec dedans de quoi configurer votre expérience de lecture aux petits oignons. Police adaptée pour la dyslexie, espacement variable, fond couleur crème, mode audio TTS, lignes colorées pour guider l'œil...etc tout ça sans dépendre d'un service tiers.

Ensuite, vos réglages sont conservés dans le localStorage de votre navigateur pour les retrouver à chaque visite et il y a un petit lien en bas de la fenêtre pour réinitialiser tout ça.

Maintenant, l'histoire derrière cette feature, parce qu'elle est intéressante. À la base j'étais parti pour recoder un équivalent du " Bionic Reading ", vous savez ce truc à la mode qui met en gras le début de chaque mot pour soi-disant accélérer la lecture. J'avais déjà bien avancé quand je suis tombé sur une étude scientifique de 2024 qui démontait complètement le concept. En gros, les chercheurs ont mesuré que cela ne produisait aucun effet positif sur la vitesse de lecture ni sur la compréhension. Que dalle...

Du coup, pivot complet... J'ai tout repris pour bâtir un système basé sur ce qui marche vraiment, avec un principe simple : Chaque option du panneau affiche un badge "Sci ✓" si elle est soutenue par la recherche, ou "Pref" si c'est une préférence subjective documentée. Comme ça vous savez sur quoi vous cliquez et on évite le marketing déguisé en science.

Côté polices donc, vous avez 4 choix. La police par défaut du site, Lexend qui est une "variable font" développée par la Dr. Bonnie Shaver-Troup avec des résultats publiés montrant une amélioration significative de la fluidité de lecture, Atkinson Hyperlegible créée par le Braille Institute spécifiquement pour les personnes malvoyantes, et enfin OpenDyslexic que j'avais déjà. Pour cette dernière, je l'ai mise avec un badge "Pref" parce que la communauté dyslexique l'apprécie mais les études sont moins solides scientifiquement.

Les sliders d'espacement permettent également de jouer sur trois axes : espace entre les lettres, hauteur de ligne, largeur de la colonne de texte. Tout est calibré pour être utile sans casser le rendu. Vous pouvez aussi activer un fond crème qui utilise la couleur Solarized base3 (c'est #FDF6E3, reconnue dans la communauté des dev pour son confort de lecture sur une longue durée), et le texte non-justifié qui évite les "rivières" blanches entre mots qui posent problème notamment aux dyslexiques.

Pour le guide visuel, je vous ai mis 2 options. "Lignes colorées" qui applique un gradient cosinus caractère par caractère sur chaque ligne, avec une palette noir-bleu-noir-rouge qui alterne et permet à l'œil de suivre naturellement la progression du texte.

Et ce que j'ai appelé Saccade que j'ai gardé en option, marqué d'un badge orange "Pref ⚠" parce que la science dit que ça sert pas à grand chose, mais que si vous aimez visuellement, bah au moins c'est dispo !

Et puis il y a le mode audio (TTS) qui dépend de la qualité des voix installées sur votre système. Y'a pas d'IA là dedans, donc ça peut donner une lecture robotique sur certains OS. Une fois activé, ça apparaît en haut des articles avec une estimation de durée. Ça utilise la Web Speech API native de votre navigateur, donc zéro service externe une fois encore et ça respecte la voix système que vous avez configurée.

À ma connaissance, je suis le seul à proposer ce niveau de personnalisation pour l'accessibilité. N'oubliez pas qu'au delà de la démarche, l'accessibilité numérique est devenu une obligation légale en Europe avec l' European Accessibility Act qui s'applique depuis juin 2025 (Qui en a entendu parlé ? Pas grand monde je pense).

En tout cas, si je peux me permettre ce luxe de bosser sur des trucs qui ne rapportent pas un kopeck mais qui rendent le site plus agréable et plus accessible, c'est uniquement grâce à mes Patreons .

Alors un énorme merci à eux.

pstop - Le vrai htop natif pour Windows

Par : Korben ✨
12 mai 2026 à 07:49

Y'a des gens trop habitués à Linux, qui tapent htop par réflexe alors que sous Windows, la commande ne fait rien. Pour que ça fonctionne, faut installer WSL, configurer un sous-système Linux entier, et tout ça juste pour surveiller quelques processus... C'est un peu overkill comme on dit.

Mais heureusement, pstop arrive pour corriger ça !

Pstop est un moniteur système TUI pour Windows PowerShell, écrit en Rust, qui pèse ~1 Mo et qui tourne nativement sur Windows 10 et 11 sans aucune dépendance !

L'interface s'organise en quatre onglets : l'onglet principal avec CPU, mémoire et liste des processus, puis des onglets dédiés aux I/O disque, au réseau et au GPU. Le CPU y est affiché par cœur avec un code couleur pour distinguer le temps user, système et virtuel ce qui est très pratique je trouve pour repérer d'un coup d'œil si c'est votre code ou le kernel qui vous pompe les ressources.

Le réseau s'adapte en auto-scaling à la bande passante utilisée, et la liste des processus peut s'afficher en arborescence pour voir les relations parent/enfant. Par contre, l'onglet GPU sera vide si vous n'avez pas de GPU dédié.

Côté navigation, y'a F3 pour chercher, F4 pour filtrer, F2 pour changer de thème, F9 ou k pour tuer un processus....etc. Bref, les raccourcis F1-F10 suivent la convention htop, donc si vous avez la mémoire musculaire d'htop sous Linux, vous retrouverez vos marques immédiatement. Bon après, les vim keys sont disponibles aussi en option si vous êtes des geudins.

Pour l'installer :

# Via winget (le plus simple)
winget install marlocarlo.pstop

# Via cargo
cargo install pstop

Le projet est développé par le même dev derrière psmux, le tmux natif pour Windows que j'avais déjà couvert ici. Finalement, on dirait bien qu'il a décidé de rééquiper le terminal Windows en profondeur, et franchement c'est une bonne nouvelle pour tous ceux qui bossent sous PowerShell !

Par contre, pstop est Windows-only, x86_64 uniquement pour l'instant (pas d'ARM) et si vous cherchez un outil cross-platform pour Linux ou macOS, btop++ reste bien sûr l'option de référence.

C'est sous licence MIT, en open source sur GitHub !

GitHub commit spoofing - Quand n'importe qui peut être Linus

Par : Korben ✨
10 mai 2026 à 16:06

Vous avez confiance dans le nom qui est affiché à côté d'un commit GitHub ?

Bah vous pouvez arrêter tout de suite car le chercheur Shani Lavi a documenté il y a quelques années ce que les devs Git sérieux savent depuis longtemps : N'importe qui peut publier un commit avec n'importe quelle identité, et bien sûr, on peut systématiquement compter sur GitHub pour lier ce commit au profil correspondant sans broncher.

Allez, petite démonstration récente... Sur le repo no-as-a-service , il y a par exemple un commit signé "torvalds" qui ajoute un témoignage humoristique de Linus Torvalds dans le README. L'avatar de Linus s'affiche, et GitHub considère ça comme un commit parfaitement valide. Sauf que Linus n'a évidemment jamais touché ce projet humoristique qui est une petite API qui sort des excuses créatives pour dire "non".

Et ce qui est fou, c'est que vous pouvez faire pareil en dix secondes, et c'est ce qu'on va faire ensemble. Mais avant...

Pourquoi Git laisse passer ça

Git, à la base, c'est un système distribué. Quand vous faites un commit, votre client local prend alors deux infos dans votre config : user.name et user.email. Ces deux champs sont libres, et jamais validés côté client. Vous pouvez donc écrire ce que vous voulez dedans, et Git s'en fiche.

Côté GitHub, l'attribution se fait par l'email. Le service regarde alors l'email présent dans les métadonnées du commit, le compare aux emails enregistrés sur les comptes, et affiche le profil + l'avatar Gravatar correspondant. En fait, il n'y a aucune vérification que la personne qui a poussé le commit possède réellement cette adresse email.

Du coup, n'importe qui qui connaît votre email public (et il est public si vous avez déjà commit en clair sur un repo) peut publier des commits avec votre identité affichée.

Étape 1 : Reproduire le spoofing (à but pédagogique évidemment)

Avant de paniquer, faisons l'exercice nous-mêmes pour bien comprendre. Dans un repo de test que vous contrôlez :

# 1. Visualiser un commit cible pour récupérer name + email
git log --format='%an <%ae>' | head -3

# 2. Reconfigurer Git avec une fausse identité
git config --global --replace-all user.name "Linus Torvalds"
git config --global --replace-all user.email "[email protected]"

# 3. Vérifier la config
git config --global --list | grep user

# 4. Faire un commit normal
echo "Hello from Linus" >> README.md
git add README.md
git commit -m "Important kernel fix"

# 5. Pousser sur votre repo
git push origin main

Allez voir le commit sur GitHub. Vous verrez l'avatar de Linus, son nom cliquable qui mène vers son profil, et surtout aucun avertissement. Pas de mot de passe demandé ni de token compromis... non, non, non, c'est juste une config locale modifiée.

Et si quelqu'un fait un fork de votre repo, ou si un mainteneur peu attentif valide un PR sur cette base, l'illusion est complète.

Étape 2 : Repérer un commit douteux

Pour ça, le badge Verified reste l'indicateur le plus utile. À côté du SHA d'un commit, GitHub affiche surtout une étiquette verte "Verified" si le commit est cryptographiquement signé avec une clé GPG ou SSH enregistrée sur le compte de l'auteur. Sinon, y'a rien du tout (par défaut). Attention quand même, l'absence de badge ne veut pas dire qu'un commit est malveillant mais juste qu'on ne peut pas garantir qui l'a écrit.

Par exemple, si vous regardez le commit e6b4218 sur no-as-a-service, vous remarquerez l'absence totale de badge. C'est le signal mais il faut encore savoir le chercher car par défaut, GitHub n'affiche AUCUN avertissement pour les commits non signés. C'est surtout ça le problème...

Étape 3 : Signer vos commits avec SSH

Alors pour vous protéger de ça, ça commence chez vous. Plus simple que GPG, la signature SSH utilise une clé que vous avez probablement déjà. Générez une clé Ed25519 si ce n'est pas fait :

ssh-keygen -t ed25519 -C "[email protected]"

Configurez Git pour signer automatiquement avec cette clé :

git config --global gpg.format ssh
git config --global user.signingkey ~/.ssh/id_ed25519.pub
git config --global commit.gpgsign true
git config --global tag.gpgsign true

Dernière étape, ajoutez votre clé publique sur GitHub dans Settings → SSH and GPG keys (1), mais cette fois en sélectionnant le type Signing Key (pas Authentication Key, c'est différent) (2). Vos prochains commits afficheront le badge "Verified" en vert.

Si vous préférez GPG, le principe est identique avec gpg.format gpg et une clé GPG. Pour le détail GPG complet, j'avais déjà couvert le sujet dans le tuto sur Thunderbird et GPG .

Étape 4 : Activer Vigilant Mode

Là, on passe à l'offensive. Vigilant Mode (3) force GitHub à afficher un statut sur tous vos commits. Les signés deviennent "Verified", les non signés deviennent "Unverified" en gros et bien visible. Plus de zone grise comme ça.

Direction même endroit dans Settings → SSH and GPG keys → Vigilant mode → Flag unsigned commits as unverified. Cochez la case. À partir de là, n'importe quel commit que GitHub vous attribue (via votre email vérifié) sans signature sera affiché comme "Unverified", ce qui rend le spoofing beaucoup plus difficile à dissimuler. Petite limite par contre, ça ne protège que votre propre identité et pas celle des contributeurs qui n'ont pas activé le mode.

La position de GitHub (et pourquoi je trouve ça discutable)

GitHub considère ce comportement comme un non-bug. Sur leur page bug bounty, l'usurpation par email Git est explicitement listée comme ineligible. Leur argument c'est que ça ne donne pas accès aux repos ni de privilèges supplémentaires, donc ce n'est pas une faille au sens strict.

Sauf que dans la vraie vie, l'identité affichée influence les décisions. Par exemple, un mainteneur qui voit un PR signé d'un contributeur connu va l'examiner avec moins de paranoïa, un journaliste qui couvre un scandale va citer "le commit de tel développeur" sans vérifier la signature, et combiné à d'autres vecteurs, ça peut devenir redoutable ! Je pense surtout aux attaques supply chain récentes type Shai-Hulud où une fois le code piégé, l'attribution Git aide à le faire passer pour légitime.

Bref, dire "ce n'est pas un bug" parce qu'il faut un autre vecteur derrière, c'est un peu facile, je trouve. Voilà, donc ne comptez pas sur Github pour vous défendre et signez vos commits, activez Vigilant Mode, et apprenez à vos collègues et amis dev à vérifier le badge "Verified" avant de merger quoi que ce soit en venant d'un inconnu... même si c'est ce bon cher Linus qui propose de réécrire le kernel en Rust avec systemd intégré ^^.

Source

Dirty Frag - L'exploit kernel Linux qui donne un accès root sur toutes les distros

Par : Korben ✨
8 mai 2026 à 10:47

Le chercheur en sécu Hyunwoo Kim vient de lâcher dans la nature Dirty Frag, un nouvel exploit kernel Linux qui enchaîne 2 vulnérabilités pour obtenir un accès root sur n'importe quelle distro majeure, avec un taux de réussite proche de 100%.

L'embargo devait tenir encore quelques semaines. Il n'a pas tenu.

Et problème (et c'est pour ça que je vous en parle) c'est que ça marche du feu de dieu, et que personne n'a encore de patch disponible !! Alerte rouge donc !!

La lignée "Dirty" a donc maintenant quatre membres. Dirty COW en 2016, avec ses 9 ans de présence silencieuse dans le kernel avant d'être découvert, Dirty Pipe en 2022, Copy Fail dont je vous parlais il y a tout juste 8 jours, découvert par une IA. Et maintenant Dirty Frag, qui s'appuie sur le même principe que Copy Fail tout en contournant sa mitigation connue.

Alors comment ça marche ?

Le concept du truc c'est l'abus d'un mécanisme tout à fait légitime du kernel Linux : splice(). Cette fonction permet de faire circuler des données entre deux descripteurs de fichiers sans les copier en mémoire. C'est très utile, très performant, mais dans certaines configurations, c'est surtout très catastrophique.

Dirty Frag exploite les modules réseau d'IPsec (ESP) et du protocole RxRPC, ainsi quand un attaquant utilise splice() pour faire passer une page du cache mémoire (disons, /usr/bin/su) dans un buffer réseau, le kernel effectue son chiffrement directement sur cette page en RAM et sans faire de copie.

Résultat, les premiers octets de /usr/bin/su en mémoire sont remplacés par du code malveillant qui ouvre un shell root. Un simple appel à su ensuite, et l'attaquant est root.

Deux CVE sont impliqués dans la chaîne. CVE-2026-43284 qui concerne les modules esp4 et esp6 et qui a été patchée depuis hier et CVE-2026-43500 qui concerne rxrpc et pour celle-ci, y'a aucun patch actuellement à l'heure où j'écris ces lignes.

Le fait de chainer les 2 exploits permet à chacun de combler les angles morts de l'autre. C'est un peu technique mais en gros, la variante ESP requiert les droits de créer un namespace utilisateur, ce qu'Ubuntu peut bloquer via AppArmor. Alors que de son côté, la variante RxRPC ne nécessite pas ce privilège, mais le module rxrpc.ko n'est chargé par défaut que sur... Ubuntu. Du coup, une fois combinés, ils couvrent toutes les distros majeures sans exception.

Hyunwoo Kim a reporté la faille aux mainteneurs des distribs le 30 avril dernier, avec un accord de divulgation coordonnée via [email protected]. Mais un tiers extérieur (appelons le "connard" ^^) a brisé l'embargo hier, d'où la publication immédiate du PoC, avec l'accord des maintainers, pour éviter qu'un exploit silencieux circule sans que personne soit prévenu.

Les versions testées et confirmées vulnérables sont donc Ubuntu 24.04.4, RHEL 10.1, openSUSE Tumbleweed, CentOS Stream 10, AlmaLinux 10, Fedora 44.

En gros, si vous avez un kernel compilé depuis début 2017, vous êtes dans le scope.

Tester avec Lima sur macOS

Si vous voulez reproduire ça dans un environnement contrôlé, l'idée c'est de lancer une Ubuntu 24.04 avec le kernel non patché et de faire comme ceci :

# Cloner, compiler, et lancer
git clone https://github.com/V4bel/dirtyfrag.git
cd dirtyfrag
sudo apt install gcc -y && gcc -O0 -Wall -o exp exp.c -lutil && ./exp

Et si tout se passe bien, vous obtenez alors un shell root sans faire paniquer le kernel comme chez moi ici :

Après le test, le page cache est contaminé donc avant de faire quoi que ce soit d'autre, faut le nettoyer. :

echo 3 > /proc/sys/vm/drop_caches

Ou plus simple, redémarrez la machine car la modification est uniquement en RAM, donc un reboot permet de repartir de zéro.

Alors que faire ?

Hé bien, comme aucun patch n'est disponible pour la plupart des distros à l'heure où j'écris ces lignes, vous pouvez vous mettre en boule et pleurer. Sauf si vous êtes sous AlmaLinux car eux ont déjà poussé des kernels corrigés. Après vous pouvez aussi sécher vos larmes si vous êtes sur une autre distro, et suivre cette remédiation qui vous prendra trente secondes :

sh -c "printf 'install esp4 /bin/false\ninstall esp6 /bin/false\ninstall rxrpc /bin/false\n' > /etc/modprobe.d/dirtyfrag.conf; rmmod esp4 esp6 rxrpc 2>/dev/null; echo 3 > /proc/sys/vm/drop_caches; true"

Cette commande fait trois choses : elle blackliste les modules vulnérables pour qu'ils ne se rechargent pas au prochain boot, elle les décharge s'ils sont actifs, et elle nettoie le page cache au cas où il serait déjà corrompu.

Après c'est tranquille à faire car esp4, esp6 et rxrpc ne sont pas des modules que la plupart des machines desktop utilisent au quotidien. Les désactiver n'a donc aucun impact visible sur 99% des setups. Mais un serveur qui fait du VPN IPsec en mode transport ESP, lui, sera affecté...

En tout cas, surveillez ça de près car une fois que votre distro sortira le patch, faudra mettre à jour et rebooter.

Source : https://github.com/V4bel/dirtyfrag

VS Code signe vos commits avec Copilot, même sans Copilot

Par : Korben ✨
6 mai 2026 à 10:16

Si vous avez committé du code depuis VS Code depuis mi-avril, allez tout de suite vérifier vos messages de commit car vous avez peut-être un nouveau co-auteur que vous n'avez jamais embauché.

En effet, Microsoft a discrètement basculé le réglage par défaut de l'éditeur pour ajouter Co-authored-by: Copilot &lt;[email protected]> à des commits que VS Code considérait à tort comme contenant des contributions IA, même quand vous n'avez pas utilisé Copilot, et même quand vous avez explicitement désactivé toutes les fonctions IA.

Quelle lose, hein ? La Product Manager Courtney Webster a poussé cette fameuse pull request #310226 des enfers le 15 avril dernier sans aucune description, et le dev dmitrivMS l'a mergée tranquillou le lendemain.

Et le résultat de tout ce bordel, vous pouvez le lire dans la PR #310226 qui a explosé sur GitHub : 372 pouces baissés contre 2 levés, 30 réactions "confused", et des dizaines de commentaires furieux.

L' issue de suivi #314311 , ouverte ensuite par dmitrivMS pour faire son point public, a elle aussi reçu un torrent de réactions virulentes. Tu m'étonnes, ils font vraiment n'importe quoi...

Maintenant si vous êtes dans ce cas, vous pouvez neutraliser ça immédiatement, ajoutez dans votre settings.json :

"git.addAICoAuthor": "off"

C'est le seul réglage qui marche vraiment, parce que dans la version buguée même chat.disableAIFeatures à true n'arrêtait pas le soucis. Et pour votre historique déjà bien pollué, un git rebase -i ou un git filter-branch permettra de virer les contributeurs parasites dans vos derniers commits. Mais après bonne chance si vos commits sont déjà sur des PR mergées chez d'autres. Là c'est mort...

Ce que les devs reprochent à Microsoft, c'est pas vraiment d'avoir créé l'option (elle existait depuis VS Code 1.110 en opt-in tranquille). Non, le vrai problème c'est surtout ce qu'il y a derrière cette vilaine Pull Request... 2 fichiers touchés, le change de "default", absolument AUCUNE description, une seule review d'approbation toute nulle, et hop, c'est mergé OKLM.

Pour un changement qui touche les messages de commit de plusieurs millions de devs, ça sent quand même la décision unilatérale prise à l'arrache entre 2 portes...

Et puis surtout il y a le bug #313064 qui a fait basculer l'histoire de la simple polémique à la grosse colère communautaire.

En effet, la nouvelle valeur par défaut "all" attribuait à Copilot des complétions qui ne venaient PAS de Copilot. Un dev explique par exemple avoir tapé son code à la main, vérifié son message de commit, supprimé toute suggestion Copilot, écrit le sien à la main... et a finalement retrouvé quand même Co-authored-by: Copilot dans le git log final.

Et comme le mode "je ne veux pas d'IA" n'était pas plus respecté, l'IA s'auto-créditait quand même sur tout et n'importe quoi.

Côté communauté, le ton est monté très vite. Sur le fil GitHub, y'en a un qui écrit que, je cite, "C'est pas une régression, c'est de la fraude. On ne peut pas s'attribuer un travail qu'on n'a pas fait." et un autre dev parle de "vandalisme" pur.

Windows Central a même sorti un titre choc : "This could cost people their jobs", parce que dans les boites en fintech ou sur du code soumis à audit, faire passer du code humain pour de l'IA-assisté peut coller un fail d'audit et faire péter des contrats. Ah bah ouais, j'avoue que je n'y avais pas pensé...

Heureusement, Microsoft a fini par bouger puisque dans VS Code 1.118 , le default est finalement repassé de "all" à "chatAndAgent", déjà moins agressif. Et dans la PR #313931 , dmitrivMS a remis le default à "off" pour la version 1.119, dont le déploiement public commence justement aujourd'hui.

Bien sûr, la Product Manager a fait son mea culpa public, en reconnaissant, je cite que "la manière dont c'était implémenté et déployé n'a pas atteint le niveau de correction attendu", ce qui, dans la langue corporate, veut dire "on est des branleurs, déso, bisous".

Maintenant ce qui revient souvent dans les commentaires, c'est que Claude Code et Codex CLI font la même chose par défaut quand ils committent, sauf que la différence, c'est que ces agents committent quand C'EST EUX qui ont écrit le code, donc le co-author est tout a fait légitime.

VS Code, lui, modifiait des commits écrits à la main par des humains donc c'est pas du tout le même problème. Et pour le coup, sur Codex CLI la mention reste aussi désactivable via une option alors que chez Claude Code même si c'est pareil, l'opt-out n'est pas toujours très respecté d'après les retours que j'ai pu lire.

En tout cas, ce loupé arrive dans un climat déjà tendu puisque Microsoft pousse Copilot dans Windows, dans Notepad, dans Office, et même jusque dans l'écosystème Apple via une extension Xcode , dans tous les coins, et beaucoup de devs commencent à voir chaque nouveauté MS à travers ce prisme. La théorie du "ils gonflent les KPI Copilot pour les boards et les analystes" de plus en plus crédible et comme personne n'aime se sentir transformé en stat marketing, tout le monde commence à se barrer des outils et services Microsoft.

Maintenant, si vous voulez vraiment vous protéger des prochains coups foireux de M$, je vous propose d'abord de basculer sur VSCodium ou Zed , deux éditeurs sans télémétrie ni AI imposée. Et ensuite, déménager vos repos chez Codeberg ou Forgejo en suivant la procédure de migration que je vous donne dans cet article Patreon, comme ça même si Microsoft fait n'importe quoi côté éditeur, votre code n'est plus chez eux côté forge.

À voir maintenant si Microsoft tient ses promesses sur le consentement explicite avant toute mention d'agent IA, ou si on rejouera ce film encore et encore tous les 6 mois sur une autre fonctionnalité.

Comment activer l'adblock natif de Firefox 149 ?

Par : Korben ✨
30 avril 2026 à 13:55

Vincent en avait parlé il y a peu : Firefox 149 embarque maintenant discrètement adblock-rust , le moteur Adblock de Brave, désactivé par défaut et contrôlé uniquement par deux prefs dans about:config.

A l'origine, je vous avais parlé d'une extension mais après analyse plus approfondie, celle-ci n'est pas vraiment nécessaire. Y'a juste deux valeurs à coller dans about:config et le moteur tourne. Merci donc à François qui m'a indiqué cette méthode directe.

Étape 1 : Activer le moteur

Dans la barre d'adresse, tapez about:config et acceptez l'avertissement. Cherchez la préférence suivante :

privacy.trackingprotection.content.protection.enabled

Passez-la à true. Si elle n'existe pas encore dans votre profil, créez-la : clic droit quelque part dans la liste → Nouveau → Booléen.

Étape 2 : Charger vos listes de filtres

Cherchez ensuite cette seconde préférence :

privacy.trackingprotection.content.protection.test_list_urls

Collez-y la valeur suivante, toutes les URLs séparées par des pipes :

https://easylist.to/easylist/easylist.txt|https://easylist.to/easylist/easyprivacy.txt|https://secure.fanboy.co.nz/fanboy-cookiemonster.txt|https://raw.githubusercontent.com/uBlockOrigin/uAssets/refs/heads/master/filters/annoyances-others.txt|https://raw.githubusercontent.com/AdguardTeam/FiltersRegistry/master/filters/filter_2_Base/filter.txt|https://raw.githubusercontent.com/uBlockOrigin/uAssets/refs/heads/master/filters/filters.txt|https://raw.githubusercontent.com/AdguardTeam/FiltersRegistry/master/filters/filter_3_Spyware/filter.txt|https://pgl.yoyo.org/adservers/serverlist.php?hostformat=adblockplus&showintro=1&mimetype=plaintext

Ça couvre 8 listes : EasyList, EasyPrivacy, Fanboy Cookie Monster, uBO Annoyances (les 4 de base), plus uBO Filters, AdGuard Base, AdGuard Tracking et Peter Lowe. Si vous voulez un profil plus léger, vous pouvez supprimer des URLs avant de coller.

Petite note : le préfixe test_ dans le nom de cette pref indique que la feature est encore expérimentale dans Firefox 149. Les noms peuvent donc changer dans une version future.

Désactiver ETP (optionnel mais recommandé)

La protection contre le pistage intégrée de Firefox (ETP) et adblock-rust filtrent chacun de leur côté. C'est redondant. Pour désactiver ETP, allez dans about:preferences → Confidentialité et sécurité → Protection renforcée contre le pistage → cochez "Personnalisée", puis décochez tout ce que vous voulez confier à adblock-rust.

Limitation actuelle : adblock-rust ne gère pas encore les sélecteurs CSS de masquage d'éléments, les règles ## du style uBlock Origin. Brave les supporte déjà, Firefox devrait suivre. En attendant, quelques pubs que uBO cachait via CSS resteront visibles.

Pour le contexte technique complet sur l'intégration de ce moteur, allez lire l'article de Vincent sur l'arrivée discrète d'adblock-rust dans Firefox 149 . Et si vous voulez un guide général pour bloquer les pubs et trackers sur le web , c'est par là.

Merci à François pour la méthode et la liste de filtres !

Copy Fail - Une IA trouve la faille Linux que personne n'a vue

Par : Korben ✨
30 avril 2026 à 09:27

732 octets, c'est tout ce qu'il faut pour passer de simple utilisateur à root sur n'importe quel Linux non patché compilé depuis 2017, soit la quasi-totalité des kernels. Cette faille béante s'appelle Copy Fail (CVE-2026-31431), elle a été dénichée par Taeyang Lee de chez Theori avec leur outil d'audit IA Xint Code. Et comme elle vient d'être divulguée hier sur la liste oss-security et qu'en plus, ils ont fait un joli petit site qui explique tout comme ça fonctionne, je vais essayer de tout vous expliquer !

La faille elle-même est moche mais surtout, c'est un agent IA qui l'a sorti en une heure environ. C'est un bug que la communauté kernel a laissé passer durant près de 9 ans et qui se trouve dans le sous-système crypto.

En gros, le noyau Linux expose une interface réseau spéciale pour accéder aux opérations de chiffrement depuis un programme normal, sans droits particuliers.

Et depuis 2017, une optimisation dans ce mécanisme a créé une situation bizarre : un fichier en lecture seule sur le disque, disons un binaire système, peut se retrouver dans la zone de sortie d'une opération de chiffrement .C'est la zone que votre programme a le droit de modifier.

Il suffit alors d'enchaîner un appel système particulier (splice) pour écrire 4 octets au bon endroit, on répète ça en boucle, et on modifie progressivement un binaire système de votre choix comme par exemple /usr/bin/su.

Et voilà, vous êtes root !

Maintenant, si vous administrez un serveur, le plus propre reste de patcher le kernel via votre distro. En attendant le patch, la mitigation dépend de comment votre distro a compilé le module algif_aead, et là il y a deux situations bien distinctes.

Cas 1 - Distros où le module est chargeable dynamiquement (Ubuntu, Debian, Arch, etc.). Vous le bloquez avec :

echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif-aead.conf
rmmod algif_aead

Cas 2 - Distros entreprise où le module est compilé en dur dans le kernel (RHEL, Rocky Linux, AlmaLinux, Oracle Linux, SUSE Enterprise...). Là, attention au piège : lsmod | grep algif_aead ne renvoie rien, mais ça ne signifie PAS que c'est désactivé. Le code est embarqué directement dans le vmlinuz, donc rmmod et la blacklist via /etc/modprobe.d/ sont sans effet (vous aurez "Module algif_aead is builtin"). La vraie mitigation passe par la kernel command line au boot :

sudo grubby --update-kernel=ALL --args="initcall_blacklist=algif_aead_init"
sudo reboot

Ça empêche l'init_call du module de tourner au démarrage. Vous vérifiez ensuite avec cat /proc/cmdline que le paramètre est bien pris en compte. Si vous voulez aller encore plus loin, il est aussi possible de bloquer toute la surface d'attaque AF_ALG via seccomp au niveau de chaque service exposé.

Le PoC est également trouvable. C'est un script Python (Python 3.10+ obligatoire pour os.splice) capable de faire tomber Ubuntu 24.04 LTS, Amazon Linux 2023, RHEL 10.1 et SUSE 16 avec exactement le même code.

Dans une première version j'avais écrit que SELinux en mode enforcing par défaut bloquait l'exploit sur Fedora et RHEL. C'est inexact, et je remercie le lecteur qui m'a fait corriger. La policy SELinux par défaut de Fedora et RHEL autorise les contextes utilisateurs à créer des sockets AF_ALG, et l'exploit écrit directement dans le page cache kernel sans déclencher les hooks LSM file-based.

Donc SELinux enforcing ne bloque pas Copy Fail tel que livré par défaut. Le seul OS immune via SELinux est GrapheneOS , qui durcit la policy AOSP en réservant AF_ALG au seul process dumpstate. Ceux qui veulent tester sans Python peuvent aussi regarder du côté du port C indépendant , un exécutable statique de 1,7 Ko sans dépendance externe.

Les comparaisons avec Dirty COW et Dirty Pipe pleuvent, sauf que là où Dirty COW exigeait du timing précis et où Dirty Pipe demandait une manipulation spécifique du pipe-buffer, Copy Fail tape tout pareil sur 4 distribs majeures sans rien avoir à ajuster.

Et côté sévérité officielle, c'est du 7.8/10 donc c'est assez élevé !

Pour trouver cette faille, Xint Code, l'agent IA de Theori, n'a pas tâtonné à l'aveugle. Taeyang Lee lui a surtout glissé un prompt très précis qui lui demandait d'examiner tous les chemins accessibles depuis un programme utilisateur dans le sous-système crypto, en insistant sur le fait que splice() peut faire atterrir des fichiers en lecture seule dans des zones modifiables.

Une heure plus tard, Copy Fail sortait comme trouvaille critique ! Theori précise que le même scan a aussi remonté d'autres vulnérabilités encore sous embargo. Brrrrrr.... Tremblez simples mortel !

Ouais donc ouais, l'IA n'a pas remplacé l'expertise humaine, mais elle l'a démultipliée. Car Lee savait où regarder, et Xint Code a juste fait ce qu'il aurait fait mais en plus rapide ! C'est pas magique donc... Mais ça fait gagner du temps !

L'exploit est dispo ici sur le GitHub de Theori et côté impact, c'est costaud sur les hôtes multi-users et tout ce qui est environnements partagés. Je pense aux conteneurs Docker, aux clusters Kubernetes, aux pipelines CI/CD...etc.

Après si y'a que vous qui avez accès à votre serveur, c'est un peu moins critique car il faut forcément un accès local pour l'exploiter. C'est la même logique de chaînage que BlueHammer côté Windows , sauf qu'ici la marche jusqu'à root est encore plus petite.

Comment tester le PoC sur une machine de test ?

Si vous avez une VM sous Ubuntu 22.04 non patchée (kernel 5.15.x), voilà exactement ce qui se passe, testé en conditions réelles. Ne faites ça que sur une machine dont vous êtes propriétaire et où vous avez l'autorisation explicite.

Étape 1 - Cloner le PoC et vérifier le hash

manu@ubuntu:~$ git clone https://github.com/theori-io/copy-fail-CVE-2026-31431
Cloning into 'copy-fail-CVE-2026-31431'...
remote: Enumerating objects: 9, done.
Resolving deltas: 100% (1/1), done.

manu@ubuntu:~$ cd copy-fail-CVE-2026-31431 && sha256sum copy_fail_exp.py
a567d09b15f6e4440e70c9f2aa8edec8ed59f53301952df05c719aa3911687f9 copy_fail_exp.py

manu@ubuntu:~/copy-fail-CVE-2026-31431$ id
uid=1000(manu) gid=1000(manu) groups=1000(manu) ← utilisateur normal, pas root

Theori ne publie pas de hash officiel dans leur README, mais le SHA256 ci-dessus est celui du PoC tel qu'il est actuellement sur le repo. Si votre hash diffère, ne lancez pas le script.

Étape 2 - Lancer l'exploit

manu@ubuntu:~/copy-fail-CVE-2026-31431$ python3 copy_fail_exp.py

# L'exploit écrit 4 octets à la fois dans le page cache de /usr/bin/su
# via l'interface AF_ALG du kernel (authencesn + splice)
# Aucune race condition, aucun timing précis requis.

Mot de passe :

Le script utilise AF_ALG (l'interface crypto du kernel) combiné à splice() pour écrire un shellcode de 160 octets directement dans le page cache de /usr/bin/su, sans jamais toucher le disque. Il remplace ensuite le binaire patché pour exécuter un shell root.

Étape 3 - Shell root obtenu

root@ubuntu:~# id
uid=0(root) gid=1000(manu) groups=1000(manu)

root@ubuntu:~# whoami
root

root@ubuntu:~# uname -r
5.15.0-143-generic

# Kernel 5.15 vulnérable confirmé - Ubuntu 22.04 non patché

Notez le uid=0(root) alors qu'on est parti d'un uid=1000 sans aucun mot de passe, aucune race condition, aucun timing à ajuster. Brutal.

Étape 4 - Accès aux fichiers root-only

root@ubuntu:~# cat /etc/shadow | head -3
root:*:20271:0:99999:7:::
daemon:*:20271:0:99999:7:::
bin:*:20271:0:99999:7:::

root@ubuntu:~# cat /etc/passwd | grep root
root:x:0:0:root:/root:/bin/bash

/etc/shadow est normalement illisible pour un utilisateur standard. Là, avec notre PoC en Python et zéro interaction supplémentaire, on y accède comme si de rien n'était. Sur un serveur multi-utilisateurs, c'est game over pour tous les comptes présents.

Sur un système patché, le script échoue proprement à l'étape 2 avec un message d'erreur. C'est aussi simple que ça pour vérifier votre exposition.

Bref, mettez à jour vos kernels ou désactivez le module fautif rapidement !

Source

Nullroom - Un chat P2P qui s'efface en 15 minutes

Par : Korben ✨
23 avril 2026 à 08:00

Utiliser une conversation WhatsApp pour partager un mot de passe à un pote, c'est un peu comme écrire son code de carte bleue au marker dans des chiottes publics. Sauf que les messages, eux, restent des années dans l'historique car y'a personne qui viendra nettoyer ça. Heureusement, Nullroom vient régler ce genre de bricole en mode radical, avec un chat P2P chiffré qui s'autodétruit au bout d'un quart d'heure, sans avoir à vous créer de compte et sans laisser de trace côté serveur.

Alors comment ça fonctionne ? Hé bien vous cliquez sur "CREATE SECURE ROOM", un lien apparaît, vous le balancez à votre correspondant par le canal de votre choix (Signal, SMS, pigeon voyageur...etc), et hop, une session chiffrée s'ouvre entre vos deux navigateurs. Vous pouvez alors discuter, échanger éventuellement des fichier (jusqu'à 16 Mo max en beta), et après 15 minutes, la room s'évaporera. Purement et simplement et aucun serveur n'aura vu passer vos échanges (mis à par quelques bouts de métadonnées pour établir la connexion).

Sous le capot, y'a un truc crypto assez chouette qui est une clé de chiffrement AES-GCM 256 bits, générée côté client via l'API Web Crypto du navigateur, qui vit dans le fragment de l'URL (c'est la partie qui vient après le #). Et comme les navigateurs n'envoient JAMAIS ce fragment au serveur, vu que c'est un standard HTTP, vous êtes tranquille.

Et voilà comment votre clé de session n'existe que chez vous et chez votre correspondant. Le serveur de Nullroom ne la voit pas, même pas une microseconde. C'est le même trick que celui qu'utilise PrivateBin pour les snippets chiffrés, mais appliqué à du chat en direct.

Le flux de données, lui, passe en direct d'un navigateur à l'autre via WebRTC et le serveur ne sert comme je vous le disais plus haut, qu'à la poignée de main initiale.

Ensuite, les messages et les fichiers circulent en peer-to-peer, relayés via les serveurs TURN de Cloudflare quand votre NAT coince. Donc au pire, Cloudflare voit passer du trafic 100% chiffré, et pas le contenu en clair. Les logs serveur sont également désactivés sur les chemins des rooms, et les UUIDs de sessions vivent dans un Redis totalement volatile qui est nettoyé au bout de ces fameuses 15 minutes.

Niveau limites, une room c'est deux personnes max donc si vous cherchiez un remplaçant à Signal ou à Briar, ce n'est pas le bon outil. C'est juste une messagerie pour un échange ponctuel entre 2 personnes.

Et l'équipe ou l'entreprise derrière n'est pas affichée côté site (pas de mentions légales, pas de juridiction précisée), donc attention ! Ça reste du "faites-vous votre opinion" mais comme le code est open source (licence MIT) sur GitHub vous pouvez quand même l'analyser et monter votre propre infra Nullroom.

Pour le quotidien, c'est un service qui est bien foutu, que ce soit pour un mot de passe à filer à un collègue en télétravail, un lien temporaire à partager pendant une réu, une confidence à un pote qui n'a rien à faire dans les archives iMessage, ou encore un numéro de compte à transmettre vite fait avant que l'autre ne parte en vacances... Tous ces cas d'usage existent et la friction est quasi nulle donc c'est plutôt une bonne approche je trouve.

Voilà, si vous voulez tester le concept d'une conversation qui n'aura jamais eu lieu, filez sur nullroom.io.

OpenCiv3 - Civilization III renaît en open source

Par : Korben
31 mars 2026 à 08:15

Vous vous souvenez de Civilization III ? Hé bien des fans ont décidé de le recréer de zéro en open source avec OpenCiv3 , et franchement ça a de la gueule, vous allez voir !

En fait, leur idée c'était pas juste de cloner le jeu de Sid Meier tel quel, mais plutôt de le réimaginer en corrigeant tous les trucs qui étaient cassés à l'époque, mais aussi en virant les limites arbitraires du moteur original et en poussant le modding aussi loin que possible. En gros, ils nous ont pondu un Civ3 comme il aurait dû être si les développeurs avaient eu le temps de tout finir.

Côté technique, c'est du Godot avec du C#, ça tourne sur Windows, Linux et Mac et c'est sous licence MIT. Du coup vous pouvez forker le truc et en faire votre propre version si ça vous chante.

Après, voilà, on est encore en pré-alpha. La version 0.3 "Dutch" est sortie en décembre dernier, et permet de lancer une partie, explorer la carte, créer des villes et taper sur vos voisins. Mais la fin du jeu n'est pas encore là. Et le truc sympa, c'est que contrairement à d'habitude, le jeu fonctionne en mode standalone avec des graphismes de remplacement, donc pas forcément besoin d'avoir Civ3 installé. Après si vous avez l'édition Conquests ou Complete qui traîne quelque part sur votre disque dur, OpenCiv3 est capable d'importer les graphismes originaux pour un rendu fidèle !

Mais comme vous l'avez compris, le vrai kiff du projet, c'est le modding. Le Civ3 original vous laissait modifier trois bricoles via des fichiers texte, et c'était pas ouf... Mais OpenCiv3, lui, veut ouvrir toutes les portes en changeant les règles de combat, en ajoutant des mécaniques de jeu, en créant des scénarios complets, voire en inventant de toutes pièces de nouvelles civilisations... bref tout est prévu pour être modifiable. Ça rappelle un peu ce qu' UnCiv fait avec Civ V sur Android , sauf que c'est sur PC.

Voilà, c'est encore super jeune mais si vous avez la nostalgie des soirées "encore un tour", ça vaut le coup de garder un œil dessus !

À découvrir ici : OpenCiv3

Un drone sans aucune pièce mobile : la fin des moteurs et des hélices ?

Par : Korben
26 mars 2026 à 11:46

Des chercheurs de l’université Rutgers ont mis au point un concept de drone ornithoptère à état solide. Sans moteur ni engrenages, cet engin utilise la piézoélectricité pour battre des ailes.

Une avancée majeure pour la fiabilité et la miniaturisation des robots volants, même si les matériaux doivent encore progresser.

Imaginez un drone dépourvu de rotors, de pistons ou de roulements. Pas de mécanique qui s'use, pas de bruit de crécelle. C’est le pari de l’équipe d’Onur Bilgen à Rutgers. Ils ont conçu un ornithoptère, un appareil à ailes battantes, totalement "solid-state".

L'absence de pièces en mouvement promet de révolutionner l'aérospatiale en limitant les points de défaillance critiques. C'est une approche imitant la biologie sans ses contraintes mécaniques habituelles.

La piézoélectricité comme muscle artificiel

Pour supprimer la mécanique, les ingénieurs utilisent des Macro Fiber Composites. Ce sont des lamelles piézoélectriques collées sur des ailes en fibre de carbone. 

Lorsqu'une tension électrique est appliquée, le matériau se déforme, forçant l'aile à se courber. Cette structure biphasée permet de contrôler précisément la cambrure pour une efficacité aérodynamique maximale.

L'ensemble fonctionne sans aucun frottement, éliminant le besoin de lubrification ou de maintenance sur les parties mobiles classiques. Cette architecture simplifiée permet une réactivité accrue face aux turbulences de l'air environnant.

Une simulation pour préparer le futur

Si le concept est mathématiquement solide, la réalisation physique se heurte aux limites actuelles de la science des matériaux. Les composants piézoélectriques ne sont pas encore assez performants pour soulever un drone complet de manière autonome.

C'est une feuille de route technologique qui définit les besoins pour la prochaine génération de polymères actifs. L'équipe a donc développé un modèle computationnel complexe pour optimiser le design en attendant que la chimie franchisse un nouveau palier.

Vers des machines robustes et des applications industrielles

L'intérêt est quand même là : moins de pièces signifie mathématiquement moins de pannes potentielles. En supprimant les engrenages, on gagne en légèreté, en discrétion et en robustesse. Cette technologie pourrait aussi s'appliquer aux pales d'éoliennes. En modifiant leur profil en temps réel, on optimise le flux d'air sans ajouter de complexité mécanique lourde, augmentant ainsi l'efficacité énergétique du système.

Bref, vous l’avez compris, c’est une rupture technologique majeure. On passe de la mécanique pure à l’électronique solide, un peu comme pour la transition des disques durs vers les SSD. L'enjeu reste le ratio poids/puissance des polymères. 

Si la recherche aboutit, la maintenance des drones deviendra dérisoire.

Source : TechXplore

DOOM over DNS - 2000 records TXT pour buter des démons

Par : Korben
24 mars 2026 à 07:57

« Can it run DOOM ? » Vous connaissez tous la question je pense. En effet, depuis 1993, le FPS d'id Software a tourné sur à peu près tout ce qui contient un processeur, des calculatrices aux écouteurs en passant par des tests de grossesse. Et là, Adam Rice vient de pousser le délire encore plus loin en stockant et en lançant le jeu entier... via des enregistrements DNS.

Oui, ce bon vieux protocole de plus de 40 ans, conçu à la base pour traduire des noms de domaine en adresses IP (RFC 1035, tout ça). En fait, la magie tient dans le fait que les enregistrements TXT n'ont aucune validation de contenu. Du coup, rien n'empêche d'y coller du texte arbitraire... genre un FPS complet converti en texte via base64. En gros, le DNS devient un stockage clé-valeur distribué mondialement et mis en cache un peu partout. Pas mal comme CDN du pauvre !

Le fichier WAD (les niveaux et assets du jeu, 4 Mo) passe à 1,7 Mo après compression, les DLLs du moteur de 4,4 Mo à 1,2 Mo, et le tout est découpé en 1 966 enregistrements TXT sur une seule zone CloudFlare Pro. Un record spécial contient également les métadonnées de réassemblage (nombre de chunks, hash de vérification).

Ensuite, côté joueur, un script PowerShell de 250 lignes résout les 2 000 requêtes, reconstruit le binaire en mémoire et hop, ça tourne. Les données du jeu ne touchent ainsi jamais le disque, puisque tout reste en mémoire. Le tout chargé en 10 à 20 secondes (PowerShell 7 requis) !

Le truc rigolo, c'est que l'auteur ne connaît pas le C#. C'est Claude (oui, encore cette fichue IA, ahaha) qui s'est tapé le portage en modifiant managed-doom, un port C# du moteur original, pour remplacer les lectures fichier par des flux mémoire et virer toutes les dépendances natives au profit d'appels Win32 directs. L'audio a été sacrifié pour réduire le nombre de records mais bon, on va pas chipoter. Après si vous voulez tester, sachez que ça ne fonctionne que sous Windows car ça repose sur PowerShell, donc pas de version Linux pour l'instant.

D'ailleurs, si le concept vous rappelle quelque chose, c'est normal. Planquer des données dans les enregistrements TXT, c'est en fait une technique bien connue en sécu. J'en parlais déjà avec DNSteal pour exfiltrer des fichiers via DNS , ou avec ces malwares carrément stockés dans les records DNS . Adam Rice le dit lui-même, son projet est parti de l'exploration de techniques d'implants (staging de shellcode via TXT records) sauf qu'au lieu de planquer un trojan, il y a planqué ce FPS de +33 ans. C'est quand même plus sympa !

À vrai dire, avant d'en arriver là, il a d'abord fait un proof of concept avec une image de canard (va savoir pourquoi). Encoder la photo en base64, découper en chunks, uploader via l'API CloudFlare, reconstruire de l'autre côté avec un hash identique et ça a marché du premier coup. Par contre pour la vidéo, oubliez, un MP4 de 1 Go ferait 670 000 enregistrements.

Voilà et tout ça pour 20 dollars par mois (le prix de la zone CloudFlare Pro). Donc si DOOM sur des écouteurs vous avait déjà fait sourire, attendez qu'un taré le fasse tourner avec que des paquets ICMP. Bah quoi ??

Bref, le code est dispo sur GitHub et le DNS a clairement pas fini de nous surprendre.

Source

Peon Ping - Donnez de la voix à vos agents IA

Par : Korben
19 mars 2026 à 14:12

"Something need doing ?" Si cette réplique vous file un frisson nostalgique, alors vous allez adorer Peon Ping !!

Il s'agit d'un outil CLI open source qui joue des voix de personnages de jeux vidéo quand vos agents IA ont besoin de votre attention. Vous lancez Claude Code, vous passez sur autre chose, et le moment venu, un peon de Warcraft III vous gueule "Work complete!" quand c'est terminé.

Concrètement, ce truc s'intercale via des hooks entre vous et votre IDE, comme ça, chaque événement (démarrage de session, fin de tâche, erreur, demande de permission) déclenche une réplique différente. Du coup le peon dit "Something need doing?" quand l'agent attend un input, et "I can't do that!" quand y'a une erreur.

Ça marche avec Claude Code, Cursor, Codex, et une dizaine d'autres outils (Kiro, Windsurf, Copilot, Gemini CLI, OpenCode, Antigravity, Rovo Dev CLI...), tout ça livré avec plus de 160 packs sonores dans 14 langues, de GLaDOS à StarCraft en passant par Zelda, Red Alert 2 ou Team Fortress 2.

Installation

Deux options principales. La plus propre, via Homebrew :

brew install PeonPing/tap/peon-ping

Sinon, le bon vieux curl :

curl -fsSL https://raw.githubusercontent.com/PeonPing/peon-ping/main/install.sh | bash

Et pour Windows, y'a un script PowerShell :

Invoke-WebRequest -Uri "https://raw.githubusercontent.com/PeonPing/peon-ping/main/install.ps1" -UseBasicParsing | Invoke-Expression

Par défaut, l'installeur télécharge 5 packs (Warcraft, StarCraft, Portal). Si vous voulez tout d'un coup :

curl -fsSL https://raw.githubusercontent.com/PeonPing/peon-ping/main/install.sh | bash -s -- --all

Attention par contre, sous WSL2, il faudra installer ffmpeg au préalable pour lire les formats audio autres que WAV.

Configuration

Une fois installé, lancez le setup :

peon-ping-setup

Ça détectera votre environnement, configurera les hooks et téléchargera les packs sonores en local. Ensuite, dès votre prochaine session Claude Code, vous entendrez un joli "Ready to work?" au démarrage.

Maintenant, si Warcraft c'est pas votre truc et que vous voulez changer de voix, genre passer à GLaDOS (une IA qui vous insulte pendant que vous codez avec une IA... ahahah), ça se fait en une commande :

peon packs use glados

Vous pouvez binder un pack à un dossier spécifique avec peon packs bind glados, comme ça, chaque projet a sa propre ambiance sonore, et si vous êtes du genre à aimer les trucs en français, il y a aussi des packs dans la langue du roi Arthur.

Moi j'en ai rien à foutre, j'installe les packs Age of Empires + Red Alert ou rien !!

Les commandes utiles

Tout passe par la commande peon :

peon status # Vérifier si c'est actif
peon volume 0.7 # Régler le volume
peon pause # Couper le son (réunion...)
peon resume # Remettre le son
peon packs list # Voir les packs installés
peon packs next # Passer au pack suivant
peon preview # Écouter un aperçu

Petit détail bien pensé, le système de "no repeats" fait qu'il ne jouera jamais le même son deux fois de suite dans la même catégorie. Et vous pouvez activer/désactiver chaque catégorie individuellement (greeting, acknowledge, complete, error, annoyed) si y'a des sons qui vous cassent les pieds.

En bonus, le terminal affiche le nom du projet et son statut dans le titre de l'onglet, avec un petit point indicateur quand c'est terminé. De grosses bannières desktop s'afficheront aussi quand un événement se produit, même si vous êtes sur une autre app.

Et si vous bossez en SSH ou dans un devcontainer, y'a un mode relay qui renvoie l'audio sur votre machine locale via peon relay --daemon. Pas mal du tout, hein ?

Le mode Peon Trainer

Maintenant, c'est là que ça part complètement en cacahuète car Peon Ping intègre un mode fitness qui vous rappelle de faire des pompes et des squats pendant que vous codez. L'objectif : 300 reps par jour, rien que ça !!

Dès que vous ouvrez une session, le Peon vous accueille avec un "Pushups first, code second! Zug zug!". Ensuite, toutes les 20 minutes environ, il vous relance. Et si vous ignorez, ça escalade jusqu'à "You sit too long! Peon say do pushups NOW!".

Pour logger vos reps en pleine session de code, pas besoin de quitter le terminal :

peon trainer on # Activer le mode trainer
/peon-ping-log 25 pushups # Logger 25 pompes
/peon-ping-log 30 squats # Logger 30 squats

Quand vous atteignez les 300, le Peon célèbre avec un "THREE HUNDRED! Human strong like orc now!" et vous laisse tranquille pour le reste de la journée. Pas mal comme incentive pour bouger un peu entre deux refactorisations, non ?

Pour ceux qui utilisent Claude Code au quotidien , y'a aussi un serveur MCP intégré qui permet à l'agent de choisir lui-même quel son jouer. L'agent qui communique en répliques de Warcraft... on vit une époque formidable ! Et si vous voulez aller plus loin, Claude Octopus permet carrément d'orchestrer plusieurs IA en parallèle.

D'ailleurs, les plus motivés peuvent carrément créer leurs propres packs via openpeon.com . Le format suit la spec ouverte CESP (Coding Event Sound Pack), comme ça n'importe quel IDE peut l'adopter.

Le Peon Pet

Et le truc le plus mignon du projet c'est ce petit orc animé qui squatte un coin de votre écran. Ce Peon Pet réagit en temps réel aux événements de Claude Code. Il dort quand rien ne se passe, se réveille au démarrage d'une session, tape frénétiquement du clavier quand l'agent bosse, et fait sa danse de la victoire quand la tâche est terminée. C'est du Electron + Three.js, le tout en open source bien sûr.

En résumé, c'est votre Tamagotchi de développeur, sauf qu'au lieu de le nourrir, c'est lui qui vous engueule pour bosser.

Voilà, si checker votre terminal toutes les 30 secondes pour voir si Claude Code a avancé dans sa life, ça vous saoule, c'est le genre de petit outil con mais génial qui change la vie.

Zug zug !

Strix - Fini la galère des caméras IP sans RTSP

Par : Korben
17 mars 2026 à 15:51

Vous avez des vieilles caméras de surveillance chinoises qui prennent la poussière parce qu'il vous est impossible de trouver leur flux vidéo ? Y'a pas de RTSP, y'a pas de doc, y'a juste un pauvre port 80 ouvert et une app Android en Mandarin qui est périmée depuis 2021 ?

JE VIENS VOUS SAUVER LES ZAMIS ! Hé oui, grace à Strix qui est capable de tester 102 787 patterns d'URL en 30 secondes et qui vous sort miraculeusement le bon flux vidéo qui marche, avec la config Frigate prête à être collée.

En fait, le principe est simple. Vous lancez un conteneur Docker, vous entrez l'IP de votre caméra et l'outil bombarde en parallèle toutes les URL connues pour ce type de matos. RTSP sur le port 554, MJPEG sur le 8080, snapshots JPEG sur le 80... et 30 à 60 secondes plus tard, vous avez la liste des flux qui répondent avec résolution, FPS et codec H.264 ou H.265.

L'installation tient en une ligne et l'interface web tourne sur le port 4567. Vous entrez l'IP, le login si besoin, et éventuellement le modèle de la caméra IP pour affiner la recherche. Après, même sans modèle, Strix se débrouille avec les 206 patterns les plus courants (sur les 102 787 de la base complète) + la découverte ONVIF . Du coup ça trouve un flux sur à peu près n'importe quoi, du Dahua au Foscam en passant par les marques fantômes d'AliExpress.

Un autre truc vraiment sympa aussi , c'est la génération de config. Vous collez votre fichier frigate.yml existant, même avec 500 caméras dedans, et l'outil ajoute proprement la 501ème sans rien casser ! Il configure automatiquement le flux HD 1080p pour l'enregistrement et le flux 640x480 pour la détection d'objets, le tout passant par go2rtc . Résultat, la conso CPU de Frigate peut carrément passer de 30% à 8%.

Et surtout, l'histoire derrière est assez dingue. Le dev derrière ce projet avait des vieux NVR chinois de 2016 qu'il voulait connecter à Frigate. Après 2 ans à tester toutes les URL possibles... rien. Snif... Tous les ports fermés sauf le 80. À vrai dire, ces machins ne parlaient même pas un protocole connu. Alors a fini par faire tout ce que fait un vrai bidouilleur quand il est énervé : Sniffer le trafic de l'app Android avec Wireshark !

Et grâce à cela, il a découvert un truc baptisé BUBBLE, tellement obscur que ça n'existe nulle part sur Google ! Cela lui a permis de construire une base de 67 288 modèles issus de 3 636 marques, des Hikvision jusqu'aux trucs sans nom d'AliExpress.

Et quand y'a pas de RTSP du tout (ce qui arrive souvent avec le matos chinois pas cher), l'outil se rabat sur les snapshots JPEG et les convertit en vrai flux vidéo via FFmpeg. C'est pas aussi clean qu'un vrai stream H.264 (et ça saccade un peu à 10 FPS), mais c'est largement suffisant pour de la détection de personnes ou de bagnoles.

Après, sachez le, ça ne marche qu'avec les caméras présentes sur votre réseau local. Les caméras cloud (Blink, Ring, Xiaomi) ne sont pas supportées. Et aussi, comme on n'est jamais trop prudent d'ailleurs, si vous branchez ce genre de vieux matos chinois, mettez-les dans un VLAN isolé sans accès Internet parce que côté sécurité, c'est la fête du slip sur ce genre de matos : Backdoors, mots de passe en clair sur le port 80, appels serveurs en Chine... va savoir ce qu'elles font quand personne ne regarde.

Strix a même tapé dans l'oeil du développeur de Frigate lui-même, qui a invité l'auteur à soumettre une PR officielle pour l'intégrer dans la doc officielle. Hé ben quelle classe ! Ah et y'a aussi un add-on Home Assistant en beta si vous êtes branchés domotique (pas forcément stable, le soft sous Docker reste plus fiable). Strix est écrit en Go, sous licence MIT, y'a une image Docker de 80-90 Mo sur Alpine Linux, avec FFmpeg et FFprobe embarqués, et ça tourne comme un charme sur AMD64 comme sur ARM64 (votre Raspberry Pi 4 suffit).

Bref, allez tester ça, car y'a clairement de quoi sauver pas mal de matos de la poubelle !

GB Recompiled - Vos ROMs Game Boy traduites en C natif

Par : Korben
16 mars 2026 à 12:01

La recompilation statique , je vous en avais parlé avec Zelda 64 et Sonic Unleashed. Le principe, en gros c'est qu'au lieu d'émuler bêtement le processeur et la mémoire d'origine, on traduit tout simplement le code assembleur du jeu directement en C natif. Du coup le jeu tourne nativement sur votre machine, sans couche d'émulation.

Et la bonne nouvelle du jour c'est que cette technique vient de parvenir jusqu'à la Game Boy avec GB Recompiled .

Vous filez à cet outil un fichier .gb et il vous sort OKLM un dossier avec du code C, un CMakeLists.txt et tout ce qu'il faut pour le compiler. Vous lancez cmake puis ninja, et votre vieux Pokemon Bleu tourne nativement sur votre PC plutôt que de passer par un émulateur qui simule le processeur Z80 à chaque frame.

Plutôt chouette non ???

Pour réussir ce tour de force, le recompilateur parse les opcodes Z80 de la cartouche, construit un graphe de contrôle de flux et résout les sauts indirects (genre les tables de jump, le truc qui rend la décompilation galère parce que l'adresse de destination dépend de la valeur d'un registre). Le taux de découverte dépasse alors les 98% même sur des RPGs bien touffus... pas mal pour de l'analyse purement statique !

Côté compatibilité, 7 jeux sont pour le moment validés : Tetris, Pokemon Blue, Donkey Kong Land, Kirby's Dream Land, Zelda Link's Awakening, Castlevania et Super Mario Land.

Par contre, attention, tous les jeux ne passent pas encore. Le runtime embarque un rendu PPU scanline , un système audio 4 canaux et les contrôleurs mémoire MBC1, MBC2, MBC3 et MBC5. Et comme tout ça tourne avec SDL2, du coup ça compile tranquillou sur macOS, Linux et Windows sans broncher !

Y'a aussi des outils de vérification assez bien pensés. Par exemple, un mode différentiel lance le binaire recompilé et un interpréteur Z80 côte à côte, puis compare l'exécution cycle par cycle avec une implémentation de référence. Tant que ça colle, le portage est fidèle !

Et y'a aussi un script Python basé sur PyBoy qui génère des traces d'exécution pour repérer les instructions que l'analyse statique aurait loupées. Voilà, ce que je veux vous dire c'est que c'est pas juste un traducteur tout bête. Y'a vraiment tout un pipeline de tests derrière pour assurer le meilleur portage possible.

Si vous avez suivi les autres projets autour de la portable de Nintendo, comme le GB Interceptor qui espionne le bus mémoire avec un adaptateur USB ou le Game Bub et son FPGA Xilinx, GB Recompiled choisit plutôt l'angle purement logiciel. Là où le FPGA reproduit les circuits et l'émulateur simule le CPU, la recompilation traduit le code source. Ce sont 3 philosophies différentes mais qui ont un seul et même objectif : Faire en sorte que ces jeux ne crèvent pas avec leurs cartouches en plastique gris.

Pour tester chez vous, c'est du classique : un petit terminal, un petit git clone, un cmake, un ninja, et vous passez votre fichier .gb au recompilateur.

git clone https://github.com/arcanite24/gb-recompiled.git
cd gb-recompiled
cmake -G Ninja -B build .
ninja -C build

# Générer le code C depuis la ROM
./build/bin/gbrecomp path/to/game.gb -o output/game

# Compiler la nouvelle version en C
cmake -G Ninja -S output/game -B output/game/build
ninja -C output/game/build

# Optionnel: Baisser ou augmenter le niveau d'optimisation
cmake -S output/game -B output/game/build -DGBRECOMP_GENERATED_OPT_LEVEL=2

# Et on lance !
./output/game/build/game

Voilà comment avec juste quelques commandes, votre bonne vieille cartouche GB peut enfin tourner nativement sur votre laptop. Notez que le support Game Boy Color est dans les tuyaux, ainsi qu'un build Android.

Le projet est franchement actif et ça sent très bon pour la suite !

ISS Tracker - Suivez la station spatiale sur un Raspberry Pi

Par : Korben
16 mars 2026 à 07:52

La Station Spatiale Internationale file à 28 000 km/h au-dessus de nos têtes, et y'a un mec qui a décidé de suivre ça en direct depuis un petit écran 3.5 pouces posé sur un Raspberry Pi 3b. Le projet s'appelle ISS Tracker , c'est open source, et franchement... c'est plutôt classe !

Concrètement, l'écran affiche un globe terrestre en 3D qui tourne, avec la position de l'ISS en temps réel. Latitude, longitude, altitude, vitesse, et même la région survolée. En fait, la position est récupérée toutes les 30 secondes via des APIs gratuites et interpolée entre les mises à jour pour que le rendu reste fluide. Vous branchez le câble micro-USB, vous attendez le boot, et ça tourne tout seul !

L'ISS Tracker monté au mur, façade alu et globe 3D sur l'écran

Côté matos, c'est sobre : un Pi 3b (ou plus récent), un écran LCD Waveshare 3.5 pouces qui se clipse directement sur le GPIO, et un interrupteur à bascule optionnel. Celui-là, c'est la petite touche sympa effet NASA. En un coup de "switch", vous passez ainsi du tracking orbital à la liste des astronautes actuellement en orbite, groupés par vaisseau. Du coup vous savez qui est là-haut en ce moment, et dans quel engin (merci Lorenper).

Mais le truc vraiment cool dans ce projet, c'est le boîtier. Filbot a imprimé la structure en 3D avec du PLA renforcé carbone (les fichiers STL sont sur MakerWorld ), puis a fraisé la façade en aluminium sur sa CNC personnelle. Plus d'une heure d'usinage pour une plaque (les vrais machinistes pleurent ^^) et la cerise sur la Lune (non c'est pas une hallucination IA, c'est juste que je suis fou) c'est qu'il a séché la peinture dans la chambre chauffée de son imprimante 3D. L'IA qu'il a utilisée pour le guider lui a dit que c'était du génie... on va pas la contredire.

Pour la touche finale, une décalcomanie en transfert à l'eau avec le logo NASA "worm" et des données inventées pour faire officiel + le garde-interrupteur en alu style aviation qui protège le switch, c'est purement cosmétique mais ça envoie grave !

Le globe 3D en action avec la position de l'ISS et la télémétrie

Sous le capot, le globe est affiché sous forme de 144 frames pré-calculées avec Cartopy . Au premier lancement, comptez quelques minutes sur un Pi 3b pour générer le cache et ensuite ça démarre en 3 secondes. Par contre, attention, il faut augmenter le buffer SPI à 307 200 octets parce que le défaut de 4 Ko est beaucoup trop petit pour pousser des frames complètes sur l'écran. Oubliez pas ça, sinon l'affichage ne marchera pas.

D'ailleurs, si vous voulez que l'engin tourne H24, y'a un service systemd fourni avec watchdog, auto-restart et limitation mémoire à 250 Mo. Notez que le fichier theme.toml permet de changer toutes les couleurs, polices et le layout sans toucher au code. Ambiance cockpit Boeing par défaut (labels verts, valeurs blanches sur fond noir), mais vous pouvez faire du cyan fluo si ça vous chante et que vous avez des goûts de chiottes ^^.

Les APIs utilisées sont toutes gratuites et sans clé : Where the ISS at? en principal, Open Notify en fallback. Pas d'inscription, pas de token, ça marche direct ! Et si vous aimez les projets Raspberry Pi dans cet esprit, vous pouvez jeter un œil au rover martien à imprimer en 3D ou aux talkies-walkies DIY à base de Pi.

Bref, de quoi kiffer ses soirées à regarder un point lumineux traverser le globe. C'est plutôt méditatif !

Source

Basalt - Vos coffres Obsidian direct dans le terminal

Par : Korben
16 mars 2026 à 06:41

Un TUI en Rust pour gérer vos coffres Obsidian sans quitter le terminal c'est ce que propose Basalt qui détecte automatiquement vos vaults, affiche le markdown avec un rendu visuel, et depuis la v0.12.3, y'a même un mode vim intégré. Le tout sans avoir besoin que la vraie app tourne en arrière-plan !

Et c'est là toute la différence avec le CLI officiel d'Obsidian dont je vous parlais il y a quelques jours. Car le CLI a besoin de l'app qui tourne via un socket local. Basalt, lui, lit en fait vos fichiers .md directement sur le disque. Du coup, ça marche en SSH, sur un serveur headless, ou sur n'importe quelle machine où vous avez juste vos fichiers markdown. C'est carrément pratique !

L'installation se fait en une commande :

cargo install basalt-tui

Au premier lancement, l'outil va alors chercher automatiquement vos coffres en lisant le fichier de config (sous macOS c'est dans ~/Library/Application Support/obsidian/obsidian.json). Comme ça, hop hop, vos vaults apparaissent, vous naviguez au clavier et vous passez d'un coffre à l'autre avec Ctrl+G. Vous pouvez aussi passer par aqua ou télécharger un binaire pré-compilé sur la page releases si vous préférez.

Basalt en action, navigation dans un vault Obsidian

Vous ouvrez alors une note et le markdown s'affiche avec un rendu visuel : les # disparaissent au profit d'indicateurs plus colorés, les blocs de code ont un fond distinct, les callouts > [!NOTE] sont reconnus, et les wiki-links [[Ma Note]] sont également parsés. D'ailleurs, quand vous renommez une note avec r, tous les wiki-links qui pointent vers elle sont mis à jour automatiquement dans tout le vault. Pas de search-replace à la main, ça fait toujours du bien !

Après faut pas s'attendre à un clone complet non plus. Y'a pas de rendu pour le gras, l'italique ou les tableaux. Pas de recherche dans les notes. Pas de graph view. L'éditeur intégré est expérimental (pas d'undo, pas de copier-coller, pas de sélection). C'est assumé de ce que j'ai pu voir, car le projet se présente comme un compagnon minimaliste.

Et c'est justement pour ça que le mode vim est le bienvenu, à vrai dire. Vous pouvez activer ça dans votre config TOML comme ceci :

vim_mode = true

Le mode vim en action dans Basalt

Et là vous avez hjkl pour naviguer, gg / G pour sauter en haut et en bas, w / b pour les mots, i pour l'insertion. C'est pas forcément aussi complet qu'un vrai vim, mais franchement, pour parcourir vos notes c'est agréable.

Le vrai kiff, c'est la config TOML qui permet de lancer un éditeur externe sur la note en cours :

[global]
key_bindings = [
 { key = "ctrl+alt+e", command = "exec:vi %note_path" },
]

Du coup, le workflow devient : Basalt pour naviguer et lire et un raccourci clavier pour ouvrir dans vim (ou n'importe quel éditeur) quand vous voulez éditer sérieusement. C'est le genre de combo qui fonctionne bien quand vous bossez en full terminal .

Le projet est sous licence MIT, écrit en Rust avec ratatui, et tourne sur Linux, macOS et Windows. Tiens, la v0.12.3 ajoute aussi la création de notes et dossiers directement depuis l'explorateur avec n et N... Ça avance plutôt vite comme projet !!

Voilà, si vos notes vivent dans des coffres et que le terminal c'est votre habitat naturel, Basalt fera bien le boulot.

sudo-rs - 40 ans de silence cassés par des astérisques

Par : Korben
27 février 2026 à 08:33

Si vous utilisez Ubuntu 26.04, vous avez peut-être remarqué un truc bizarre dernièrement en tapant votre mot de passe sudo... Ouiiiiii, y'a des petites étoiles qui apparaissent !! Pas de panique, c'est "normal". Enfin, c'est nouveau...

En effet, sudo-rs, la réécriture en Rust de la bonne vieille commande sudo, a décidé d'activer pwfeedback par défaut. En gros, quand vous faites un sudo apt install bidule, au lieu du trou noir habituel, vous voyez maintenant des ***** défiler pendant la saisie du mot de passe. C'est un changement qui casse une convention vieille de 40 ans... et ça, forcément, ça fait du bruit !

Pour rappel, Ubuntu a basculé sur sudo-rs (le remplaçant en Rust du bon vieux sudo en C) depuis la version 25.10. Ça fait partie du même mouvement de réécriture des outils système en Rust, comme les coreutils dont je vous avais parlé. Et la 26.04 vient de "cherry-picker" comme on dit, un patch upstream qui active le feedback visuel par défaut.

Un bug report sur Launchpad ( #2142721 ) est bien sûr arrivé direct, en mode vénère genre "*ÇA FAIT DES DÉCENNIES qu'on n'affiche pas la longueur du mot de passe pour empêcher le shoulder surfing ! C'est quoi ce bordel !!?? *"

Et la réponse des devs : Won't Fix. Circulez les relous !

En fait, leur argument c'est que le bénéfice sécurité est "infinitésimal". Parce que bon, votre mot de passe sudo c'est le même que celui de votre session (celui que vous tapez à l'écran de login, devant tout le monde). Et le bruit des touches trahit déjà la longueur de toute façon. Du coup, ils ont préféré régler le problème UX qui paume les débutants depuis le début des années 80.

D'ailleurs, en 2013 je vous expliquais comment activer ces étoiles manuellement avec sudo visudo (ça date de fou !!) et maintenant c'est l'inverse, faut expliquer comment les virer ! Linux Mint avait d'ailleurs déjà sauté le pas de son côté depuis un moment.

Perso, le truc qui me gonfle c'est pour les tutos vidéo. Quand vous faites un screencast, les astérisques révèlent la longueur de votre mot de passe à tous vos spectateurs. Du coup faut aller reparamétrer chaque machine avant de filmer ou faire du masquage en post prod. C'est pas la fin du monde, mais bon, la flemme...

Alors pour désactiver ces jolies zétoiles :

sudo visudo

Et ajoutez cette ligne à la fin de /etc/sudoers :

Defaults !pwfeedback

Sauvegardez (Ctrl+X sous nano), et c'est réglé. Attention, ne touchez à rien d'autre dans ce fichier, une erreur de typo et sudo ne marchera plus. Grâce à cette manip, ce sera retour au trou noir ! Youpi !

Source

Firefox 148 - Un seul bouton pour virer toute l'IA

Par : Korben
26 février 2026 à 14:18

Vous voulez désactiver l'IA dans votre navigateur ? Bonne chance pour les couillons qui utilisent Chrome... faut passer par 5 réglages planqués dans chrome://settings et chrome://flags, tripatouiller des flags expérimentaux, bref, c'est un vrai parcours du combattant. Firefox 148, de son côté, a eu une idée folle : Mettre UN bouton. Hop, terminé.

Mozilla vient en effet de sortir la version 148 de Firefox et le gros morceau, c'est la section "Contrôles de l'IA" dans les paramètres (about:preferences#ai). Un seul toggle " Bloquer les améliorations IA " et paf, toutes les fonctions IA du navigateur sont coupées d'un coup. Traductions automatiques, regroupement d'onglets, previews de liens, texte alternatif des PDF, et même les chatbots de la barre latérale (ChatGPT, Claude, Gemini, Copilot, Le Chat). Tout dégage !

C'est le top pour les fragilous qui refusent le progrès ^^... Roohh ça va je blague ! Et le vrai intérêt du truc, c'est que ça verrouille les futures fonctions IA aussi. Du coup, si Mozilla ajoute de nouvelles features IA plus tard, elles seront automatiquement bloquées. Pas besoin de revenir fouiller dans les paramètres à chaque update. D'ailleurs, toutes les fonctions IA sont déjà désactivées par défaut... faut donc les activer manuellement si vous en voulez.

Et attention, ça ne bloque pas les extensions tierces qui intègrent leur propre IA, genre les "résumeurs" de page ou les assistants de rédaction. Le toggle, lui, garantit uniquement que les fonctions NATIVES restent coupées quoi qu'il arrive.

Et maintenant comparons avec la concurrence, parce que c'est là que ça pique les yeux.

Comme je vous le disais dans mon intro trollesque, chez Google, désactiver l'IA dans Chrome (et ses dérivés) relève carrément du sport extrême. Faut couper Gemini (chrome://settings/ai), désactiver le mode IA et Help Me Write (chrome://flags), bloquer la recherche IA dans l'historique, et pour les AI Overviews... ben y'a pas vraiment de bouton.

Brave fait un peu mieux heureusement ! Leur assistant Leo est opt-in par défaut, tourne dans un profil isolé qui ne peut pas accéder à vos données de navigation, et applique une politique zéro log. Même leur mode "agentic AI" en Nightly est désactivé de base. C'est propre, mais y'a pas de kill switch global comme Firefox. Du coup, si vous voulez la solution radicale plutôt que du cas par cas, Firefox gagne.

Et pour ceux qui se demandent pourquoi Firefox investit dans l'IA tout en permettant de la couper... en fait, Mozilla joue la carte de la transparence. Les modèles locaux utilisés par Firefox sont supprimés du disque quand vous désactivez les fonctions et tout est vérifiable dans about:processes si vous êtes du genre parano.

Au passage, cette version corrige également une quarantaine de failles de sécurité et embarque la Sanitizer API , ce qui est une première parmi les navigateurs. Et si vous êtes encore sur Firefox ESR, ça ne marchera pas... faudra donc attendre la prochaine ESR pour en profiter.

Voilà, si l'IA dans votre navigateur vous gave, vous savez où aller -> Firefox, tout simplement.

Source

FFmpeg - Comment normaliser le volume audio proprement avec loudnorm

Par : Korben
17 février 2026 à 09:25

Vous avez déjà remarqué comment le volume varie d'une vidéo à l'autre sur YouTube, ou pire, comment certaines pubs sont 10 fois plus fortes que le contenu ? Bah c'est parce que tout le monde n'utilise pas la même norme de volume. Et si vous produisez du contenu audio/vidéo, c'est le genre de détail qui fait la différence entre un truc amateur et un rendu pro.

La bonne nouvelle, c'est que FFmpeg intègre déjà un filtre qui s'appelle loudnorm et qui gère tout ça automatiquement. La norme utilisée, c'est le LUFS (Loudness Units Full Scale), qui est devenue le standard de l'industrie, et YouTube, Spotify, les TV... tout le monde utilise ça maintenant pour mesurer et normaliser le volume audio.

D'ailleurs, si vous débutez complètement avec cet outil, je vous conseille de jeter un œil à mon guide FFmpeg pour les nuls pour bien piger les bases de la ligne de commande.

Allez, c'est partiii ! Temps estimé : 2-5 minutes par fichier (selon la méthode choisie)

Mais, avant de se lancer dans les commandes, un petit point sur les paramètres qu'on va manipuler. Le filtre loudnorm utilise trois valeurs principales. D'abord I (Integrated loudness), c'est le volume moyen global mesuré en LUFS. La valeur standard pour le streaming, c'est -16 LUFS pour YouTube et Spotify, ou -23 LUFS pour la diffusion broadcast. Ensuite TP (True Peak), le niveau maximal que le signal ne doit jamais dépasser. On met généralement -1.5 dB pour avoir une marge de sécurité. Et enfin LRA (Loudness Range), qui définit la plage dynamique autorisée, généralement autour de 11 dB.

Méthode 1 : Normalisation simple (single-pass)

C'est la méthode la plus rapide, parfaite pour du traitement à la volée :

ffmpeg -i entree.wav -af loudnorm=I=-16:TP=-1.5:LRA=11 -ar 48000 sortie.wav

Pourquoi ces valeurs : -16 LUFS c'est le standard YouTube/Spotify, -1.5 dB de true peak évite le clipping, et 11 dB de range dynamique garde un son naturel.

Le truc c'est que cette méthode fait une analyse en temps réel et ajuste à la volée. C'est bien, mais pas parfait. Pour un résultat vraiment précis, y'a mieux.

Méthode 2 : Normalisation en deux passes (dual-pass)

Cette méthode analyse d'abord le fichier complet, puis applique les corrections exactes. C'est plus long mais beaucoup plus précis.

Première passe, on analyse :

ffmpeg -i entree.wav -af loudnorm=I=-16:TP=-1.5:LRA=11:print_format=json -f null -

FFmpeg va vous sortir un bloc JSON avec les mesures du fichier (input_i, input_tp, input_lra, input_thresh). Notez-les bien, car vous allez les injecter dans la deuxième passe.

Deuxième passe, on applique avec les valeurs mesurées (remplacez les chiffres par ceux obtenus à l'étape précédente) :

ffmpeg -i entree.wav -af loudnorm=I=-16:TP=-1.5:LRA=11:measured_I=-24.35:measured_TP=-2.15:measured_LRA=8.54:measured_thresh=-35.21:offset=0:linear=true -ar 48000 sortie.wav

Pourquoi cette méthode ? En fait, en passant les valeurs mesurées, FFmpeg sait exactement de combien ajuster. L'option linear=true force une normalisation linéaire plutôt que dynamique, ce qui préserve mieux la dynamique originale.

Pour les fichiers vidéo

Le principe est le même, on ajoute juste -c:v copy pour garder la vidéo intacte sans la ré-encoder :

ffmpeg -i video.mp4 -c:v copy -af loudnorm=I=-16:TP=-1.5:LRA=11 -ar 48000 video_normalise.mp4

D'ailleurs, pour ceux qui veulent automatiser ça à l'extrême, j'avais parlé de FFmpegfs , un système de fichiers qui transcode automatiquement ce que vous déposez dessus. C'est pratique si vous avez une grosse bibliothèque à gérer.

Traitement par lots avec ffmpeg-normalize

Si vous avez plein de fichiers à traiter, y'a un outil Python qui automatise la méthode dual-pass :

pip install ffmpeg-normalize
ffmpeg-normalize *.wav -o output_folder/ -c:a pcm_s16le

Cet outil fait automatiquement les deux passes et supporte le traitement parallèle. Pratique pour normaliser une bibliothèque entière.

Et en cas de problème ?

Erreur "No such filter: loudnorm" : Votre version de FFmpeg est trop ancienne (il faut la 3.1 minimum). Mettez à jour votre binaire.

Le son est distordu après normalisation : Le fichier source était probablement déjà saturé. Essayez de baisser le target (-18 LUFS au lieu de -16) ou augmentez le headroom du true peak (-2 dB au lieu de -1.5).

Voilà, maintenant vous n'avez plus d'excuse pour avoir des niveaux audio qui varient dans tous les sens. Le LUFS c'est le standard, FFmpeg gère ça nativement, et ça prend 30 secondes.

Vos auditeurs vous remercieront.

Source

❌
❌