Vue normale

Il y a de nouveaux articles disponibles, cliquez pour rafraîchir la page.
À partir d’avant-hierinformatique général
  • ✇Korben
  • GitHub désactive 73 dépôts Microsoft en 105 secondes pour stopper le ver Miasma
    GitHub a désactivé 73 dépôts appartenant à Microsoft en l'espace de 105 secondes, le temps de couper la propagation d'un ver baptisé Miasma. Un ver, vous le savez, c'est ce genre de logiciel malveillant qui se recopie tout seul d'un projet à l'autre, sans la moindre intervention humaine. Celui-là s'attaque directement aux développeurs, et plus précisément à leurs outils. Tout est parti du dépôt Azure/durabletask. Un compte de contributeur compromis y a poussé un commit piégé, qui déposait au pas

GitHub désactive 73 dépôts Microsoft en 105 secondes pour stopper le ver Miasma

9 juin 2026 à 18:21

GitHub a désactivé 73 dépôts appartenant à Microsoft en l'espace de 105 secondes, le temps de couper la propagation d'un ver baptisé Miasma.

Un ver, vous le savez, c'est ce genre de logiciel malveillant qui se recopie tout seul d'un projet à l'autre, sans la moindre intervention humaine. Celui-là s'attaque directement aux développeurs, et plus précisément à leurs outils.

Tout est parti du dépôt Azure/durabletask. Un compte de contributeur compromis y a poussé un commit piégé, qui déposait au passage quelques fichiers de configuration. Anodin, en apparence.

Sauf que ces fichiers déclenchaient une exécution de code à distance, autrement dit l'attaquant faisait tourner son propre code sur votre machine, dès l'instant où vous ouvriez le dépôt dans un éditeur. Et pas n'importe lesquels : les assistants de codage dopés à l'IA étaient explicitement visés, Claude Code, Gemini CLI et Cursor en tête. Objectif, siphonner les secrets d'accès au cloud et les configurations des outils de développement, surtout sous Linux.

La purge a frappé quatre organisations GitHub de Microsoft d'un coup : toute l'org Azure Functions, l'ensemble de la famille Durable Task, et une série d'applications-exemples destinées à l'IA.

Problème, parmi les dépôts désactivés se trouvait Azure/functions-action, une brique que des milliers de projets appellent dans leurs chaînes d'automatisation, celles qui compilent et déploient le code sans intervention manuelle. Du coup, dès que functions-action@v1 a cessé de répondre, des pipelines entiers se sont effondrés en cascade, bien au-delà des serveurs de Microsoft.

Ce n'est pas la première sortie de Miasma. Le 19 mai, le ver visait déjà le paquet durabletask sur PyPI, le dépôt public où les développeurs Python piochent leurs briques de code : trois versions vérolées y ont été publiées en 35 minutes. Le 3 juin, c'est plus de 50 paquets npm, l'équivalent côté JavaScript, qui passaient à la moulinette.

Le retour sur durabletask interroge. Pour Ashish Kurmi, directeur technique de la société de sécurité StepSecurity, les jetons d'accès du compte développeur déjà compromis lors de l'attaque sur PyPI n'avaient visiblement pas tous été révoqués. La même porte est restée grande ouverte.

Côté filiation, l'éditeur de sécurité Snyk décrit Miasma comme un descendant de Mini Shai Hulud, un ver revendiqué par le groupe cybercriminel TeamPCP, qui a ensuite gentiment publié son code en open source. Microsoft, de son côté, n'a pas répondu aux sollicitations de la presse.

Bref, un seul commit, et c'est tout un pan de l'infrastructure des développeurs qui tremble.

Source : The Register

  • ✇Korben
  • Un développeur de malware oublie son propre token GitHub dans le code
    Voilà qui est rigolo. Un développeur malveillant a essayé de voler les fichiers sensibles des utilisateurs de Claude (l'assistant IA d'Anthropic, concurrent d'OpenAI sur les modèles de langage) en uploadant un package npm piégé. Sauf que dans son code, il a laissé son propre token d'authentification GitHub privé. Les chercheurs n'ont eu qu'à le récupérer pour remonter jusqu'à lui. Le package s'appelait mouse5212-super-formatter. Il se présentait comme un utilitaire interne de synchronisation de

Un développeur de malware oublie son propre token GitHub dans le code

28 mai 2026 à 14:51

Voilà qui est rigolo. Un développeur malveillant a essayé de voler les fichiers sensibles des utilisateurs de Claude (l'assistant IA d'Anthropic, concurrent d'OpenAI sur les modèles de langage) en uploadant un package npm piégé.

Sauf que dans son code, il a laissé son propre token d'authentification GitHub privé. Les chercheurs n'ont eu qu'à le récupérer pour remonter jusqu'à lui.

Le package s'appelait mouse5212-super-formatter. Il se présentait comme un utilitaire interne de synchronisation de déploiement, mais en pratique, il scannait le répertoire local de l'utilisateur, encodait tous les fichiers en base64 (un format texte qui permet de transporter des données binaires), puis les uploadait sur un dépôt GitHub contrôlé par l'attaquant via l'API Contents.

La cible : les fichiers laissés par Claude Code (la version en ligne de commande de l'assistant IA d'Anthropic) sur le système, qui peuvent contenir des clés API, des tokens, ou des bouts de code propriétaire.

Le package a fait 676 téléchargements avant d'être supprimé par npm (le registre de packages JavaScript le plus utilisé au monde). C'est limité, mais pas anecdotique. 

Le compte GitHub utilisé pour la campagne a été créé le 26 mai 2026, soit quelques heures seulement avant la première version malveillante. Une opération préparée à la va-vite donc.

La bourde monumentale, c'est donc ce token GitHub privé hardcodé dans le code en fallback, au cas où la variable d'environnement ne soit pas définie.

Du coup, les chercheurs d'OX Security (une boîte spécialisée dans la sécurité des dépendances open-source) ont pu accéder directement au dépôt de l'attaquant, lister tous les fichiers volés, et confirmer l'ampleur de l'opération. C'est le genre d'erreur qu'on pardonne à un débutant sur un projet perso. Pas à quelqu'un qui essaie de monter une campagne d'exfiltration.

Les chercheurs notent aussi que le code a tout l'air d'avoir été pondu par une IA un peu foireuse. Variables mal nommées, structure approximative, gestion d'erreurs incohérente. Bref, du "slop" (terme utilisé pour qualifier les productions IA bâclées) avec toutes les négligences que ça implique. Et ce n'est probablement qu'un avant-goût. Avec la généralisation des assistants IA pour coder, n'importe qui peut désormais bricoler un malware fonctionnel sans rien connaître au développement. Et faire des erreurs de débutant en passant.

En tout cas, ça reste comique. Un attaquant piégé par son propre token. Bonne vanne.

Source : The Hacker News

  • ✇Korben
  • Ce kit de phishing ouvre les comptes Microsoft 365 sans voler le mot de passe
    Voler un mot de passe ? C'est presque devenu accessoire. Le FBI a lancé une alerte sur Kali365, un kit de piratage qui s'introduit dans les comptes Microsoft 365 d'une entreprise sans jamais avoir besoin du mot de passe, ni du fameux code de la double authentification. La protection que beaucoup imaginent solide ne sert plus à grand-chose ici. Hélas. Kali365 n'est pas un virus classique. C'est ce qu'on appelle un kit de phishing en location : un service clé en main, vendu un peu comme un abonnem

Ce kit de phishing ouvre les comptes Microsoft 365 sans voler le mot de passe

22 mai 2026 à 15:55

Voler un mot de passe ? C'est presque devenu accessoire. Le FBI a lancé une alerte sur Kali365, un kit de piratage qui s'introduit dans les comptes Microsoft 365 d'une entreprise sans jamais avoir besoin du mot de passe, ni du fameux code de la double authentification.

La protection que beaucoup imaginent solide ne sert plus à grand-chose ici. Hélas.

Kali365 n'est pas un virus classique. C'est ce qu'on appelle un kit de phishing en location : un service clé en main, vendu un peu comme un abonnement à un logiciel, sauf qu'il sert à pirater. Repéré depuis avril et distribué via la messagerie Telegram, il permet à n'importe quel apprenti pirate de lancer une campagne sans compétences techniques particulières. Le kit fournit les emails piégés rédigés par une IA, des modèles de campagne tout prêts, et même un tableau de bord pour suivre ses victimes en temps réel, la totale donc.

Cette méthode porte un nom, le device code phishing, et elle est redoutable de simplicité. La victime reçoit un email qui imite un service de partage de documents, avec un petit code et une consigne : aller sur une page Microsoft pour rentrer le code. Sauf que cette page-là est la vraie page de Microsoft, du coup zéro méfiance.

Rien à signaler du côté de l'antivirus, rien de suspect dans l'adresse du site. La personne entre le code en toute confiance. Et là, sans s'en rendre compte, elle vient d'autoriser l'appareil du pirate à se connecter à son compte.

À partir de là, l'attaquant récupère un jeton d'accès, ce que le jargon appelle un token OAuth. C'est un laissez-passer numérique : une fois qu'on l'a, plus besoin du mot de passe ni d'un nouveau code pour entrer.

Avec ce jeton, le pirate conserve un accès continu à la boîte mail Outlook, à la messagerie Teams et au stockage OneDrive de sa victime. Et comme il n'a jamais touché au mot de passe, le réinitialiser en urgence ne bloque même pas l'intrus.

Le procédé n'a rien de marginal. Sur des campagnes de ce genre, des chercheurs en sécurité ont compté des centaines de comptes piégés chaque jour, avec une nette préférence pour les profils liés à la paie et à la comptabilité, là où l'argent circule le plus.

Le FBI conseille aux entreprises de carrément désactiver ce mode de connexion par code dans les réglages d'administration de Microsoft. Encore faut-il que les services informatiques prennent le temps de s'en occuper.

Source : The Register

  • ✇Korben
  • Fabriquer un circuit imprimé sans aucun logiciel, juste avec un marqueur
    Un bricoleur connu sous le pseudo ALTco a fabriqué un circuit imprimé sans toucher au moindre logiciel. Pas de conception sur ordinateur, pas de commande envoyée à une usine. Juste un marqueur, une plaque de cuivre et un bain chimique. Rien d'autre. La méthode date d'avant l'informatique, et elle fonctionne toujours aussi bien. Le circuit imprimé, c'est cette plaque qu'on trouve dans absolument tous les appareils électroniques : sur sa surface courent de fines pistes de cuivre qui relient les co

Fabriquer un circuit imprimé sans aucun logiciel, juste avec un marqueur

22 mai 2026 à 13:18

Un bricoleur connu sous le pseudo ALTco a fabriqué un circuit imprimé sans toucher au moindre logiciel. Pas de conception sur ordinateur, pas de commande envoyée à une usine. Juste un marqueur, une plaque de cuivre et un bain chimique. Rien d'autre.

La méthode date d'avant l'informatique, et elle fonctionne toujours aussi bien.

Le circuit imprimé, c'est cette plaque qu'on trouve dans absolument tous les appareils électroniques : sur sa surface courent de fines pistes de cuivre qui relient les composants entre eux.

Aujourd'hui, on les dessine sur un logiciel spécialisé, le logiciel EDA (conception électronique assistée par ordinateur), avant de transmettre le fichier à un fabricant qui se charge du reste. ALTco a tout simplement zappé cette étape.

Sa méthode tient en quelques gestes. Il part d'une plaque de cuivre brut, qu'il nettoie soigneusement pour que l'encre accroche bien. Puis il dessine directement les pistes du circuit à la main, au marqueur permanent.

La plaque part ensuite tremper plusieurs minutes dans un bain de perchlorure de fer, un produit chimique qui ronge le cuivre. Le marqueur, lui, protège le cuivre qu'il recouvre, et tout le reste finit dissous. Il ne reste plus qu'à rincer à l'eau puis à l'alcool pour effacer le marqueur, et le circuit apparaît.

Avant d'arriver à ce résultat propre, ALTco a pas mal tâtonné. Il a testé différents marqueurs et peintures censés résister à la gravure, et même des produits gravants faits maison, avant de revenir au perchlorure de fer, le grand classique du genre.

Le circuit qui sort de tout ça n'est pas un gadget de démonstration : c'est un petit contrôleur de ventilateur, qui pilotera un absorbeur de fumée pour ses séances de soudure.

On peut se demander pourquoi s'embêter avec ça, alors qu'une plaque propre coûte quelques euros chez un fabricant.

Pour une petite carte unique, faite chez soi en une après-midi, ça évite d'attendre une livraison et de passer par une commande minimum par exemple. Et puis il y a le plaisir de fabriquer soi-même, du début à la fin.

Le plus étonnant arrive à la fin. Un tracé fait main peut être électriquement meilleur qu'un tracé parfait. Les pistes dessinées au marqueur forment des courbes douces, là où un logiciel génère souvent des angles bien nets. Or ces angles renvoient une partie du signal électrique vers l'arrière, un peu comme un écho qui rebondit.

Les courbes, elles, laissent le signal filer sans accroc. Sur des circuits rapides, ça change vraiment quelque chose.

Bref, une méthode lente, salissante et imprécise. Mais voir un circuit naître d'un marqueur et d'un bac de liquide, c'est quand même autre chose qu'un produit expédié en usine.

Source : Huckster.io

  • ✇Korben
  • Les clés API Google encore en vie même après leur suppression
    Vous supprimez une clé API Google qui a fuité , et l'interface vous confirme que c'est bien réglé, que la clé ne fonctionne plus. Alors vous commencez à vous détendre en vous disant que vous avez bien fait votre boulot. BAH NAN ! Car vous ne le savez pas, mais cette clé va continuer de fonctionner encore durant 23 minutes. C'est en tout cas ce qu'ont mesuré les chercheurs d'Aikido Security en testant ce truc tout bête de révoquer une clé, puis de taper sur l'API en boucle pour voir quand ça s'ar

Les clés API Google encore en vie même après leur suppression

Par : Korben ✨
22 mai 2026 à 09:43

Vous supprimez une clé API Google qui a fuité , et l'interface vous confirme que c'est bien réglé, que la clé ne fonctionne plus. Alors vous commencez à vous détendre en vous disant que vous avez bien fait votre boulot.

BAH NAN !

Car vous ne le savez pas, mais cette clé va continuer de fonctionner encore durant 23 minutes. C'est en tout cas ce qu'ont mesuré les chercheurs d'Aikido Security en testant ce truc tout bête de révoquer une clé, puis de taper sur l'API en boucle pour voir quand ça s'arrêtait vraiment.

Et résultat des courses, une clé API classique survit en moyenne 16 minutes après sa suppression, et jusqu'à 23 minutes dans le pire des cas. Cela veut dire que pendant tout ce temps, un attaquant qui a récupéré votre clé peut continuer de l'utiliser peinard. Et vous n'avez aucun moyen de couper plus vite, ni même de savoir quand ça s'arrête pour de bon.

Ce sont les clés API de Schrödinger le bordel... Techniquement comme vous vous en doutez, c'est surtout une histoire de propagation car Google ne tue pas la clé d'un coup sur tous ses serveurs, mais l'info se diffuse petit à petit, et chaque serveur arrête de l'accepter à son rythme. Le souci, c'est que ce délai et largement suffisant par exemple pour vider un bucket pendant que vous pensez que le danger est écarté.

Le plus beau, c'est que Google sait parfaitement faire vite quand il veut puisque les clés de compte de service, elles, sont coupées en 5 secondes. et les clés Gemini récentes en 1 minute. Du coup, ces 16 minutes de moyenne sur les vieilles clés API n'ont rien d'une fatalité technique... c'est juste un choix ! Aikido a bien sûr remonté le problème, et Google a bizarrement classé le ticket en « won't fix », en expliquant que ce délai de propagation était une propriété connue du système, et pas une faille de sécurité.

Donc si vous gérez des clés Google en prod, partez du principe qu'une clé compromise reste exploitable une bonne demi-heure après sa révocation. Et surtout, mettez en place des plafonds de dépenses bien serrés sur votre projet parce que le vrai cauchemar, c'est moins l'accès que la facture qui débarque ensuite. On a déjà vu des devs se prendre des notes à cinq chiffres à cause d'une clé qui traîne, et des utilisateurs Google Cloud facturés par erreur .

Source : Aikido Security

  • ✇Korben
  • Créez une passerelle SMS à partir d'un vieux smartphone
    Votre vieux Galaxy S5 qui prend fort la poussière dans un tiroir, mérite mieux je crois ! Un dev, Capcom6 a mis en ligne SMS Gateway for Android , une app Kotlin sous licence Apache 2.0 qui transforme n'importe quel smartphone (Android 5.0+) en passerelle SMS programmable. Cela vous permet de récupérer une API REST pour ensuite envoyer et recevoir vos SMS avec votre propre téléphone et votre propre SIM et ainsi vous passer de services payants équivalents. Il y a 3 modes au choix. Le mode local q

Créez une passerelle SMS à partir d'un vieux smartphone

Par : Korben ✨
21 mai 2026 à 07:01

Votre vieux Galaxy S5 qui prend fort la poussière dans un tiroir, mérite mieux je crois !

Un dev, Capcom6 a mis en ligne SMS Gateway for Android , une app Kotlin sous licence Apache 2.0 qui transforme n'importe quel smartphone (Android 5.0+) en passerelle SMS programmable. Cela vous permet de récupérer une API REST pour ensuite envoyer et recevoir vos SMS avec votre propre téléphone et votre propre SIM et ainsi vous passer de services payants équivalents.

Il y a 3 modes au choix. Le mode local quand l'app lance un serveur HTTP sur le port 8080, accessible depuis votre réseau. Le mode cloud où l'app se connecte au service tiers api.sms-gate.app, ce qui est pratique pour ceux qui ont une IP dynamique ou plusieurs appareils. Et le mode "private server" qui permet d'héberger le backend chez vous, en totale autonomie.

Mais dans tous les cas, les requêtes restent les mêmes à savoir du bon vieux POST JSON avec basic auth.

Et côté fonctionnalités, y'a tout ce qu'il faut. Multi-SIM si votre téléphone est compatible, messages multipart automatiquement découpés pour les SMS longs, suivi de statut en temps réel (sent, delivered, failed), webhooks pour 8 événements différents (sms:received, sms:sent, sms:delivered, sms:data-received, mms:downloaded, system:ping...). Et puis du chiffrement bout-en-bout activé sur le mode cloud, comme ça personne ne peut lire vos messages en clair.

Maintenant vous vous demandez peut-être à quoi ça peut servir ??

Bah je pense à de l'envoi SMS 2FA pour vos applications, tout ce qui est messages transactionnels (confirmations de commande, rappels de RDV), des notifications push via SMS, et même du data SMS binaire pour piloter des périphériques IoT à distance. Pourquoi pas ? Y'a plus de limites après... Ah et y'a aussi une intégration n8n officielle (ici sur le repo example-webhooks-n8n ) pour brancher l'API à vos workflows, plus une bibliothèque PHP sur Packagist. Bref, y'a un petit écosystème qui commence à se développer autour.

Pour l'installer, oubliez le Play Store. capcom6 distribue uniquement des APK sur les GitHub Releases. Faut donc activer les sources inconnues, télécharger le .apk, et installer manuellement.

Après quand on fait le calcul côté pognon c'est vite vu. Twilio par exemple facture $0.0083 par SMS aux US, plus 1,15 $ / mois par numéro, plus les frais. Donc pour 1000 SMS par mois c'est vite entre 50 à 80 $. Avec SMS Gateway for Android et votre forfait perso, vous ne payez rien d'autre que votre forfait...

Après y'a quelques limites à connaître... Par exemple, si vous pensiez faire de l'envoi massif pour du marketing (comprenez du spam), votre opérateur va évidemment bloquer rapidement votre SIM. Et puis évidemment, faut que le téléphone soit allumé h24 avec sa connexion data activée. Donc pour du transactionnel léger c'est nickel mais pour du mass-mailing, oubliez ! De toute façon, n'oubliez pas, y'a une place pour vous en enfer, les spammeurs.

Voilà, donc si vous avez un vieux smartphone Android qui fait dodo dans un tiroir et que vous avez besoin d' une API SMS pour vos automations perso ou votre stack interne, c'est une alternative à Twilio très sympa !

  • ✇Korben
  • Anthropic rachète Stainless, l'outil qui fabrique aussi les SDK de ses concurrents
    Anthropic, la boîte derrière l'IA Claude, a racheté Stainless pour plus de 300 millions de dollars. Stainless, c'est un nom que le grand public ne connaît pas, mais l'outil est partout : il transforme automatiquement la spécification d'une API, l'interface par laquelle deux logiciels se parlent, en SDK. Pour rappel, un SDK, c'est un ensemble de bibliothèques de code prêtes à l'emploi pour les développeurs, ici dans une dizaine de langages comme Python, TypeScript, Go ou Java. En clair, quand un

Anthropic rachète Stainless, l'outil qui fabrique aussi les SDK de ses concurrents

20 mai 2026 à 15:05

Anthropic, la boîte derrière l'IA Claude, a racheté Stainless pour plus de 300 millions de dollars. Stainless, c'est un nom que le grand public ne connaît pas, mais l'outil est partout : il transforme automatiquement la spécification d'une API, l'interface par laquelle deux logiciels se parlent, en SDK.

Pour rappel, un SDK, c'est un ensemble de bibliothèques de code prêtes à l'emploi pour les développeurs, ici dans une dizaine de langages comme Python, TypeScript, Go ou Java.

En clair, quand un développeur veut brancher son application sur l'API de Claude, il utilise un SDK généré par Stainless. La boîte, fondée en 2022 par un ancien ingénieur de Stripe, a produit chaque SDK officiel d'Anthropic depuis les tout débuts de l'API Claude. Le rachat consolide donc une brique que l'entreprise utilisait déjà tous les jours.

Stainless ne s'arrête pas aux SDK. La société fournit aussi de l'outillage pour les serveurs MCP, le protocole poussé justement par Anthropic qui permet aux IA de se connecter à des outils et des données externes. Du coup le rachat fait sens à double titre : Anthropic met la main sur la génération de SDK et sur une partie de l'infrastructure MCP, deux briques où il veut clairement être central.

Sauf que voilà le détail un peu fou. Stainless ne servait pas qu'Anthropic, et sa liste de clients comprend OpenAI, Google DeepMind, Perplexity, Groq et Cloudflare, autrement dit la plupart des concurrents directs d'Anthropic sur le marché de l'IA.

La suite est sans pitié. Anthropic ferme tous les produits hébergés de Stainless, générateur de SDK compris. Les clients actuels gardent les SDK déjà générés et peuvent les modifier, mais le robinet, lui, est coupé. Tout le monde va devoir trouver une alternative ou rapatrier la génération de SDK en interne.

Pourquoi mettre 300 millions sur la table pour ça ? Parce que la vraie bataille n'est plus seulement sur les modèles d'IA, mais sur la couche d'outillage autour.

Celui qui contrôle la façon dont les développeurs branchent leurs applications et orchestrent leurs agents IA contrôle une partie de l'écosystème. OpenAI muscle son propre Agents SDK de son côté. Anthropic, lui, préfère racheter directement l'usine, et au passage priver ses concurrents d'un fournisseur bien pratique.

Source : TechCrunch

  • ✇Korben
  • GitHub hack - Une extension VS Code piège un employé
    Alors celle-là, elle est incroyable les copains ! Le piratage du jour vient d'être confirmé par la plateforme qui héberge une bonne moitié du code de la tech mondiale ! En effet, Github a subit un accès non autorisé à ses propres dépôts internes, à cause d'une extension VS Code piégée installée sur l'ordi d'un employé ! L'annonce officielle est tombée sur le compte X de l'entreprise à l'instant et c'est comme ça que je suis tombé dessus. GitHub dit avoir détecté et maitrisé la compromission hier

GitHub hack - Une extension VS Code piège un employé

Par : Korben ✨
20 mai 2026 à 07:11

Alors celle-là, elle est incroyable les copains !

Le piratage du jour vient d'être confirmé par la plateforme qui héberge une bonne moitié du code de la tech mondiale ! En effet, Github a subit un accès non autorisé à ses propres dépôts internes, à cause d'une extension VS Code piégée installée sur l'ordi d'un employé !

L'annonce officielle est tombée sur le compte X de l'entreprise à l'instant et c'est comme ça que je suis tombé dessus.

GitHub dit avoir détecté et maitrisé la compromission hier. L'extension VS Code malveillante a été retirée, le poste de travail isolé, et la rotation des secrets critiques est en cours. Côté impact, le message officiel c'est que "À l'heure actuelle, nous ne disposons d'aucune indication laissant supposer que les informations des clients stockées en dehors des référentiels internes de GitHub aient été compromises".

Du coup, nos repos perso, nos orgs, nos enterprises...etc, rien n'est normalement touché à ce stade, en tout cas selon ce que GitHub voit pour l'instant.

Le thread officiel de GitHub sur l'incident

Sauf que sur le darkweb, un acteur baptisé TeamPCP, repéré par le compte de threat intel Dark Web Informer, prétend détenir et vendre environ 4000 dépôts privés volés à GitHub. L'entreprise n'a pas publié de chiffre officiel mais a reconnu que la revendication était cohérente avec son enquête en cours, le rapport complet arrivera une fois bouclé.

Bref, à prendre au sérieux mais avec des pincettes le temps que ça se vérifie !

C'est vrai qu'en ce moment, on est dans une vague d'attaques supply chain qui ciblent les extensions VS Code , qui sont devenues un vrai vecteur d'attaque reconnu. Et tout le monde peut se faire piéger (même les ingés GitHub !).

Donc pour vous qui me lisez, la règle de base reste la même : Installez une extension VS Code uniquement si vous faites confiance à l'éditeur. En pratique, faut regarder le tag publisher verified, l'âge du compte, le nombre d'installs et la date de la dernière release, et surtout méfiez-vous des forks fraîchement republiés sous des noms qui ressemblent à un outil connu.

Pour suivre ça maintenant, le thread officiel et ses mises à jour sont sur le compte X de GitHub .

  • ✇Korben
  • vLLM-MLX - Pour remplacer l'API d'OpenAI par votre propre Mac
    Si vous avez un Mac avec une puce Silicon et que vous en avez marre de raquer pour des tokens à chaque requête API à un LLM à la con, y'a un projet qui mérite, je trouve, le détour. Ça s'appelle vLLM-MLX , et c'est un serveur d'inférence local qui transforme votre Mac en machine à générer du texte, à analyser des images et vidéos, et même capable de gérer de l'audio... et tout ça sans que l'inférence ne passe par le cloud des zaméricains. Pour installer le bouzin, ça se fait avec : uv tool insta

vLLM-MLX - Pour remplacer l'API d'OpenAI par votre propre Mac

Par : Korben ✨
18 mai 2026 à 11:23

Si vous avez un Mac avec une puce Silicon et que vous en avez marre de raquer pour des tokens à chaque requête API à un LLM à la con, y'a un projet qui mérite, je trouve, le détour. Ça s'appelle vLLM-MLX , et c'est un serveur d'inférence local qui transforme votre Mac en machine à générer du texte, à analyser des images et vidéos, et même capable de gérer de l'audio... et tout ça sans que l'inférence ne passe par le cloud des zaméricains.

Pour installer le bouzin, ça se fait avec :

uv tool install vllm-mlx

Puis vous lancez suivi du nom d'un modèle et hop, vous obtenez un endpoint API compatible OpenAI qui tourne en local sur votre machine :

vllm-mlx serve %MODEL%

Au début je pensais que j'étais parti pour une séance de configuration qui aller durer des heures mais en fait non. Par exemple moi j'ai lancé ça :

vllm-mlx serve mlx-community/GLM-4.7-Flash-4bit

Vous pouvez aussi opter pour un modèle plus petit :

vllm-mlx serve mlx-community/Qwen2.5-Coder-3B-Instruct-4bit

Du coup, si vos scripts causent déjà avec l'API d'OpenAI, basculer sur ça en local rien qu'en changeant l'URL de base, c'est un jeu d'enfant !

Côté perfs, et là je reprends les benchmarks officiels du repo (M4 Max 128 Go, mono-requête), on tourne autour de 418 tok/s sur un petit Qwen3-0.6B en 8-bit. Ensuite, ça tombe à environ 206 tok/s sur du Llama-3.2-3B et 128 tok/s sur un gros Qwen3-30B-A3B.

Le débit grimpe aussi quand plusieurs requêtes tapent en même temps à la porte... Donc sur les petits modèles ça file vite, mais par contre, sur les gros, faudra pas s'attendre à la même vitesse, hein... Et un Qwen3-30B vous bouffera dans les 18 Go de RAM unifiée, donc sur un Mac à 8 ou 16 Go vous pouvez oublier les gros modèles (Mais qui n'a pas encore un Mac Studio 128 Go ?? hein ? Quiiii ?).

Et c'est pas juste un serveur de texte comme je vous le disais, puisque le projet gère les modèles de vision type Gemma 3, Qwen3-VL, Pixtral, pour analyser images et les vidéos, et côté audio y'a du TTS natif (avec Kokoro, Chatterbox et compagnie) + de la transcription Whisper qui monte jusqu'à 197x le temps réel avec whisper-tiny, ou 55x avec le modèle turbo.

Attention par contre, il vous faudra la version avec l'extra audio (espeak-ng et un modèle spaCy), car c'est pas inclus dans la commande de base. Mais une fois en place, y a de quoi se monter un vrai assistant vocal 100% local et causer synthèse vocale sans louer un GPU chez Azure ou AWS.

Même le endpoint /v1/messages est compatible Anthropic, ce qui permet de brancher Claude Code ou OpenCode directement sur votre serveur comme je vous l'expliquais ici . Suffit d'utiliser ces variables d'environnement et votre éditeur IA ira taper sur votre propre machine plutôt que sur des serveurs distants.

unset ANTHROPIC_API_KEY
export ANTHROPIC_BASE_URL="http://127.0.0.1:8000"
export ANTHROPIC_AUTH_TOKEN="dummy"
claude --model mlx-community/GLM-4.7-Flash-4bit

ou :

claude --model mlx-community/Qwen2.5-Coder-3B-Instruct-4bit

Avouez que c'est trop cool hein ? Vous pouvez trouver tous les modèles pour MLX ici sur HugginFace si vous cherchez un truc plus spécifique.

Y'a aussi un endpoint d'embeddings pour faire du RAG en local, de l'appel d'outils externe via MCP avec une douzaine de parsers et le support des modèles de raisonnement qui extraient proprement le processus de réflexion entre les balises <think> pour Qwen3 et DeepSeek-R1.

J'adore !

Côté bidouille si vous vous lancer, sachez qu'il y a 2 ou 3 flags vachement utiles à connaitre.

Par exemple, le --warm-prompts (couplé au continuous batching) précharge les préfixes populaires au démarrage et, dans le bon scénario, vous gagne entre 1,3 et 2,25x sur le temps de première réponse.

Sur les gros modèles MoE genre Qwen3-30B-A3B, le --moe-top-k réduit aussi le nombre d'experts activés pour gratter 7 à 16% de débit. Le hic, c'est que vous y perdez un poil de qualité.

Et pour les agents qui brassent des contextes énormes, le --ssd-cache-dir déverse le cache de préfixes sur SSD pour soulager la RAM, au prix d'un peu de latence quand ça tape sur le disque.

Bref, si vous cherchez une alternative à Ollama qui tape direct dans le GPU de votre Mac avec du batching et du multimodal, le tout avec une compatibilité API aux petits oignons, foncez les amis ! C'est open source (Apache 2.0), ça dépote et ça s'installe en deux commandes !

Merci à Christian pour la découverte !

  • ✇Korben
  • GridTV, le guide TV open source pour votre setup IPTV
    Bon, maintenant que vous avez vos chaînes IPTV qui tournent via Tunarr ou xTeVe, votre flux XMLTV est super propre. Mais il vous manque un seul truc : Un guide de programme potable. Hé bien GridTV développé par l'ami JohnnyBeGood est là pour ça ! GridTV c'est une interface web en PHP/JS/CSS qui transforme toute source XMLTV compatible en guide TV façon grille horizontale, avec l'indicateur "maintenant" visible en permanence, un barre de progression du programme en cours, et les émissions passées

GridTV, le guide TV open source pour votre setup IPTV

Par : Korben ✨
7 mai 2026 à 10:30

Bon, maintenant que vous avez vos chaînes IPTV qui tournent via Tunarr ou xTeVe, votre flux XMLTV est super propre. Mais il vous manque un seul truc : Un guide de programme potable.

Hé bien GridTV développé par l'ami JohnnyBeGood est là pour ça !

GridTV c'est une interface web en PHP/JS/CSS qui transforme toute source XMLTV compatible en guide TV façon grille horizontale, avec l'indicateur "maintenant" visible en permanence, un barre de progression du programme en cours, et les émissions passées qui se retrouvent automatiquement grisées. C'est exactement ce à quoi ressemble le guide TV de votre box opérateur, mais en mieux, et pour votre propre contenu !

Pour le déploiement, Docker est le chemin recommandé plutôt que de tout configurer à la main : git clone, cd GridTV, docker compose up -d, et hop, vous ouvrez localhost:8080.

Un assistant de setup vous demandera alors votre source EPG obligatoire et une playlist M3U si notamment vous voulez utiliser le player intégré, et une fois validé, vous retombez directement sur la grille.

Ça se met en place en moins de 5 min mais si vous préférez installer sans Docker, ou plutôt sans la couche conteneur, il y a également sur le Github des exemples de config pour Apache et Nginx dans la doc. Caddy fonctionnera aussi et la doc concernant Traefik, c'est pour le cas où GridTV tourne en Docker mais derrière un reverse proxy.

Côté fonctionnalités, le player HLS s'ouvre en PiP (Picture in Picture) dans un coin en cliquant sur une chaîne et le multi-EPG vous permettra de configurer plusieurs sources avec un petit switch. GridTV propose aussi des rappels de programme via notifications navigateur, 15 minutes avant la diffusion. Mais pour en profiter, l'onglet du browser doit rester ouvert et les notifs autorisées.

Et il y a aussi possibilité de générer un export PDF/PNG du guide sur 24h. C'est pas indispensable mais ça permet pour ceux qui veulent d'imprimer le programme de la soirée.

Chaque visiteur de l'instance peut aussi utiliser / paramétrer ses propres URLs XMLTV/M3U, car rien n'est stocké côté serveur. Hé oui, tout passe par le localStorage du navigateur donc vous pouvez partager votre instance avec autant de monde que vous voulez, ça n'a pas d'impact.

La version Steampunk

Et il y a même des thèmes genre cyberpunk, steampunk, magazine ou le thème par défaut. Et la page de monitoring admin expose également une sonde accessible via un endpoint compatible Uptime Kuma qui renvoie le code HTTP 200 si tout va bien. Sinon, ce sera du code 503. Bref, ça vous connaissez...

Bref, l'outil est jeune mais bien construit et une démo live tourne ici guide.demo.johnnybegood.fr . A suvire donc....

Et si vous cherchez juste des listes de chaînes IPTV gratuites , c'est par là !

  • ✇Korben
  • WordPress : un pirate achète 30 plugins et y plante une backdoor
    Une attaque par la chaîne d'approvisionnement a frappé WordPress début avril. Un individu a racheté une trentaine de plugins via la marketplace Flippa, y a injecté du code malveillant et a attendu huit mois avant de l'activer. WordPress a fermé les 31 plugins concernés le 7 avril, mais la mise à jour officielle ne suffit pas à nettoyer les sites touchés. L'attaque est redoutable par sa simplicité. Un individu, identifié sous le prénom "Kris", a racheté pour plusieurs centaines de milliers d'euro

WordPress : un pirate achète 30 plugins et y plante une backdoor

Par : Korben
16 avril 2026 à 15:45

Une attaque par la chaîne d'approvisionnement a frappé WordPress début avril. Un individu a racheté une trentaine de plugins via la marketplace Flippa, y a injecté du code malveillant et a attendu huit mois avant de l'activer. WordPress a fermé les 31 plugins concernés le 7 avril, mais la mise à jour officielle ne suffit pas à nettoyer les sites touchés.

L'attaque est redoutable par sa simplicité. Un individu, identifié sous le prénom "Kris", a racheté pour plusieurs centaines de milliers d'euros un catalogue d'une trentaine de plugins WordPress sur Flippa, une marketplace de vente de sites et d'extensions. Ces plugins appartenaient à la société Essential Plugin / WP Online Support. Ils étaient actifs, mis à jour, et installés sur des milliers de sites.

En achetant le catalogue, l'acheteur a récupéré l'accès au dépôt officiel WordPress.org et a pu pousser des mises à jour directement aux utilisateurs. Le code malveillant a été injecté dès août 2025, mais il est resté dormant pendant huit mois. L'activation a eu lieu les 5 et 6 avril 2026.

Côté technique, l'attaque est assez vicieuse. Le module injecté (wpos-analytics) utilise une désérialisation PHP pour communiquer avec un serveur de commande. Et là, le point intéressant : au lieu d'utiliser un domaine classique pour piloter la backdoor, le malware résout l'adresse de son serveur C2 via un smart contract Ethereum, en interrogeant des points d'accès RPC publics. Résultat, couper un nom de domaine ne sert à rien. L'attaquant peut mettre à jour le smart contract à tout moment pour pointer vers un nouveau serveur.

Le payload injecte du code dans le fichier wp-config.php (environ 6 Ko) et crée un fichier wp-comments-posts.php, un nom assez proche des fichiers légitimes pour passer inaperçu. Le tout sert à afficher du spam SEO (liens, redirections, fausses pages) uniquement à Googlebot, ce qui rend l'attaque invisible pour le propriétaire du site.

WordPress.org a fermé les 31 plugins touchés le 7 avril et a poussé une mise à jour forcée le lendemain. Sauf que cette mise à jour ne nettoie pas le fichier wp-config.php, qui est le vrai point de persistance de la backdoor. Si vous avez l'un de ces plugins installé (Countdown Timer Ultimate, Popup Anything on Click, Post Grid and Filter Ultimate, WP Slick Slider, Album and Image Gallery Plus Lightbox, Responsive WP FAQ, entre autres), il faut aller vérifier votre wp-config.php manuellement et chercher un bloc de code d'environ 6 Ko qui n'a rien à y faire. Le fichier wp-comments-posts.php à la racine du site doit aussi être supprimé s'il est présent.

La vraie leçon ici, c'est que la confiance dans un plugin WordPress repose sur son historique, et qu'un changement de propriétaire peut tout remettre en question du jour au lendemain. WordPress.org ne vérifie pas les changements de mains sur les comptes développeurs, et n'a aucun mécanisme d'alerte quand un catalogue entier passe à un nouvel acheteur. Tant que ce trou existe, ce genre d'attaque peut se reproduire. Et le fait que la mise à jour officielle ne nettoie même pas les sites infectés, c'est quand même un problème.

Source : The Next Web

  • ✇Korben
  • sandbox-exec - L'outil de sandboxing caché de votre Mac
    Sandbox-exec, c'est un utilitaire en ligne de commande dont pas grand monde ne parle mais qui est intégré à macOS et qui permet de lancer n'importe quel programme dans un bac à sable sécurisé, avec des restrictions sur mesure. Apple l'a déprécié, mais ça marche toujours... et c'est franchement pratique. Avec ce truc, il suffit de créer un petit fichier de profil (extension .sb) et vous lancez votre commande avec sandbox-exec -f profil.sb votre_commande. En faisant ça, le programme de votre choix

sandbox-exec - L'outil de sandboxing caché de votre Mac

Par : Korben
16 avril 2026 à 09:00

Sandbox-exec, c'est un utilitaire en ligne de commande dont pas grand monde ne parle mais qui est intégré à macOS et qui permet de lancer n'importe quel programme dans un bac à sable sécurisé, avec des restrictions sur mesure. Apple l'a déprécié, mais ça marche toujours... et c'est franchement pratique.

Avec ce truc, il suffit de créer un petit fichier de profil (extension .sb) et vous lancez votre commande avec sandbox-exec -f profil.sb votre_commande. En faisant ça, le programme de votre choix tournera dans un environnement verrouillé où il ne pourra accéder qu'à ce que vous autorisez explicitement.

Ensuite, vous avez deux philosophies. Soit vous bloquez tout par défaut et vous n'autorisez que le strict nécessaire, c'est-à-dire l'approche parano parfaite pour tester du code louche. Soit vous autorisez tout et vous ne bloquez que ce qui craint. La première est plus sûre, la seconde plus rapide à mettre en place.

Voici un exemple concret pour avoir un terminal coupé du réseau. Suffit de 3 lignes de profil (c'est du LISP) :

(version 1)
(allow default)
(deny network*)

Et là, sandbox-exec -f no-network.sb zsh vous donnera un shell qui peut tout faire sauf se connecter à Internet. Sympa donc pour lancer un script dont vous n'êtes pas sûr à 100% ! Par contre, pour les apps GUI c'est plus capricieux... en testant la même chose avec Firefox, le navigateur arrive quand même à se connecter (il passe probablement par un autre mécanisme réseau). Du coup, pour les applications graphiques, faudra tester au cas par cas.

D'ailleurs, macOS embarque déjà plein de profils dans /System/Library/Sandbox/Profiles/. Ce sont ceux qu'Apple utilise pour ses propres services et certains sont bien commentés, ce qui en fait une super base pour créer les vôtres (Votre IA personnelle en sera ravie ^^).

Côté debug, si un programme plante dans le bac à sable sans explication, la commande log stream --predicate 'sender=="Sandbox"' affichera en temps réel toutes les opérations bloquées. Comme ça, vous voyez exactement ce qui coince et vous ajustez votre profil en conséquence.

Après comme je vous le disais en intro, Apple a officiellement déprécié sandbox-exec car elle préfère pousser son App Sandbox via Xcode, pensé pour les apps du Mac App Store. Mais bon pour isoler rapidement un script en ligne de commande, l'App Sandbox ne sert à rien. Du coup, cet utilitaire CLI reste le seul moyen natif de faire du sandboxing à la volée sur Mac.

Et avec les agents IA qui exécutent du code YOLO partout sur nos machines, avoir un outil comme celui-ci pour isoler un process sans rien installer, c'est plutôt cool je pense ! Si vous utilisez déjà des outils comme Opcode (une GUI pour Claude Code) qui intègrent déjà du sandboxing, c'est exactement cette couche en dessous. Il s'agit de Seatbelt, le framework de sandboxing kernel de macOS, qui fait tout le boulot au niveau OS.

Bref, si la sécurité de votre Mac vous préoccupe, allez gratouiller un peu ça. Tous les profils sont déjà sur votre machine, y'a plus qu'à jouer avec !

Source

  • ✇Korben
  • Claude Code prend la fuite
    60 Mo de source maps (ces fichiers qui permettent de remonter du code minifié à l'original) ont été oubliés dans un paquet npm. Et voilà comment Anthropic a involontairement balancé en public le code source complet de Claude Code, son outil à 2.5 milliards de dollars de revenus annuels. Alors qu'est-ce qui s'est passé exactement ? Hé bien hier, la version 2.1.88 du package @anthropic-ai/claude-code sur le registre npm embarquait un fichier .map de 59.8 Mo. Un truc normalement réservé au debug in

Claude Code prend la fuite

Par : Korben
1 avril 2026 à 09:06

60 Mo de source maps (ces fichiers qui permettent de remonter du code minifié à l'original) ont été oubliés dans un paquet npm. Et voilà comment Anthropic a involontairement balancé en public le code source complet de Claude Code, son outil à 2.5 milliards de dollars de revenus annuels.

Alors qu'est-ce qui s'est passé exactement ?

Hé bien hier, la version 2.1.88 du package @anthropic-ai/claude-code sur le registre npm embarquait un fichier .map de 59.8 Mo. Un truc normalement réservé au debug interne, sauf que ce fichier .map contenait les pointeurs vers les 1 900 fichiers TypeScript originaux, en clair. Chaofan Shou, un développeur chez Solayer Labs, a alors repéré la boulette et l'a partagée sur X. Le temps qu'Anthropic réagisse, le code était déjà mirroré partout sur GitHub, avec 41 500+ forks en quelques heures. Autant dire que le dentifrice ne rentrera pas dans le tube !

Pour ma part, j'avais un petit dépôt à moi assez ancien avec quelques trucs relatifs à Claude Code, qui n'avait rien à voir avec tout ça, qui s'est même retrouvé striké... Ils ratissent large avec leur DMCA donc.

Et là, c'est la fête pour les curieux comme moi parce que les entrailles de l'outil révèlent pas mal de surprises. Côté architecture, on découvre environ 40 outils internes avec gestion de permissions, un moteur de requêtes de 46 000 lignes de TypeScript, un système multi-agents capable de spawner des essaims de sous-tâches en parallèle, et un pont de communication entre le terminal et votre éditeur VS Code ou JetBrains. Le tout tourne sur Bun (pas Node.js ^^) avec Ink pour l'interface terminal. Par contre, pas de tests unitaires visibles dans le dump.

Côté mémoire, c'est plutôt bien pensé puisqu'au lieu de tout stocker bêtement dans la fenêtre de contexte du modèle, l'outil utilise un fichier texte MEMORY.md ultra-léger (genre 150 caractères par entrée) qui sert d'index de pointeurs. Les vraies données, elles, sont distribuées dans des fichiers thématiques chargés à la demande, et les transcripts bruts ne sont jamais relus entièrement, mais juste fouillés à la recherche d'identifiants précis. L'agent traite en fait sa propre mémoire comme un "hint" ce qui le force à vérifier toujours le vrai code avant d'agir. En gros, il a une mémoire sceptique, et pour moi c'est clairement le truc le plus intéressant du dump.

Y'a aussi un truc qui s'appelle KAIROS (mentionné 150 fois dans le code) qui est un genre de mode daemon autonome. En fait, pendant que vous allez chercher votre café, l'agent tourne en arrière-plan et fait ce qu'ils appellent autoDream : il consolide sa mémoire dans des fichiers JSON, vire les contradictions et transforme les observations vagues en données structurées. Comme ça, quand vous revenez devant votre écran, le contexte est nettoyé.

Et puis le code balance aussi la roadmap interne d'Anthropic (bon courage au service comm ^^). On y trouve les noms de code des modèles... Capybara pour un variant de Claude 4.6, Fennec pour Opus 4.6, et un mystérieux Numbat qui n'est pas encore sorti. D'ailleurs, les commentaires internes révèlent que Capybara v8 a un taux de fausses affirmations qui tourne autour de 30%, ce qui est une grosse régression par rapport aux 17% de la v4. Y'a même un "Undercover Mode" qui permet à l'agent de contribuer à des repos publics sans révéler d'infos internes (c'est sympa pour les projets open source).

Anthropic a confirmé la fuite : "C'était un problème de packaging lié à une erreur humaine, pas une faille de sécurité. Aucune donnée client n'a été exposée." Mouais, attention quand même, parce que le code est déjà partout et n'en repartira pas. Et même si aucun secret client n'a fuité, exposer l'architecture complète d'un agent IA à 2.5 milliards de revenus, c'est pas rien non plus.

Bon, et maintenant qu'est-ce qu'on peut en faire ? Bah pas mal de choses en fait.

Par exemple, le système de mémoire auto-correcteur est un pattern directement réutilisable pour vos propres agents IA. L'architecture "index léger + fichiers à la demande" résout élégamment le problème de la pollution de contexte qui fait halluciner les LLM sur les longues sessions. Les +40 outils internes permettent aussi de comprendre comment structurer un système de permissions granulaires dans un agent autonome . Et le concept KAIROS/autoDream, la consolidation mémoire pendant l'idle, c'est une idée qu'aucun outil open source n'implémente encore. Autant dire que les alternatives open source à Claude Code ou Codex vont monter en gamme dans les jours qui viennent. Et le code est déjà nettoyé, réécris en Rust et mis sur GitHub si vous voulez fouiller. Bon, pas sûr que le pattern autoDream soit simple à reimplémenter, mais le système de mémoire oui.

Je trouve ça assez marrant que le code proprio d'une boite qui a aspiré tout l'open source du monde voire plus, sans autorisation, pour le revendre sous la forme de temps machine / tokens, devienne lui aussi en quelque sorte "open source" sans qu'on leur demande leur avis ^^. La vie est bien faite.

Maintenant, pour les développeurs qui publient sur npm, la leçon est limpide : Vérifiez votre .npmignore et votre champ files dans package.json. Ou plutôt, lancez la commande npm pack --dry-run dans votre terminal avant chaque publish. Ça prend 2 secondes et ça vous montre exactement ce qui sera inclus dans le paquet. Ça aurait évité 60 Mo de secrets industriels qui partent en public.

Bref, un .npmignore bien configuré, ça coûte 0 euro. Alors qu'une fuite de propriété intellectuelle évaluée à 2.5 milliards... un peu plus !

Source

  • ✇Korben
  • Axios, l'une des bibliothèques les plus populaires de npm, piratée pour installer un cheval de Troie
    La bibliothèque JavaScript Axios, téléchargée plus de 100 millions de fois par semaine, a été compromise. Un attaquant a détourné le compte du mainteneur principal pour y glisser un malware multiplateforme qui vise aussi bien macOS que Windows et Linux. Un compte piraté, deux versions vérolées Tout est parti du compte npm de jasonsaayman, le mainteneur principal d'Axios. L'attaquant a réussi à prendre le contrôle du compte, a changé l'adresse mail vers un ProtonMail anonyme, et a publié deux ver

Axios, l'une des bibliothèques les plus populaires de npm, piratée pour installer un cheval de Troie

Par : Korben
1 avril 2026 à 09:02

La bibliothèque JavaScript Axios, téléchargée plus de 100 millions de fois par semaine, a été compromise. Un attaquant a détourné le compte du mainteneur principal pour y glisser un malware multiplateforme qui vise aussi bien macOS que Windows et Linux.

Un compte piraté, deux versions vérolées

Tout est parti du compte npm de jasonsaayman, le mainteneur principal d'Axios. L'attaquant a réussi à prendre le contrôle du compte, a changé l'adresse mail vers un ProtonMail anonyme, et a publié deux versions malveillantes : axios 1.14.1 et axios 0.30.4.

Les deux ont été mises en ligne en l'espace de 39 minutes, et pas via le processus habituel. Au lieu de passer par GitHub Actions, le pipeline d'intégration continue du projet, les paquets ont été poussés directement avec la ligne de commande npm. Un détail qui aurait pu alerter plus tôt, mais qui est passé entre les mailles du filet pendant deux à trois heures avant que npm ne retire les versions concernées.

Un malware bien préparé, avec auto-destruction

Le plus vicieux dans l'affaire, c'est la méthode. Plutôt que de modifier directement le code d'Axios, l'attaquant a ajouté une dépendance fantôme appelée plain-crypto-js. Elle n'est jamais importée dans le code source, son seul rôle est d'exécuter un script d'installation qui fonctionne comme un programme d'installation de malware. 

Ce qui veut dire que dès que vous faites un npm install, le script contacte un serveur de commande en moins de deux secondes et télécharge un programme malveillant adapté à votre système : un daemon déguisé sur macOS, un script PowerShell sur Windows, une porte dérobée en Python sur Linux. Et une fois le malware déployé, le script se supprime, remplace son propre fichier de configuration par une version propre, et fait comme si de rien n'était. Même un npm list affiche alors un numéro de version différent pour brouiller les pistes.

Une attaque attribuée à la Corée du Nord

StepSecurity et Socket.dev ont été les premiers à repérer la compromission. Selon Ashish Kurmi, CTO de StepSecurity, ce n'est pas du tout une attaque opportuniste. La dépendance malveillante avait été préparée 18 heures à l'avance, trois programmes malveillants différents étaient prêts pour trois systèmes d'exploitation, et les deux branches de publication ont été touchées en moins de 40 minutes.

Elastic a de son côté relevé que le binaire macOS présente des similitudes avec WAVESHAPER, une porte dérobée en C++ déjà documentée par Mandiant et attribué à un acteur nord-coréen identifié sous le nom UNC1069. Pour les chercheurs en sécurité, le message est clair : si vous avez installé axios 1.14.1 ou axios 0.30.4, considérez votre machine comme compromise. Il faut supprimer la dépendance, faire tourner les identifiants, et dans certains cas, réinstaller la machine.

Franchement, c'est le genre d'attaque qui fait froid dans le dos. Axios, c'est une brique de base pour à peu près tous les projets JavaScript qui font des appels réseau. Et là, en deux heures, un attaquant a réussi à transformer cette brique en porte d'entrée pour un cheval de Troie, y compris sur Mac.

Le plus déroutant, c'est que le système de publication npm permet encore de pousser un paquet manuellement sans que personne ne bronche. Bon par contre, il faut reconnaître que StepSecurity et Socket.dev ont fait du bon boulot en détectant le problème aussi vite.

Sans eux, la fenêtre d'exposition aurait pu être bien plus large, c'est faramineux quand on y pense. Et quand on sait que la piste nord-coréenne revient de plus en plus souvent dans ce genre d'opérations, on se dit que la sécurité de la chaîne logicielle mérite qu'on s'y intéresse de près.

Source : The Register

  • ✇Korben
  • Fraude bancaire : des smartphones fantômes dans le cloud dupent les banques
    Les fraudeurs n'ont plus besoin de vrais téléphones pour vider des comptes bancaires. Des smartphones virtuels hébergés dans le cloud, louables quelques centimes de l'heure, imitent sans problème de vrais appareils et passent sous le radar des systèmes anti-fraude. Un smartphone qui n'existe pas Group-IB vient de publier un rapport qui fait froid dans le dos. Des plateformes comme GeeLark, Redfinger ou LDCloud proposent de louer des smartphones Android virtuels hébergés dans des datacenters, pou

Fraude bancaire : des smartphones fantômes dans le cloud dupent les banques

Par : Korben
26 mars 2026 à 15:19

Les fraudeurs n'ont plus besoin de vrais téléphones pour vider des comptes bancaires. Des smartphones virtuels hébergés dans le cloud, louables quelques centimes de l'heure, imitent sans problème de vrais appareils et passent sous le radar des systèmes anti-fraude.

Un smartphone qui n'existe pas

Group-IB vient de publier un rapport qui fait froid dans le dos. Des plateformes comme GeeLark, Redfinger ou LDCloud proposent de louer des smartphones Android virtuels hébergés dans des datacenters, pour 0,10 à 0,50 dollar de l'heure. À la base, ils sont prévus pour tester des apps ou gérer plusieurs comptes.

Sauf que les fraudeurs ont très vite compris l'intérêt du truc. Ces téléphones fantômes reproduisent tout ce qui fait un vrai smartphone : identifiant unique, adresse IP locale, géolocalisation crédible, et même des données de capteurs comme l'accéléromètre ou le gyroscope.

Votre banque croit parler à un iPhone à Paris. En réalité, c'est un serveur quelque part en Asie. Et le pire, c'est que ça marche. Les systèmes anti-fraude qui se basent sur l'empreinte de l'appareil n'y voient que du feu.

Revolut et Wise en vitrine sur le darknet

Là où ça devient concret, c'est quand on regarde ce qui se vend sur les forums criminels. Des comptes bancaires pré-vérifiés sur Revolut ou Wise, créés via ces cloud phones, s'échangent entre 50 et 200 dollars.

On parle de comptes mules utilisés pour recevoir et faire transiter de l'argent volé. Le tout à échelle industrielle. Côté chiffres, c'est vertigineux : 485 millions de livres de pertes liées à la fraude au Royaume-Uni en 2022.

Aux États-Unis, Deloitte projette 14,9 milliards de dollars d'ici 2028, contre 8,3 milliards en 2024. Et la France n'est pas épargnée, avec 618 millions d'euros de fraude bancaire au premier semestre 2025, en hausse de 7 % par rapport à 2024.

Comment les détecter ?

Group-IB a quand même identifié quelques indices. Un cloud phone n'a en général aucune application par défaut installée. Sa batterie reste bloquée à 100 %. Et surtout, les capteurs de mouvement ne bougent jamais, ce qui est impossible avec un vrai téléphone que quelqu'un tient dans la main.

Le problème, c'est que ces indices sont marginaux face à l'ampleur du phénomène. Les solutions proposées passent par de l'analyse comportementale, de la modélisation par graphes et une meilleure corrélation entre l'appareil et son environnement réseau.

Les banques vont devoir arrêter de se fier uniquement à l'empreinte du téléphone pour vérifier que vous êtes bien vous.

Le modèle de sécurité des banques basé sur l'identification de l'appareil est en train de prendre l'eau. Ces cloud phones sont en location libre, parfaitement légaux, et n'importe qui peut en louer un.

Et puis il faut le dire, les néobanques qui ont misé à fond sur la fluidité d'ouverture de compte se retrouvent avec le revers de la médaille. Quand ouvrir un compte prend deux minutes depuis un téléphone virtuel à 50 dollars, on imagine bien que les fraudeurs ne se privent pas.

Source : Info Security

  • ✇Korben
  • Sortie VGA sur un PIC18 : quand l'optimisation hardware devient un art
    Générer un signal VGA avec un microcontrôleur 8 bits PIC18 est un défi technique de taille. Ce projet Hackaday montre comment détourner les ressources limitées d'un processeur rudimentaire pour produire une image stable. Une petite plongée dans le bit-banging pur et dur. Le défi du timing analogique Le standard VGA impose une rigueur chronométrique absolue à celui qui s'y frotte. Pour obtenir une image stable, typiquement en 640x480 à 60 Hz, le contrôleur doit générer des signaux de synchronisat

Sortie VGA sur un PIC18 : quand l'optimisation hardware devient un art

Par : Korben
26 mars 2026 à 14:11

Générer un signal VGA avec un microcontrôleur 8 bits PIC18 est un défi technique de taille. Ce projet Hackaday montre comment détourner les ressources limitées d'un processeur rudimentaire pour produire une image stable. Une petite plongée dans le bit-banging pur et dur.

Le défi du timing analogique

Le standard VGA impose une rigueur chronométrique absolue à celui qui s'y frotte. Pour obtenir une image stable, typiquement en 640x480 à 60 Hz, le contrôleur doit générer des signaux de synchronisation horizontale (H-sync) et verticale (V-sync) avec une précision de l'ordre de la microseconde. Sur une architecture PIC18 cadencée à quelques dizaines de mégahertz, chaque cycle d'instruction est précieux. L'astuce réside ici dans l'utilisation intelligente des timers internes et des interruptions prioritaires pour maintenir cette cadence sans aucune dérive temporelle, sous peine de voir l'image se désynchroniser immédiatement.

Un DAC rudimentaire pour les couleurs

Côté matériel, la solution retenue est ultra simple (si on peut dire). Pour transformer les sorties numériques binaires du microcontrôleur en signaux analogiques exploitables par un moniteur CRT ou LCD, l'auteur a implémenté une échelle de résistances, aussi appelée DAC R-2R. Ce montage passif permet de convertir des combinaisons de bits en niveaux de tension spécifiques pour les canaux Rouge, Vert et Bleu. C'est une approche classique en électronique "low-cost" qui permet d'obtenir une palette de couleurs certes limitée, mais parfaitement fonctionnelle pour de l'affichage de texte ou de graphismes simples.

L'art du bit-banging et des périphériques détournés

L'envoi des données de pixels vers l'écran nécessite une bande passante que le CPU seul peinerait à fournir en mode pur "bit-banging". Pour optimiser le processus, le développeur détourne souvent le module SPI ou le port série synchrone (MSSP) du PIC pour envoyer les octets de données à la vitesse de l'horloge système. Cela permet de déléguer une partie de la charge de travail au hardware interne et de libérer quelques cycles processeur pour gérer la logique d'affichage. C'est un équilibre précaire où la moindre latence logicielle se traduit par des pixels décalés ou des lignes de travers. Chaud donc.

Ce projet illustre bien l'adage selon lequel la contrainte stimule la créativité. Là où nous utilisons aujourd'hui des processeurs multi-cœurs pour la moindre interface, ce hack prouve qu'un vieux microcontrôleur 8 bits peut encore faire le job. C’est une leçon d'architecture informatique qui permet de comprendre concrètement comment l'information devient image. C'est aussi une forme de résistance face à la démesure logicielle actuelle.

Source : Hackaday

  • ✇Korben
  • Quand 10 000 bots volent 8 millions aux artistes sur Spotify
    Un mec de 54 ans vient de plaider coupable pour avoir siphonné 8 millions de dollars aux artistes musicaux en utilisant 10 000 bots et de la musique générée par IA. Michael Smith, résident de Cornelius en Caroline du Nord, a monté pendant des années une ferme à streams qui écoutait en boucle des centaines de milliers de fausses chansons sur Spotify et Apple Music. Le truc, c'est que ces plateformes ne paient pas un tarif fixe par écoute. Elles fonctionnent avec un pot commun mensuel qu'elles red

Quand 10 000 bots volent 8 millions aux artistes sur Spotify

Par : Korben
25 mars 2026 à 16:38

Un mec de 54 ans vient de plaider coupable pour avoir siphonné 8 millions de dollars aux artistes musicaux en utilisant 10 000 bots et de la musique générée par IA. Michael Smith, résident de Cornelius en Caroline du Nord, a monté pendant des années une ferme à streams qui écoutait en boucle des centaines de milliers de fausses chansons sur Spotify et Apple Music.

Le truc, c'est que ces plateformes ne paient pas un tarif fixe par écoute. Elles fonctionnent avec un pot commun mensuel qu'elles redistribuent proportionnellement au nombre de streams. Du coup, chaque fausse écoute générée par les bots de Smith grignotait directement la part des vrais artistes. En gros, c'est pas Spotify qui se faisait voler, c'est les musiciens qui galèrent déjà à vivre de leur art !

Pour le contenu, Smith avait en fait trouvé un deal avec le CEO d'une boîte de musique IA qui lui pondait des milliers de morceaux par semaine. Les fichiers WAV arrivaient sous forme de chaînes aléatoires de lettres et de chiffres, et il les renommait avec des noms d'artistes fictifs du genre "Calorie Event", "Calms Scorching" ou encore "Calypso Xored" (on sent le générateur de noms random). Les titres, pareil... "Zygotes", "Zyme Bedewing"... si vous tombez là-dessus dans votre discover, y'a de quoi tiquer quand même mais bon...

Et ce problème, ça pose une question que Spotify connaît bien : comment distinguer les vrais streams des faux quand les bots sont suffisamment dispersés sur des milliers de morceaux ? Smith avait justement calibré ses 10 000 bots pour ne pas déclencher les alertes anti-fraude, en répartissant les écoutes sur un catalogue énorme plutôt que de matraquer un seul titre. Pas con.

Mais le bonhomme s'est quand même fait choper. Il a accepté de rendre la totalité des 8 091 843 dollars et risque jusqu'à 5 ans de prison lors de son procès qui aura lieu le 29 juillet prochain. Pas sûr que le ratio risque/récompense en valait la chandelle, en fait.

Le problème de fond, c'est que cette affaire n'est probablement que la partie émergée de l'iceberg. Et je suis sûr que y'en a en France qui font la même... bah sachez que c'est pas cool et que vous risquez d'avoir de GROS ennuis... Avec les outils de génération musicale par IA qui se démocratisent, n'importe qui peut inonder les plateformes de contenu synthétique pour gratter des royalties.

Et tant que le modèle de rémunération repose sur un pot commun plutôt que sur un paiement direct par utilisateur, il sera vulnérable. Encore une fois, les vrais perdants, c'est pas les plateformes (elles prennent leur commission quoi qu'il arrive), mais ce sont les artistes indépendants qui voient leur part du gâteau fondre à chaque bot supplémentaire.

Moche...

Bref, la prochaine fois que votre playlist de découvertes vous propose un artiste nommé "Calypso Xored" ou un connerie de ce style... méfiance !

Source

  • ✇Korben
  • Sora ferme - Comment sauvegarder vos vidéos IA avant la coupure
    Sora, c'est fini les amis ! Hé oui, cest chacals d'OpenAI ferment leur plateforme de vidéos IA, et franchement, ça me rend un peu triste. À vrai dire, même si c'était que de la vidéo générée à partir de prompts, moi je me marrais bien. C'était fun de regarder le produit de ses prompts mais aussi de regarder les conneries des autres. Les versions québécoises, aïe aïe aïe, c'était quelque chose quand même ! Mais bon, le plus urgent maintenant, c'est de sauvegarder vos vidéos avant que tout dispara

Sora ferme - Comment sauvegarder vos vidéos IA avant la coupure

Par : Korben
25 mars 2026 à 15:22

Sora, c'est fini les amis !

Hé oui, cest chacals d'OpenAI ferment leur plateforme de vidéos IA, et franchement, ça me rend un peu triste. À vrai dire, même si c'était que de la vidéo générée à partir de prompts, moi je me marrais bien. C'était fun de regarder le produit de ses prompts mais aussi de regarder les conneries des autres. Les versions québécoises, aïe aïe aïe, c'était quelque chose quand même !

Mais bon, le plus urgent maintenant, c'est de sauvegarder vos vidéos avant que tout disparaisse. OpenAI n'a pas encore communiqué de date précise pour la coupure, juste un vague « on vous dira bientôt ». Du coup, autant ne pas traîner, parce que quand ce genre de service cloud ferme, en général c'est pas 6 mois de préavis qu'on vous file...

Depuis la fuite du modèle jusqu'à aujourd'hui, Sora aura fait parler de lui. Côté raisons, c'est Fidji Simo (la patronne de la division Applications) qui a lâché le morceau : ils éparpillent leurs efforts sur trop d'apps, d'API et de stacks serveur différents, et ça les ralentit. En gros, entre préparer une entrée en bourse pour fin 2026 et cramer du GPU H100 sur des vidéos de chats en IA, le choix est vite fait. L'équipe de recherche Sora, elle, continuera à bosser sur la simulation de mondes 3D... mais pour la robotique. Et le fameux deal à 1 milliard de dollars avec Disney pour des films et séries ? Pouf, magie magie, c'est envolé !!

Faut dire que les chiffres n'étaient pas glorieux non plus. Après un lancement en fanfare fin 2024 (et une app iOS lancée à l'automne 2025 qui avait cartonné dans les charts), les téléchargements sur l'App Store avaient plongé de 32% entre novembre et décembre 2025. La hype, ça dure qu'un temps.

Mais maintenant les gens, on passe aux choses sérieuses !

Sora Backup - le script qui sauve vos vidéos

Je n'avais absolument pas de temps aujourd'hui, mais j'ai quand même taffé pour vous développer un petit script JavaScript qui récupère TOUTES vos vidéos Sora d'un coup, avec les prompts et les métadonnées, et qui vous génère un joli ZIP prêt à archiver. Pas besoin d'installer quoi que ce soit, pas d'extension louche. Vous avez juste besoin d'être connecté à votre profil Sora et d'un navigateur.

Comment ça marche

Allez sur sora.com , connectez-vous à votre compte, puis ouvrez la console JavaScript de votre navigateur (F12 sur Chrome ou Firefox, onglet Console). Ensuite, glissez-déplacez ou collez le script ci-dessous dedans et appuyez sur Entrée.

Le script va automatiquement récupérer votre token d'authentification (pas besoin de le chercher vous-même), puis il va paginer sur votre profil Sora pour récupérer tous vos posts publiés. Pour chaque post, il extrait les vidéos attachées (MP4), les télécharge, et empaquette le tout dans un fichier ZIP directement dans votre navigateur.

Y'a même un fichier manifest.json dans le ZIP qui contient tous vos prompts, les dimensions, les durées, les permalinks, les dates de création... bref, tout ce qu'il faut pour retrouver vos petits. Le ZIP est généré en format STORE (pas compressé, parce que compresser du MP4 ça sert à rien), avec un calcul CRC32 maison et sans aucune librairie externe.

Le script complet

Voici le code à coller dans la console :

// ==========================================================
// SORA BACKUP - Sauvegarde complète vidéos + images + prompts par Korben
// ==========================================================
// Usage : Ouvrir https://sora.com, F12 > Console, coller ce script
// Les fichiers sont téléchargés via le navigateur (dossier Downloads)
// Un fichier manifest.json récapitule tout (prompts, metadata, URLs)
// ==========================================================

(async () => {
 // --- Mini ZIP builder (STORE, pas de lib externe) ---
 const crc32table = new Uint32Array(256);
 for (let i = 0; i < 256; i++) {
 let c = i;
 for (let j = 0; j < 8; j++) c = (c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1);
 crc32table[i] = c;
 }
 function crc32(buf) {
 let c = 0xFFFFFFFF;
 for (let i = 0; i < buf.length; i++) c = crc32table[(c ^ buf[i]) & 0xFF] ^ (c >>> 8);
 return (c ^ 0xFFFFFFFF) >>> 0;
 }
 const zipFiles = []; // {name, data (Uint8Array), crc, size}

 const PAGE_SIZE = 50;
 const DELAY_MS = 1500;
 const manifest = [];
 let totalDownloaded = 0;
 let totalErrors = 0;

 // --- Auth : récupérer le Bearer token ---
 // OPTION 1 : Coller ton token ici (Network tab > Authorization header)
 // OPTION 2 : Laisser vide, le script tentera de le récupérer auto
 let AUTH_TOKEN = '';

 async function getAuthToken() {
 if (AUTH_TOKEN) return AUTH_TOKEN;

 // Auto-detect : endpoint session ChatGPT
 for (const path of ['/api/auth/session', '/backend-api/auth/session']) {
 try {
 const r = await fetch(path, { credentials: 'include' });
 if (r.ok) {
 const json = await r.json();
 if (json.accessToken) {
 AUTH_TOKEN = json.accessToken;
 console.log(' 🔑 Token récupéré automatiquement');
 return AUTH_TOKEN;
 }
 }
 } catch(e) {}
 }

 // Fallback : demander à l'utilisateur
 const input = prompt(
 'Token non trouvé automatiquement.\n\n' +
 'Pour le récupérer :\n' +
 '1. F12 > onglet Réseau\n' +
 '2. Rafraîchis la page\n' +
 '3. Clique sur une requête /backend/...\n' +
 '4. Copie le header Authorization\n\n' +
 'Colle le token ici (Bearer eyJ...):'
 );
 if (input) {
 AUTH_TOKEN = input.replace(/^Bearer\s+/i, '').trim();
 return AUTH_TOKEN;
 }

 console.error(' ❌ Pas de token. Annulation.');
 return null;
 }

 // --- Fetch API avec auth ---
 async function apiFetch(url) {
 const token = await getAuthToken();
 const headers = {};
 if (token) headers['Authorization'] = 'Bearer ' + token;

 // oai-device-id requis par certains endpoints
 const deviceId = localStorage.getItem('oai-did') || '';
 if (deviceId) headers['oai-device-id'] = deviceId;

 const resp = await fetch(url, {
 method: 'GET',
 credentials: 'include',
 headers
 });

 if (!resp.ok) throw new Error(`HTTP ${resp.status} for ${url}`);
 return resp.json();
 }

 // --- Pagination générique ---
 async function fetchAllPages(baseUrl, dataField = 'data', cursorParam = 'after', cursorField = 'last_id') {
 let allItems = [];
 let cursor = '';
 let page = 0;

 while (true) {
 let url = baseUrl;
 if (cursor) url += `&${cursorParam}=${cursor}`;

 console.log(` 📄 Page ${++page} (${allItems.length} items so far)...`);
 const json = await apiFetch(url);

 const items = json[dataField];
 if (!Array.isArray(items) || items.length === 0) break;

 allItems = allItems.concat(items);
 cursor = json[cursorField] || '';

 if (!json.has_more && !cursor) break;
 await sleep(DELAY_MS);
 }

 return allItems;
 }

 // Variante pour les endpoints project_y (cursor-based)
 async function fetchAllPagesCursor(baseUrl) {
 let allItems = [];
 let cursor = '';
 let page = 0;

 while (true) {
 let url = baseUrl;
 if (cursor) url += `&cursor=${cursor}`;

 console.log(` 📄 Page ${++page} (${allItems.length} items so far)...`);
 const json = await apiFetch(url);

 const items = json.items;
 if (!Array.isArray(items) || items.length === 0) break;

 allItems = allItems.concat(items);
 cursor = json.cursor || '';

 if (!cursor) break;
 await sleep(DELAY_MS);
 }

 return allItems;
 }

 function sleep(ms) { return new Promise(r => setTimeout(r, ms)); }

 // --- Extraire URL du média depuis une generation ---
 function getMediaUrl(gen) {
 return gen?.encodings?.source?.path
 || gen?.downloadable_url
 || gen?.url
 || '';
 }

 // --- Extraire le prompt (peut être dans actions, prompt, ou input_text) ---
 function getPrompt(item, gen) {
 // Prompt direct
 if (gen?.prompt) return gen.prompt;
 if (item?.prompt) return item.prompt;
 if (item?.input_text) return item.input_text;
 // Storyboard : les actions sont les descriptions des scènes
 if (item?.actions && typeof item.actions === 'object') {
 return Object.entries(item.actions)
 .sort((a,b) => Number(a[0]) - Number(b[0]))
 .map(([frame, desc]) => `[frame ${frame}] ${desc}`)
 .join(' | ');
 }
 if (gen?.actions && typeof gen.actions === 'object') {
 return Object.entries(gen.actions)
 .sort((a,b) => Number(a[0]) - Number(b[0]))
 .map(([frame, desc]) => `[frame ${frame}] ${desc}`)
 .join(' | ');
 }
 return '';
 }

 // --- Dérouler les items du profil Sora en items plats ---
 function flattenProfileItems(items) {
 const flat = [];
 for (const item of items) {
 const post = item.post || item;
 const attachments = post.attachments || [];
 if (attachments.length === 0) continue;

 for (const att of attachments) {
 const url = att.encodings?.source?.path || att.downloadable_url || att.url || '';
 if (!url) continue;

 flat.push({
 id: post.id || att.generation_id || '',
 generation_id: att.generation_id || '',
 task_id: att.task_id || '',
 title: att.title || post.discovery_phrase || '',
 prompt: post.text || '',
 emoji: post.emoji || '',
 type: att.generation_type || att.kind || '',
 width: att.width || 0,
 height: att.height || 0,
 duration_s: att.duration_s || 0,
 is_public: !!post.posted_to_public,
 created_at: post.posted_at ? new Date(post.posted_at * 1000).toISOString() : '',
 url: url,
 permalink: post.permalink || '',
 username: item.profile?.username || '',
 });
 }
 }
 return flat;
 }

 // --- Sanitize filename ---
 function sanitize(name) {
 return name.replace(/[<>:"\/\\|?*\x00-\x1f]/g, '_').substring(0, 100);
 }

 // --- Ajouter un fichier au ZIP ---
 async function addToZip(url, filename) {
 try {
 const resp = await fetch(url);
 if (!resp.ok) throw new Error(`HTTP ${resp.status}`);
 const buf = await resp.arrayBuffer();
 const data = new Uint8Array(buf);
 zipFiles.push({ name: filename, data, crc: crc32(data), size: data.length });
 totalDownloaded++;
 return true;
 } catch(e) {
 console.warn(` ⚠️ Erreur ${filename}:`, e.message);
 totalErrors++;
 return false;
 }
 }

 // --- Déduire l'extension ---
 function getExt(url, type) {
 if (!url) return type === 'video' ? '.mp4' : '.png';
 const m = url.match(/\.(mp4|webm|mov|png|jpg|jpeg|webp|gif)/i);
 return m ? '.' + m[1].toLowerCase() : (type === 'video' ? '.mp4' : '.png');
 }

 // ==========================================================
 // MAIN
 // ==========================================================
 const origin = window.location.origin;
 console.log('🎬 SORA BACKUP - Démarrage');
 console.log('='.repeat(50));

 // 1. Mes posts Sora (profil)
 console.log('\n📦 1/2 - Récupération de mes posts Sora...');
 let myPosts = [];
 try {
 myPosts = await fetchAllPagesCursor(
 `${origin}/backend/project_y/profile_feed/me?limit=${PAGE_SIZE}&cut=nf2`
 );
 console.log(`  ${myPosts.length} posts de profil`);
 // Debug premier item
 if (myPosts.length > 0) {
 const first = myPosts[0];
 console.log(' 🔍 Premier item - clés:', Object.keys(first).join(', '));
 console.log(' 🔍 URL:', first.url?.substring(0, 80) || 'none');
 console.log(' 🔍 DL:', first.downloadable_url?.substring(0, 80) || 'none');
 console.log(' 🔍 ENC:', first.encodings?.source?.path?.substring(0, 80) || 'none');
 console.log(' 🔍 GENS:', first.generations?.length || 'none');
 console.log(' 🔍 TITLE:', first.title || 'none');
 }
 } catch(e) {
 console.warn(' ⚠️ profil failed:', e.message);
 }

 // 2. Mes likes sur Sora
 console.log('\n📦 2/2 - Récupération de mes likes Sora...');
 let myLikes = [];
 try {
 myLikes = await fetchAllPagesCursor(
 `${origin}/backend/project_y/profile_feed/me?limit=${PAGE_SIZE}&cut=appearances`
 );
 if (myCameos.length) console.log(`  ${myCameos.length} cameos trouvés`);
 } catch(e) {}

 // --- Dérouler les generations et dédupliquer ---
 console.log('\n🔄 Extraction des vidéos...');
 const rawAll = [...myPosts, ...myLikes];
 const flatItems = flattenProfileItems(rawAll);

 const seen = new Set();
 const allItems = [];
 for (const item of flatItems) {
 if (item.id && seen.has(item.id)) continue;
 // Filtrer : vidéos uniquement
 const isVideo = item.type === 'video_gen' || item.url.includes('/videos/') || item.url.includes('.mp4');
 if (!isVideo) continue;
 if (item.id) seen.add(item.id);
 allItems.push(item);
 }

 console.log(`📊 Total unique: ${allItems.length} vidéos à télécharger`);
 console.log('='.repeat(50));

 // --- Construire le manifest et télécharger ---
 console.log('\n⬇️ Téléchargement en cours...');
 console.log('(Les fichiers arrivent dans ton dossier Downloads)');

 for (let i = 0; i < allItems.length; i++) {
 const meta = allItems[i];
 const url = meta.url;

 if (!url) {
 console.log(` ⏭️ [${i+1}/${allItems.length}] ${meta.id} - pas d'URL, skip`);
 meta.downloaded = false;
 manifest.push(meta);
 continue;
 }

 const type = (meta.task_type === 'image_gen' || url.match(/\.(png|jpg|jpeg|webp|gif)/i)) ? 'image' : 'video';
 const ext = getExt(url, type);
 const nameBase = meta.title
 ? sanitize(meta.title)
 : (meta.prompt ? sanitize(meta.prompt.substring(0, 60)) : meta.id);
 const filename = `sora_${String(i+1).padStart(4,'0')}_${nameBase}${ext}`;

 console.log(` ⬇️ [${i+1}/${allItems.length}] ${filename}`);
 meta.filename = filename;
 meta.downloaded = await addToZip(url, filename);
 manifest.push(meta);

 // Pause entre downloads pour pas surcharger
 if (i < allItems.length - 1) await sleep(800);
 }

 // --- Ajouter le manifest au ZIP ---
 console.log('\n📝 Ajout du manifest au ZIP...');
 const manifestData = new TextEncoder().encode(JSON.stringify(manifest, null, 2));
 zipFiles.push({ name: 'manifest.json', data: manifestData, crc: crc32(manifestData), size: manifestData.length });

 // --- Générer le ZIP (format STORE, pas de compression) ---
 console.log('\n📦 Génération du ZIP...');
 const enc = new TextEncoder();
 const blobParts = [];
 const centralParts = [];
 let offset = 0;

 for (const f of zipFiles) {
 const nameBytes = enc.encode(f.name);
 // Local file header (30 bytes + name)
 const lh = new ArrayBuffer(30);
 const lv = new DataView(lh);
 lv.setUint32(0, 0x04034b50, true);
 lv.setUint16(4, 20, true);
 lv.setUint16(8, 0, true); // STORE
 lv.setUint32(14, f.crc, true);
 lv.setUint32(18, f.size, true);
 lv.setUint32(22, f.size, true);
 lv.setUint16(26, nameBytes.length, true);
 blobParts.push(new Uint8Array(lh), nameBytes, f.data);

 // Central directory entry (46 bytes + name)
 const ch = new ArrayBuffer(46);
 const cv = new DataView(ch);
 cv.setUint32(0, 0x02014b50, true);
 cv.setUint16(4, 20, true);
 cv.setUint16(6, 20, true);
 cv.setUint16(10, 0, true); // STORE
 cv.setUint32(16, f.crc, true);
 cv.setUint32(20, f.size, true);
 cv.setUint32(24, f.size, true);
 cv.setUint16(28, nameBytes.length, true);
 cv.setUint32(42, offset, true);
 centralParts.push(new Uint8Array(ch), nameBytes);

 offset += 30 + nameBytes.length + f.size;
 }

 const centralSize = centralParts.reduce((s, p) => s + p.length, 0);
 const eocd = new ArrayBuffer(22);
 const ev = new DataView(eocd);
 ev.setUint32(0, 0x06054b50, true);
 ev.setUint16(8, zipFiles.length, true);
 ev.setUint16(10, zipFiles.length, true);
 ev.setUint32(12, centralSize, true);
 ev.setUint32(16, offset, true);

 const zipBlob = new Blob([...blobParts, ...centralParts, new Uint8Array(eocd)], { type: 'application/zip' });

 const zipName = `sora_backup_${new Date().toISOString().split('T')[0]}.zip`;
 const a = document.createElement('a');
 a.href = URL.createObjectURL(zipBlob);
 a.download = zipName;
 document.body.appendChild(a);
 a.click();
 document.body.removeChild(a);
 URL.revokeObjectURL(a.href);

 // --- Résumé ---
 const sizeMB = (zipBlob.size / 1024 / 1024).toFixed(1);
 console.log('\n' + '='.repeat(50));
 console.log('🎬 SORA BACKUP TERMINÉ');
 console.log(`  Vidéos dans le ZIP : ${totalDownloaded}`);
 console.log(`  Erreurs : ${totalErrors}`);
 console.log(` 📦 Fichier : ${zipName} (${sizeMB} MB)`);
 console.log(` 📝 manifest.json inclus dans le ZIP`);
 console.log('='.repeat(50));
})();

Quelques précisions

Si le token n'est pas récupéré automatiquement (ça peut arriver selon votre config), le script vous demandera de le coller manuellement. Pour le trouver, c'est simple : F12 > onglet Réseau > rafraîchissez la page > cliquez sur n'importe quelle requête vers /backend/... > copiez le header Authorization.

D'ailleurs, si la vidéo IA vous branche toujours, Higgsfield propose des séries entièrement générées par IA. C'est pas la même approche que Sora, mais c'est un signe que la vidéo IA ne meurt pas avec la fermeture d'un seul service.

Bon, bref, c'est la fin d'un truc sympa. Moi je préférais largement scroller sur Sora que d'aller sur TikTok ou Instagram parce qu'au moins c'était drôle !

Merci à mes Patreons qui me permettent de prendre le temps de développer ce genre de petits outils pour vous. Sans eux, j'aurais jamais pu me poser une après-midi pour coder ça.

Source

  • ✇Korben
  • Plus de 1 000 environnements cloud infectés après une attaque sur le scanner Trivy
    Un groupe de pirates a compromis Trivy, un scanner de vulnérabilités open source très utilisé dans les pipelines de développement. Résultat : plus de 1 000 environnements SaaS infectés par un malware qui vole des clés API, des identifiants cloud et des tokens GitHub. Un scanner de sécurité devenu vecteur d'attaque Trivy est un outil open source maintenu par Aqua Security. Il sert à détecter des failles, des mauvaises configurations et des secrets exposés dans du code, et il est intégré dans les

Plus de 1 000 environnements cloud infectés après une attaque sur le scanner Trivy

Par : Korben
25 mars 2026 à 14:30

Un groupe de pirates a compromis Trivy, un scanner de vulnérabilités open source très utilisé dans les pipelines de développement. Résultat : plus de 1 000 environnements SaaS infectés par un malware qui vole des clés API, des identifiants cloud et des tokens GitHub.

Un scanner de sécurité devenu vecteur d'attaque

Trivy est un outil open source maintenu par Aqua Security. Il sert à détecter des failles, des mauvaises configurations et des secrets exposés dans du code, et il est intégré dans les chaînes de déploiement continu (CI/CD) d'un très grand nombre d'entreprises. Le groupe TeamPCP a réussi à compromettre la version 0.69.4 de Trivy en exploitant une mauvaise configuration dans le composant GitHub Action du projet.

En février, ils ont volé un token d'accès privilégié, et ce token n'a jamais été correctement révoqué. En mars, les attaquants l'ont utilisé pour injecter du code malveillant directement dans le projet, en poussant des images Docker et des versions GitHub vérolées vers les utilisateurs.

Le résultat : 75 des 76 tags de trivy-action ont été remplacés par des versions malveillantes.

La contamination s'étend

L'attaque ne s'est pas arrêtée à Trivy. Le même groupe a aussi compromis liteLLM, une bibliothèque Python qui sert d'interface pour les modèles de langage et qui est présente dans 36 % des environnements cloud.

Ils ont aussi touché KICK (un outil d'analyse statique de Checkmarx) et déployé CanisterWorm, un ver qui se propage via des paquets npm vérolés. Le malware installé est un infostealer qui extrait les clés API, les identifiants de bases de données, les tokens GitHub et toute information sensible accessible dans l'environnement de build.

Mandiant, la branche cybersécurité de Google, estime que plus de 1 000 environnements SaaS sont actuellement compromis, et que ce chiffre pourrait grimper à 10 000. TeamPCP travaillerait avec le groupe Lapsus$, connu pour ses attaques contre Microsoft, Nvidia et Uber.

Des révélations à la conférence RSA

Les détails de l'attaque ont été rendus publics lors de la conférence RSA. Le chercheur en sécurité Paul McCarty a été le premier à tirer la sonnette d'alarme, suivi par les équipes de Socket, Wiz et Aikido.dev. Aqua Security a vu ses 44 dépôts GitHub internes défacés, avec une exposition du code source et des configurations CI/CD.

L'affaire montre à quel point les outils de sécurité open source, quand ils sont mal protégés, peuvent devenir le point d'entrée idéal pour une attaque à grande échelle.

C'est quand même un comble : un scanner de vulnérabilités qui devient lui-même le vecteur d'une attaque. Le fait qu'un simple token non révoqué ait suffi pour compromettre toute la chaîne montre que la sécurité des projets open source reste un vrai sujet. Et quand on sait que liteLLM est présent dans plus d'un tiers des environnements cloud, on mesure l'ampleur du problème...

Source : The Register

  • ✇Korben
  • Europol démantèle Tycoon 2FA, la plus grosse plateforme de phishing au monde
    Europol, Microsoft et plusieurs agences de six pays européens viennent de mettre hors service Tycoon 2FA, une plateforme de phishing vendue sur abonnement qui contournait la double authentification. 330 domaines ont été saisis, et le développeur principal a été identifié au Pakistan. Une machine à phishing sur abonnement Pour mieux vous poser le tableau, le Tycoon 2FA fonctionnait comme un service clé en main pour cybercriminels. Pour 120 dollars les dix jours ou 350 dollars par mois, n'importe

Europol démantèle Tycoon 2FA, la plus grosse plateforme de phishing au monde

Par : Korben
5 mars 2026 à 17:16

Europol, Microsoft et plusieurs agences de six pays européens viennent de mettre hors service Tycoon 2FA, une plateforme de phishing vendue sur abonnement qui contournait la double authentification. 330 domaines ont été saisis, et le développeur principal a été identifié au Pakistan.

Une machine à phishing sur abonnement

Pour mieux vous poser le tableau, le Tycoon 2FA fonctionnait comme un service clé en main pour cybercriminels. Pour 120 dollars les dix jours ou 350 dollars par mois, n'importe qui pouvait accéder à un panneau de contrôle avec des pages de phishing prêtes à l'emploi, qui imitent les interfaces de connexion de Microsoft 365, Outlook, Gmail ou même SharePoint.

Le kit interceptait les sessions d'authentification en temps réel, ce qui permettait de contourner la double authentification sans que la victime ne se doute de quoi que ce soit. Depuis août 2023, la plateforme a généré des dizaines de millions de mails de phishing par mois. Microsoft estime en fait que Tycoon 2FA représentait à elle seule 62 % des tentatives de phishing bloquées mi-2025, c'est faramineux.

100 000 organisations touchées dans le monde

64 000 incidents de phishing ont été reliés à la plateforme, et près de 100 000 organisations ont été compromises à travers le monde, dont des hôpitaux, des écoles et des administrations publiques.

Les États-Unis arrivent en tête avec 179 000 victimes, suivis du Royaume-Uni, du Canada, de l'Inde et de la France avec 6 823 victimes identifiées. Si vous utilisez Microsoft 365 ou Outlook au quotidien, c'est le genre de kit qui ciblait directement vos identifiants. Le développeur principal, un certain Saad Fridi basé au Pakistan, a été identifié par Trend Micro dès novembre 2025 sous les pseudos "SaaadFridi" et "Mr_Xaad".

L'opération a mobilisé les polices de six pays (Lettonie, Lituanie, Portugal, Pologne, Espagne et Royaume-Uni) sous la coordination du Centre européen de lutte contre la cybercriminalité d'Europol.

330 domaines saisis d'un coup

Microsoft a mené la partie technique en neutralisant 330 domaines qui servaient de pages de phishing et de panneaux de contrôle. Cloudflare, Coinbase, Intel 471, Proofpoint, SpyCloud et Trend Micro ont aussi participé à l'opération. La plateforme n'a toujours pas donné lieu à des arrestations à ce stade. Le développeur a été identifié, mais aucune interpellation n'a été annoncée.

Le fait que des boîtes privées comme Microsoft et Trend Micro travaillent main dans la main avec Europol est interessant, et ça produit des résultats. Mais 330 domaines saisis sur une infra qui en générait de nouveaux toutes les 24 à 72 heures, on peut se demander combien de temps ça va tenir.

La France est le cinquième pays le plus touché avec presque 7 000 victimes, et quand on sait que le phishing représente 43 % des cyberattaques déclarées par les entreprises françaises, ça donne une idée de l'ampleur du problème.

On espère que cette opération servira d'exemple, mais d'autres plateformes du même genre sont probablement déjà en train de prendre le relais.

Sources : The Hacker News , Europol

  • ✇Korben
  • Windows est lent ? 9 astuces pour booster les performances de votre PC
    Votre PC Windows rame ? Vous ouvrez Chrome et il met 10 secondes à afficher une page vide ? Sans parler de Windows Update qui mouline en arrière-plan et qui transforme votre PC en radiateur ? Et bien il existe quelques astuces simples pour regagner en fluidité, améliorer la vitesse et la réactivité de votre système, le tout sans avoir à tout réinstaller ou à acheter du nouveau matos. Je vais vous montrer 9 manipulations concrètes qui peuvent vraiment faire la différence, surtout si votre PC comm

Windows est lent ? 9 astuces pour booster les performances de votre PC

Par : Korben
5 mars 2026 à 10:54

Votre PC Windows rame ? Vous ouvrez Chrome et il met 10 secondes à afficher une page vide ? Sans parler de Windows Update qui mouline en arrière-plan et qui transforme votre PC en radiateur ?

Et bien il existe quelques astuces simples pour regagner en fluidité, améliorer la vitesse et la réactivité de votre système, le tout sans avoir à tout réinstaller ou à acheter du nouveau matos.

Je vais vous montrer 9 manipulations concrètes qui peuvent vraiment faire la différence, surtout si votre PC commence à prendre de l'âge ou si vous avez peu de RAM. Rien de révolutionnaire, juste des réglages qui marchent.

Ce qu'il faut savoir avant de commencer

Ces astuces fonctionnent sur Windows 10 et Windows 11. Certaines désactivent des fonctionnalités visuelles ou des services en arrière-plan, donc vous allez gagner en performances mais perdre quelques animations ou fonctions que vous n'utilisez peut-être jamais. C'est un compromis.

  • Prérequis : avoir un compte administrateur sur votre PC.
  • Temps estimé : 15-20 minutes pour tout appliquer.
  • Et surtout, créez un point de restauration avant de commencer (cherchez "Créer un point de restauration" dans le menu Démarrer).

Comme ça, si quelque chose se passe mal, vous pourrez revenir en arrière.

1. Désactiver les effets visuels

Windows affiche des animations partout : les fenêtres qui s'ouvrent en fondu, les ombres sous les icônes, les transitions en 3D. C'est joli mais ça bouffe du GPU, c'est-à-dire de la puissance graphique, et du CPU pour rien.

Tapez "performances" dans la barre de recherche Windows et ouvrez "Ajuster l'apparence et les performances de Windows". Dans l'onglet "Effets visuels", cochez "Ajuster afin d'obtenir les meilleures performances". Windows va tout désactiver d'un coup.

Si c'est trop moche, vous pouvez garder quelques effets utiles comme "Lisser les polices d'écran" (sinon le texte est illisible) et "Afficher des ombres sous les fenêtres" (pour mieux distinguer les fenêtres). Tout le reste, c'est du cosmétique.

Impact : libère 10-15% de CPU sur les PC avec GPU intégré. Vous verrez surtout la différence quand vous ouvrez plusieurs fenêtres en même temps.

2. Désactiver les programmes au démarrage

En général, quand vous installez un logiciel, il s'ajoute automatiquement au démarrage de Windows. Résultat : votre PC met 3 minutes à démarrer parce qu'il charge Skype, Steam, OneDrive, Adobe Creative Cloud, Spotify, et 15 autres trucs dont vous n'avez pas besoin dès le boot.

Appuyez sur Ctrl+Shift+Echap pour ouvrir le Gestionnaire des tâches. Allez dans l'onglet "Démarrage". Vous allez voir tous les programmes qui se lancent automatiquement. Faites un clic droit sur ceux que vous n'utilisez pas immédiatement au démarrage et choisissez "Désactiver".

Attention, ne désactivez pas les pilotes système (tout ce qui vient de Microsoft, Intel, AMD, Nvidia). Gardez votre antivirus aussi. Le reste, vous pouvez le lancer manuellement quand vous en avez besoin.

Impact : le démarrage de Windows passe de 2-3 minutes à 30-45 secondes. Et vous économisez de la RAM dès le lancement du système.

3. Nettoyer le disque avec Storage Sense

Windows accumule des fichiers temporaires, c'est-à-dire des données de cache, des anciennes mises à jour, des téléchargements oubliés, et tout ça prend de la place pour rien. Si votre disque est plein à 90% ou plus, Windows ralentit drastiquement.

Allez dans Paramètres > Système > Stockage et activez "Assistant de stockage" (Storage Sense en anglais). Il va nettoyer automatiquement les fichiers temporaires et la Corbeille tous les 30 jours.

Pour un nettoyage immédiat, cliquez sur "Libérer de l'espace maintenant" dans les mêmes paramètres. Cochez "Fichiers temporaires", "Corbeille", et "Téléchargements" (seulement si vous êtes sûr de ne rien y garder). Windows va scanner et supprimer.

Impact : peut libérer de 5 à 20 Go selon votre utilisation. Si vous étiez à plus de 90% d'occupation disque, vous allez sentir la différence immédiatement.

4. Mettre à jour Windows et les pilotes

Je sais, Windows Update c'est l'ennemi quand ça force un redémarrage en plein boulot. Mais des pilotes obsolètes ou un Windows pas à jour, ça peut vraiment plomber les performances. Microsoft corrige des bugs de performance dans les mises à jour mensuelles.

Allez dans Paramètres > Mise à jour et sécurité > Windows Update et cliquez sur "Rechercher des mises à jour". Installez tout ce qui est proposé. Faites pareil pour les pilotes via "Options avancées" > "Mises à jour facultatives".

Si vous voulez être sûr d'avoir les derniers pilotes graphiques, allez direct sur le site de votre fabricant (Intel, AMD, ou Nvidia selon votre GPU) et téléchargez la dernière version. Les pilotes fournis par Windows Update ont souvent du retard par rapport aux versions disponibles chez le fabricant.

Impact : variable. Parfois 0%, parfois +20% de performances sur les jeux ou les logiciels qui utilisent le GPU. Ça dépend vraiment de votre config et des bugs que Microsoft a corrigés entre temps.

5. Désactiver OneDrive (si vous ne l'utilisez pas)

OneDrive, c'est le service de stockage cloud de Microsoft, c'est-à-dire un espace de sauvegarde en ligne qui synchronise vos fichiers automatiquement. Le problème, c'est qu'il tourne en permanence en arrière-plan et il monopolise de la bande passante et du CPU pour synchroniser vos fichiers.

Si vous ne l'utilisez pas, désactivez-le. Clic droit sur l'icône OneDrive dans la barre des tâches (près de l'horloge) > Paramètres > décochez "Lancer OneDrive automatiquement quand je me connecte à Windows". Quittez OneDrive.

Si vraiment vous ne voulez plus voir OneDrive, vous pouvez le désinstaller. Tapez "Ajouter ou supprimer des programmes" dans le menu Démarrer, cherchez Microsoft OneDrive, et cliquez sur Désinstaller.

Impact : libère 5-10% de CPU en moyenne et réduit les accès disque. Surtout visible sur les PC avec disque dur mécanique (HDD).

6. Désactiver les services Windows inutiles

Windows lance des dizaines de services en arrière-plan, c'est-à-dire des programmes systèmes qui tournent en permanence même si vous ne les utilisez jamais. Vous pouvez en désactiver quelques-uns sans risque si vous ne les utilisez pas.

Tapez "services.msc" dans le menu Démarrer pour ouvrir la console des services. Voici les services à désactiver si vous ne les utilisez pas (clic droit > Propriétés > Type de démarrage : Désactivé) :

  • Expériences des utilisateurs connectés et télémétrie : c'est le service qui collecte des données sur votre utilisation de Windows et les envoie à Microsoft. Désactivez-le sans souci.
  • Service de routage de messages Push du protocole WAP : encore un service de collecte de données et de télémétrie. Rien à voir avec le WAP des années 90, vous pouvez le désactiver.
  • SysMain (Superfetch) : c'est un service qui précharge des applications en RAM et gère la compression mémoire. Sur un SSD, Windows ajuste déjà le prefetch automatiquement, mais le désactiver peut libérer des ressources sur les PC avec peu de RAM.
  • Windows Search : si vous n'utilisez jamais la recherche Windows, désactivez. Attention, ça va ralentir les recherches si vous changez d'avis.

Attention, ne touchez pas aux services que vous ne connaissez pas. Si vous désactivez un truc critique, Windows peut planter au démarrage. D'où l'importance du point de restauration créé au début.

Impact : libère 5-10% de CPU et 200-500 Mo de RAM selon les services désactivés.

7. Ajuster les options d'alimentation

Si vous êtes sur un PC portable, Windows limite les performances pour économiser la batterie. Même branché sur secteur, il peut rester en mode "Équilibré", c'est-à-dire un compromis entre performances et consommation électrique.

Tapez "alimentation" dans le menu Démarrer et ouvrez "Options d'alimentation". Sélectionnez le mode "Performances élevées" (ou "High Performance" en anglais). Si vous ne le voyez pas, cliquez sur "Afficher les modes supplémentaires".

Sur Windows 11, allez dans Paramètres > Système > Alimentation et batterie > Mode d'alimentation et sélectionnez "Meilleures performances".

Impact : le CPU et le GPU tournent à pleine vitesse en permanence. Gain de 10-20% sur les tâches CPU intensives (encodage vidéo, compilation, jeux). Mais la batterie va tenir moitié moins longtemps si vous êtes débranché.

8. ReadyBoost avec une clé USB (seulement si vous avez un HDD)

ReadyBoost, c'est une vieille fonctionnalité Windows qui utilise une clé USB comme mémoire cache supplémentaire. Ça peut aider les PC avec peu de RAM et un disque dur mécanique lent.

Branchez une clé USB rapide (USB 3.0 minimum, au moins 4 Go d'espace libre). Ouvrez l'Explorateur Windows, faites un clic droit sur la clé USB > Propriétés > onglet ReadyBoost. Cochez "Dédier ce périphérique à ReadyBoost" et validez.

Attention, si vous avez un SSD, ReadyBoost ne sert à rien. Votre SSD est déjà plus rapide qu'une clé USB. Ne l'activez que si vous avez un HDD.

Impact : gain de 5-10% sur les temps de chargement des applications si vous avez moins de 4 Go de RAM et un HDD. Zéro gain avec un SSD.

9. Fermer les applications et redémarrer régulièrement

Ça paraît bête mais beaucoup de gens laissent leur PC allumé pendant des semaines sans jamais redémarrer. Windows accumule des processus zombies en mémoire, des handles de fichiers non libérés, et la RAM se remplit progressivement.

Fermez les applications que vous n'utilisez pas (surtout Chrome avec ses 50 onglets ouverts). Redémarrez votre PC au moins une fois par semaine. Ça libère la RAM et ça remet les services système à zéro.

Dans le Gestionnaire des tâches (Ctrl+Shift+Echap), regardez l'onglet "Processus" et triez par utilisation mémoire. Si vous voyez des applications qui bouffent 1-2 Go alors que vous ne les utilisez pas, fermez-les.

Impact : peut récupérer 2-4 Go de RAM si vous n'aviez pas redémarré depuis longtemps. Windows redevient fluide instantanément.

Vérifier l'impact des modifications

Une fois que vous avez appliqué ces astuces, ouvrez le Gestionnaire des tâches (Ctrl+Shift+Echap) et regardez l'onglet "Performances". Vous devriez voir l'utilisation CPU et RAM baisser significativement au repos.

Au repos, un Windows 11 optimisé utilise environ 2-3 Go de RAM et 5-10% de CPU. Si vous êtes au-dessus, c'est qu'il y a encore des services ou programmes qui tournent inutilement en arrière-plan.

Si après tout ça votre PC rame toujours, le problème vient peut-être du matériel. Un disque dur qui commence à lâcher, de la RAM défectueuse, ou un PC trop ancien. À ce stade, un SSD et de la RAM supplémentaire feraient plus de différence que n'importe quel réglage logiciel.

Ce qu'il ne faut PAS faire

J'ai vu plein de tutos qui recommandent des trucs douteux pour "booster" Windows. Voici ce qu'il ne faut surtout pas faire :

Ne téléchargez pas de logiciels d'optimisation automatique ou tous les trucs qui promet de "nettoyer le registre". Ces outils créent parfois plus de problèmes qu'ils n'en résolvent et certains installent même des adwares.

Ne désactivez pas Windows Defender sous prétexte qu'il consomme du CPU. Oui, sa protection temps réel tourne en permanence, mais elle est bien optimisée et consomme peu de ressources en usage normal. Si vous le désactivez, vous allez choper un malware qui va vraiment ralentir votre PC.

Notez que dans ma vidéo, je dis que Windows Defender "tourne en arrière-plan uniquement" pour faire des scans. C'est pas tout à fait exact : en réalité, sa protection temps réel (Antimalware Service Executable) tourne en permanence pour surveiller chaque fichier que vous ouvrez ou téléchargez. C'est justement pour ça qu'il ne faut pas le désactiver. Ça consomme un peu de CPU, mais c'est le prix à payer pour ne pas se retrouver avec un cryptominer qui vous bouffe 100% du processeur.

Ne modifiez pas le registre Windows si vous ne savez pas ce que vous faites. Un mauvais réglage et Windows ne démarre plus.

Et surtout, sauvegardez vos données régulièrement. Ces astuces sont sans risque si vous avez créé un point de restauration, mais un plantage est toujours possible. Mieux vaut prévenir que pleurer devant un écran noir.

Voilà, vous avez de quoi remettre votre PC d'aplomb !

Source

  • ✇Korben
  • Shells Unix - 5 redirections que vous copiez sans comprendre
    2>&1, >, >>, 2>/dev/null... Si ces symboles dans votre terminal Linux ou macOS vous font autant flipper qu'un regex, respirez un grand coup ! Quand vous aurez lu cet article, vous verrez qu'en fait c'est super simple à comprendre, et en 5 minutes vous saurez enfin ce que vous copiez-collez depuis des années depuis StackOverflow. En fait, dans les shells Unix (bash, zsh, etc.), y'a 3 canaux de base : stdin (entrée, numéro 0), stdout (sortie normale, numéro 1) et stderr (les err

Shells Unix - 5 redirections que vous copiez sans comprendre

Par : Korben
27 février 2026 à 09:53

2>&1, >, >>, 2>/dev/null... Si ces symboles dans votre terminal Linux ou macOS vous font autant flipper qu'un regex, respirez un grand coup ! Quand vous aurez lu cet article, vous verrez qu'en fait c'est super simple à comprendre, et en 5 minutes vous saurez enfin ce que vous copiez-collez depuis des années depuis StackOverflow.

En fait, dans les shells Unix (bash, zsh, etc.), y'a 3 canaux de base : stdin (entrée, numéro 0), stdout (sortie normale, numéro 1) et stderr (les erreurs, numéro 2). Tout le reste, de > à 2>/dev/null, découle de ces 3 numéros.

> - Écrire dans un fichier (et tout écraser)

echo "Salut" > fichier.txt

Ça redirige stdout vers fichier.txt. Si le fichier existe déjà... c'est mort, il est écrasé sans sommation. Du coup, faites gaffe avec vos logs, une commande mal placée et ce sont des heures de données qui disparaissent.

D'ailleurs, si vous êtes du genre parano (et oui, vous avez raison !), set -o noclobber dans votre .bashrc empêchera > d'écraser un fichier existant lors d'une commande tapée à la main. Pour y arriver, il faudra utiliser >| pour forcer.

>> - Ajouter à la suite

echo "Ligne 2" >> fichier.txt

Même principe que >, sauf que ça ajoute à la fin au lieu d'écraser. C'est ce que vous voulez 99% du temps pour des logs (sauf si vous voulez repartir de zéro, là > fait le job). Une lettre de différence entre "tout va bien" et "où sont passés mes logs, boudiouuu ???".

2> - Rediriger les erreurs

commande_foireuse 2> erreurs.log

Le 2 c'est stderr, en gros (y'a pas d'espace entre le 2 et le >, sinon bash croit que 2 est un argument). Tout ce qui sort en erreur finit dans erreurs.log au lieu de polluer votre terminal. Perso, je trouve ça super pratique pour garder une trace propre quand vous lancez des scripts via crontab -e.

Et 2>> existe aussi, pour cumuler les erreurs au fil du temps au lieu d'écraser le fichier à chaque exécution.

2>&1 - Fusionner erreurs et sortie normale

commande > output.log 2>&1

Le fameux ! Le &1 dit à bash "le 1 c'est un file descriptor, pas un fichier qui s'appelle littéralement 1". Du coup stderr (2) est redirigé vers le même endroit que stdout (1), ou plutôt vers là où stdout pointe au moment où bash évalue la ligne. Ça va, vous suivez toujours ? ^^

Attention, l'ordre compte ! Bash lit les redirections de gauche à droite. > output.log 2>&1, stdout pointe vers le fichier, puis stderr suit... tout va dans le fichier. 2>&1 > output.log, stderr copie stdout qui pointe ENCORE vers le terminal, puis stdout est redirigé vers le fichier. Résultat, les erreurs restent dans votre terminal. Le piège classique.

Et &> fait la même chose en plus court :

commande &> output.log

&> est super pratique, mais spécifique à bash / zsh donc pour la portabilité, préférez quand même > fichier 2>&1.

2>/dev/null - Le trou noir

find / -name "*.conf" 2>/dev/null

/dev/null, c'est le trou noir d'Unix. Tout ce que vous envoyez là-dedans disparaît. Super pratique avec find qui vous crache 200 "Permission denied" pour un seul résultat utile.

Et si vous voulez TOUT faire disparaître (stdout + stderr) ? Un petit &>/dev/null et c'est réglé. Pratique dans vos scripts /etc/cron.d/ quand vous voulez zéro bruit (bon, j'exagère un chouïa, je sais...).

Si vous aimez les raccourcis bash , j'ai aussi ce qu'il faut.

Bref, voilà ce sont juste 5 opérateurs à retenir, et avec ça vous couvrez à peu près tout. Donc la prochaine fois que vous copierez un 2>&1, au moins vous saurez pourquoi.

Source d'inspiration

  • ✇Korben
  • sudo-rs - 40 ans de silence cassés par des astérisques
    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

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

Par : Korben
27 février 2026 à 09: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

  • ✇Korben
  • Faux entretiens d'embauche - Le piège qui vise les devs Next.js
    Des faux entretiens d'embauche avec des repos GitHub vérolés pour piéger les devs Next.js... on croit rêver et pourtant, Microsoft vient de documenter cette campagne ciblée et vous allez voir, c'est violent. En fait, un groupe de hackers se fait actuellement passer pour des recruteurs et contacte des développeurs JavaScript en leur proposant un entretien technique. Le deal c'est de cloner un repo GitHub pour un "test de compétences"... sauf que le repo en question est truffé de malware. Microsof

Faux entretiens d'embauche - Le piège qui vise les devs Next.js

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

Des faux entretiens d'embauche avec des repos GitHub vérolés pour piéger les devs Next.js... on croit rêver et pourtant, Microsoft vient de documenter cette campagne ciblée et vous allez voir, c'est violent.

En fait, un groupe de hackers se fait actuellement passer pour des recruteurs et contacte des développeurs JavaScript en leur proposant un entretien technique. Le deal c'est de cloner un repo GitHub pour un "test de compétences"... sauf que le repo en question est truffé de malware.

Microsoft a ainsi identifié plusieurs vecteurs d'infection planqués dans ces repos. Le premier, c'est via les fichiers de configuration VS Code, c'est à dire ceux dans le dossier .vscode/, qui peuvent exécuter du code dès que vous cliquez "Trust" à l'ouverture du projet (ce que la plupart des devs font sans réfléchir).

Le deuxième passe par un npm run dev piégé, la commande de dev classique qui lance le malware en même temps que le serveur (car oui, c'est aussi simple que ça...).

Et le troisième est encore plus sournois puisqu'il s'agit d'un module backend qui décode une URL depuis le fichier .env, exfiltre toutes les variables d'environnement (tokens cloud, clés API...), puis exécute du JavaScript reçu en retour. Sympaaaaaa....

Du coup, le malware est plutôt bien pensé. C'est un loader JavaScript qui se télécharge depuis l'infrastructure Vercel (comme ça, ça a l'air légitime), et qui s'exécute entièrement en mémoire, et spawne un processus Node.js séparé pour ne pas éveiller les soupçons. Une fois installé, il se connecte alors à un serveur C2 qui change d'identifiant régulièrement, histoire de compliquer la détection. Et là, ça se met à exfiltrer tout ce qui traîne... code source, secrets, credentials cloud... bref, tout ce qui a de la valeur.

Alors, comment on se protège de ce genre de menace quand on est un simple dev ? Hé bien déjà, vérifiez le profil du "recruteur". Pas de site d'entreprise vérifiable, des messages génériques... c'est un joli red flag !

Ensuite, avant de lancer quoi que ce soit, lisez le package.json à la recherche de scripts suspects dans preinstall, postinstall ou prepare, inspectez le dossier .vscode/ (surtout tasks.json), et faites un npm install --ignore-scripts pour bloquer l'exécution automatique des hooks. Lancez aussi un safe-npm et un npm audit une fois les dépendances installées. Et côté VS Code, désactivez l'exécution auto des tasks avec "task.allowAutomaticTasks": "off" dans vos settings.

Ça me rappelle les campagnes type Shai-Hulud et les packages npm vérolés , mais avec un vecteur social bien plus élaboré. Le piège, c'est qu'on ne balance plus des packages malveillants dans le registry en espérant qu'un dev les installe par erreur... non, non, on cible directement les développeurs, un par un, en exploitant ce stress de la recherche d'emploi comme le ferait un conseiller France Travail quand vous arrivez en fin de droits chomdu...

Et si vous êtes en pleine recherche d'emploi, attention, ne lancez JAMAIS un projet d'un inconnu dans votre environnement principal. Utilisez une VM, un container Docker (docker run --rm -it -v $(pwd):/app node:20 bash et c'est réglé), ou au minimum un compte utilisateur séparé sans accès à vos tokens et clés SSH. On n'est jamais trop prudent !

Maintenant vous savez... si un recruteur vous envoie un repo GitHub sans profil LinkedIn ni site d'entreprise véritable et vérifiable... c'est que c'est pas un recruteur. Voilà voilà...

Source

  • ✇Korben
  • Claude Code - Pilotez votre terminal depuis votre canapé
    Claude Code tourne en local et c'est son gros avantage car ça permet par exemple d'agir sur votre machine, de lancer des scripts...etc. Mais c'est aussi sa grosse limite car à cause de ça, vous êtes cloué devant votre terminal. J'étais en quête depuis un moment d'une solution et je vous avais déjà parlé de Vibe Companion y'a pas longtemps mais tous ces outils vont disparaitre puisque Anthropic vient de sortir Remote Control, une feature qui transforme claude.ai ou l'app mobile en télécommande po

Claude Code - Pilotez votre terminal depuis votre canapé

Par : Korben
26 février 2026 à 12:46

Claude Code tourne en local et c'est son gros avantage car ça permet par exemple d'agir sur votre machine, de lancer des scripts...etc. Mais c'est aussi sa grosse limite car à cause de ça, vous êtes cloué devant votre terminal. J'étais en quête depuis un moment d'une solution et je vous avais déjà parlé de Vibe Companion y'a pas longtemps mais tous ces outils vont disparaitre puisque Anthropic vient de sortir Remote Control, une feature qui transforme claude.ai ou l'app mobile en télécommande pour votre session locale. Comme ça, vos fichiers restent chez vous et seule l'interface voyage.

Votre ordi fait tourner Claude Code normalement, et vous, vous pouvez continuer à lui parler depuis votre iPhone, votre Android, votre iPad ou n'importe quel navigateur Chrome, Firefox, Safari... Pas de serveur exposé, pas de port ouvert, que du HTTPS sortant. C'est plutôt bien foutu vous allez voir !

Ce qu'il vous faut

Bon déjà, un abonnement Pro (Édit : ? on me dit que c'est pas encore actif pour les pro ?) ou Max (pas le choix, les clés API ne marchent pas et les plans Team/Enterprise sont exclus pour le moment). Ensuite, vérifiez que Claude Code est installé et que vous êtes connecté via /login. Acceptez ensuite le "workspace trust" dans votre projet et hop, c'est tout côté prérequis.

Lancer une session

Deux options s'offrent à vous ensuite... Soit vous démarrez une nouvelle session dédiée :

claude remote-control

Soit vous êtes déjà en train de bosser dans Claude Code et vous tapez /rc (alias de /remote-control). Avec claude remote-control, seule l'URL apparaît... donc appuyez sur espace pour afficher le joli QR code.

3 flags utiles (uniquement avec claude remote-control, pas /rc) : --verbose pour voir ce qui transite, --sandbox pour forcer le mode bac à sable (désactivé par défaut) et --no-sandbox pour le couper si vous l'avez activé dans votre config.

Se connecter depuis un autre appareil

Ensuite, la méthode la plus rapide c'est de scanner le QR code avec votre téléphone. Sinon, copiez l'URL affichée et collez-la dans n'importe quel navigateur. Dernière option, allez sur claude.ai/code et votre session apparaît dans la liste (les sessions actives ont un petit point vert).

Une fois connecté, vous récupérez votre conversation en cours, vos fichiers, votre contexte... tout. Vous pouvez envoyer des messages, voir les résultats, approuver les modifications de fichiers. Bref, comme si vous étiez devant votre terminal, sauf que vous êtes dans votre canapé, votre lit ou en train de pousser le caddie chez Auchan !

Activer par défaut

Maintenant, si vous voulez que CHAQUE session Claude Code soit automatiquement accessible à distance, tapez /config dans une session Claude Code, puis activez l'option "Enable Remote Control for all sessions". Et voilà, plus besoin d'y réfléchir ! Chaque claude lancé dans un terminal sera pilotable depuis votre navigateur ou l'app mobile.

Vos sessions prennent le nom de votre dernier message (ou "Remote Control session" par défaut), donc utilisez /rename mon-projet-cool pour les retrouver facilement dans la liste sur claude.ai/code.

Sinon, dans Claude Code avec /mobile vous pouvez aussi afficher directement le QR code pour télécharger l'app Claude sur iOS ou Android.

Les limites à connaître

Bon, après c'est pas non plus parfait car déjà, c'est cappé à UNE SEULE session à distance par instance de Claude Code (si vous en lancez une deuxième, la première se déconnecte). Par contre, plusieurs instances dans des terminaux différents peuvent chacune avoir leur session remote. Le terminal doit également rester ouvert (si vous le fermez, c'est fini). Mais bonne nouvelle quand même, si le laptop passe en veille ou que le réseau saute, ça se reconnectera tout seul au réveil. Le piège, c'est si la machine reste sans réseau plus de 10 minutes... là, la session expire et il faudra relancer claude remote-control.

Soyez rassurés quand même côté sécurité c'est propre (uniquement du HTTPS sortant sur le port 443, zéro port entrant et des identifiants éphémères), mais gardez en tête que Claude Code a accès à votre terminal donc sauf si vous activez --sandbox, il peut de ce fait exécuter n'importe quelle commande... donc les mêmes précautions qu'en local s'appliquent !

Du coup si vous en avez marre de rester scotché devant votre terminal, maintenant vous savez quoi faire.

Merci à Lorenper !

  • ✇Korben
  • Clés API Google - 3000 clés publiques donnent accès à Gemini
    Les clés API Google que vous collez dans votre JavaScript pour afficher une carte Maps... hé bien elles ne sont plus si inoffensives. Car depuis que Gemini est entré dans la danse, ces mêmes clés donnent maintenant accès à vos fichiers privés et surtout à votre facture IA. Et personne ne nous a prévenu... En gros, Google utilise un format de clé unique, les fameuses AIza..., aussi bien pour Maps et Firebase (public, collé dans le HTML, tout le monde s'en fout) que pour Gemini (privé, accès aux f

Clés API Google - 3000 clés publiques donnent accès à Gemini

Par : Korben
26 février 2026 à 09:31

Les clés API Google que vous collez dans votre JavaScript pour afficher une carte Maps... hé bien elles ne sont plus si inoffensives. Car depuis que Gemini est entré dans la danse, ces mêmes clés donnent maintenant accès à vos fichiers privés et surtout à votre facture IA.

Et personne ne nous a prévenu...

En gros, Google utilise un format de clé unique, les fameuses AIza..., aussi bien pour Maps et Firebase (public, collé dans le HTML, tout le monde s'en fout) que pour Gemini (privé, accès aux fichiers, facturation). Le problème c'est que quand vous activez l'API Gemini sur un projet Google Cloud, TOUTES les clés existantes de ce projet héritent automatiquement de l'accès Gemini. Sans warning, sans notification, sans rien... Ouin !

Les chercheurs de TruffleSecurity ont ainsi trouvé presque 3000 clés API Google valides dans le dataset Common Crawl de novembre 2025. Des clés qui trainent dans du code JavaScript, des pages HTML, des repos GitHub publics... et qui fonctionnent sur l'endpoint Gemini. Il suffit d'un simple curl avec une clé Maps récupérée sur un site web, et hop, vous accédez à l'API Gemini du propriétaire. Fichiers privés, contenu en cache, facturation sur son compte.

Et parmi les victimes, on trouve des institutions financières, des boîtes de cybersécurité, et... Google eux-mêmes (oui oui, vraiment).

Le 21 novembre 2025, TruffleSecurity signale donc le problème et la réponse de Google le 25 novembre c'est : "intended behavior" (comportement normal)... Sauf que le 2 décembre, Google a reclassifié ça en bug, puis le 13 janvier 2026, ça passe finalement en Tier 1. On est donc passé du "c'est normal les frérots" à "ah oui quand même, oupsi oups", en 7 semaines.

Maintenant, pour ceux qui se demandent si leurs clés API Google sont concernées, direction console.cloud.google.com , section "APIs & Services" puis "Identifiants".

Si vous voyez l'API " Generative Language " de Gemini API activée sur un projet avec des clés non restreintes... attention, c'est le moment de faire le ménage. Ajoutez des restrictions IP ou HTTP referrer, et surtout, utilisez des comptes de service plutôt que des clés API pour tout ce qui touche à Gemini (sauf si vous aimez les surprises sur votre facture ^^).

Le truc tordu, c'est que la doc Firebase dit noir sur blanc que les clés API ne sont pas des secrets. Google Maps vous dit carrément de les coller dans votre HTML. Et maintenant, ces mêmes clés donnent accès à une IA qui peut lire vos fichiers. Du CWE-1188 pur et dur ! Et c'est pas la première fois que Google se fait taper sur les doigts pour ce genre de souci avec Gemini .

Du coup, Google a annoncé des nouvelles mesures, du scoped defaults, du blocage de clés fuités, des notifications proactives...etc. Reste donc à voir si ça arrivera avant que les presque 3000 clés exposées soient exploitées par des gens moins bien intentionnés.

Bref, dix ans à dire que c'est public, et hop, aujourd'hui c'est devenu top secret. Bien joué Google !!

Source

Les Pokémon ont trente ans et s'achètent à prix d'or

Né il y a trente ans, relancé par le Covid, l’échange de cartes Pokémon est devenu un véritable business. Le trading card game, ce sont des boutiques, des plateformes de reventes, des influenceurs et beaucoup de fans.

L’article Les Pokémon ont trente ans et s'achètent à prix d'or est apparu en premier sur L'ADN.

  • ✇Korben
  • FFmpeg - Comment normaliser le volume audio proprement avec loudnorm
    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,

FFmpeg - Comment normaliser le volume audio proprement avec loudnorm

Par : Korben
17 février 2026 à 10: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

  • ✇Korben
  • OpenVAS - Le scanner de vulnérabilités open source qui vous dit la vérité sur votre serveur
    Vous avez un serveur, un NAS, quelques services qui tournent chez vous ou au boulot, et vous vous demandez si tout ça est bien sécurisé ? Alors plutôt que d'attendre qu'un petit malin vous le fasse savoir de manière désagréable, autant prendre les devants avec un scanner de vulnérabilités. Attention : si vous scannez le réseau de votre boulot, demandez toujours une autorisation écrite avant car scanner sans permission, c'est illégal et ça peut vous coûter cher. Et ne comptez pas sur moi pour vou

OpenVAS - Le scanner de vulnérabilités open source qui vous dit la vérité sur votre serveur

Par : Korben
15 février 2026 à 10:47

Vous avez un serveur, un NAS, quelques services qui tournent chez vous ou au boulot, et vous vous demandez si tout ça est bien sécurisé ? Alors plutôt que d'attendre qu'un petit malin vous le fasse savoir de manière désagréable, autant prendre les devants avec un scanner de vulnérabilités.

Attention : si vous scannez le réseau de votre boulot, demandez toujours une autorisation écrite avant car scanner sans permission, c'est illégal et ça peut vous coûter cher. Et ne comptez pas sur moi pour vous apporter des oranges en prison.

OpenVAS (Open Vulnerability Assessment Scanner), c'est l'un des scanners open source les plus connus, maintenu par Greenbone. Une fois en place sur votre réseau, il scanne vos services exposés et vous balance un rapport avec ce qui craint : Ports ouverts, services mal configurés, failles connues, certificats expirés... De quoi repérer une bonne partie de ce qu'un attaquant pourrait exploiter.

L'interface principale d'OpenVAS

Ce qui est cool, c'est que vous restez en mode défensif. C'est pas un outil de pentest offensif ou de hacking pur et dur mais juste un audit de votre propre infra pour savoir où vous en êtes. Et ça tourne avec un feed de vulnérabilités (le Greenbone Community Feed) qui est régulièrement mis à jour, ce qui permet de détecter les failles récentes.

Pour l'installer, une des méthodes c'est de passer par Docker. Greenbone fournit une stack complète avec docker-compose. Après vous cherchez plutôt à analyser spécifiquement vos images de conteneurs, Grype pourrait aussi vous intéresser .

Pour OpenVAS, vous créez un répertoire, vous téléchargez leur fichier de config (jetez toujours un œil dedans avant de l'exécuter, c'est une bonne pratique), et hop :

mkdir -p ~/greenbone-community-container
cd ~/greenbone-community-container
curl -f -O -L https://greenbone.github.io/docs/latest/_static/docker-compose.yml
docker compose pull
docker compose up -d

L'assistant de configuration initiale

Après ça, vous accédez à l'interface web via http://localhost:9392.

Et pour le login, attention, car sur les versions récentes du conteneur communautaire, le mot de passe admin est généré aléatoirement au premier démarrage. Il faut donc aller voir les logs pour le récupérer (docker compose logs -f). Si ça ne marche pas, tentez le classique admin/admin, mais changez-le direct.

La première synchro des feeds peut prendre un moment, le temps que la base de vulnérabilités se télécharge. Vous avez le temps d'aller vous faire un café, c'est pas instantané.

Niveau config machine, la documentation recommande au moins 2 CPU et 4 Go de RAM pour que ça tourne, mais pour scanner un réseau un peu costaud, doublez ça (4 CPU / 8 Go) pour être à l'aise. Et une fois connecté, direction la section scans pour créer une cible avec votre IP ou plage d'adresses. Ensuite vous pouvez lancer un scan avec le profil de votre choix :

Le mode "Discovery" se contente de lister les services et ports ouverts tandis que le mode "Full and Fast" lance une batterie complète de tests de vulnérabilités. Il est conçu pour être "safe" (ne pas planter les services), mais le risque zéro n'existe pas en réseau donc évitez de scanner votre prod en pleine journée sans prévenir.

Les résultats arrivent sous forme de rapport avec un score de criticité comme ça vous avez le détail de ce qui pose problème et souvent des pistes pour corriger. Genre si vous avez un service SSH avec une config un peu lâche ou un serveur web trop bavard, le rapport vous le dira.

Par contre, c'est vrai que l'interface est assez austère comparée à des solutions commerciales comme Nessus mais c'est gratuit, c'est open source, et ça fait le taf pour un audit interne. La version Community a quand même quelques limitations (feed communautaire vs feed entreprise, support, etc.), mais pour surveiller son infra perso ou sa PME, c'est déjà très puissant.

Du coup, si vous voulez savoir ce qui traîne sur votre réseau avant que quelqu'un d'autre le découvre, OpenVAS est un excellent point de départ. Et c'est toujours mieux de découvrir ses failles soi-même que de les lire dans un mail de rançon... enfin, je pense ^^.

A découvrir ici !

  • ✇Korben
  • Lingoku - L'extension qui transforme votre navigation en cours de japonais
    Vous avez déjà essayé d'apprendre le japonais ? Moi aussi. Et comme 90% des gens, j'ai abandonné après avoir constaté que mémoriser des listes de vocabulaire sur Duolingo en mode perroquet, c'était franchement pas terrible pour progresser. Le truc, c'est que notre cerveau retient beaucoup mieux les mots qu'on rencontre en contexte réel plutôt que dans des exercices artificiels. Hé bien c'est exactement sur ce principe que repose Lingoku , une extension pour Chrome, Edge et Firefox qui va rempla

Lingoku - L'extension qui transforme votre navigation en cours de japonais

Par : Korben
12 février 2026 à 10:51

Vous avez déjà essayé d'apprendre le japonais ?

Moi aussi. Et comme 90% des gens, j'ai abandonné après avoir constaté que mémoriser des listes de vocabulaire sur Duolingo en mode perroquet, c'était franchement pas terrible pour progresser. Le truc, c'est que notre cerveau retient beaucoup mieux les mots qu'on rencontre en contexte réel plutôt que dans des exercices artificiels.

Hé bien c'est exactement sur ce principe que repose Lingoku , une extension pour Chrome, Edge et Firefox qui va remplacer certains mots sur les pages web que vous visitez par leur équivalent japonais. Du coup, pendant que vous scrollez Reddit, lisez le New York Times ou que vous vous perdez sur Korben.info, vous apprenez du vocabulaire sans vous en rendre compte.

Le concept s'appuie sur la théorie du i+1 de Stephen Krashen , un linguiste qui a démontré que l'acquisition d'une langue fonctionne mieux quand on est exposé à du contenu juste un peu au-dessus de son niveau actuel. Pas trop simple pour s'ennuyer, pas trop dur pour décrocher. Lingoku analyse donc votre niveau et ne remplace que les mots adaptés à votre progression, genre 10% du texte seulement pour que vous puissiez toujours comprendre le contexte global.

Grâce à cette extension, quand vous survolez un mot japonais, la traduction apparaît en 0,2 seconde. Pas de popup intrusive ni de fenêtre qui vous sort de votre lecture. L'extension utilise un "cerveau contextuel" basé sur l'IA qui comprend les nuances des kanjis selon le contexte dans lequel ils apparaissent. Parce que oui, un même kanji peut avoir plusieurs significations et c'est souvent là que ça devient galère pour les débutants.

Y'a aussi un système de répétition espacée intégré qui vous rappelle de réviser les mots aux moments optimaux pour lutter contre l'oubli. Et si vous préparez le JLPT (l'examen officiel de japonais), vous pouvez configurer l'extension pour cibler spécifiquement le vocabulaire de votre niveau.

L'installation prend 30 secondes, vous choisissez vos objectifs (JLPT, vie quotidienne ou anime si vous êtes un weeb assumé), vous indiquez votre niveau actuel, et hop, c'est parti. L'extension fonctionne sur à peu près tous les sites avec du contenu textuel.

Niveau confidentialité, le contenu est chiffré pour l'analyse IA, supprimé instantanément et jamais stocké. La version gratuite offre 500 points quotidiens, ce qui devrait suffire pour une utilisation normale et si vous voulez plus, il faudra passer à la version payante pour débloquer les fonctionnalités IA avancées, les rapports de progression détaillés et la synchronisation multi-appareils.

Bref, si vous avez toujours rêvé de pouvoir lire des mangas en VO ou de comprendre ce que racontent les personnages dans vos animes préférés sans sous-titres, cette extension peut être un bon complément à votre apprentissage. C'est pas magique et ça ne remplacera jamais un vrai cours de grammaire, mais pour enrichir son vocabulaire de manière passive pendant qu'on procrastine sur le web, y'a pire comme méthode...

  • ✇Korben
  • WeekInPapers - Pour suivre la recherche en informatique sans se noyer
    Vous avez déjà essayé de suivre ce qui se passe dans la recherche en informatique ? Moi oui, et c'est l'enfer. Chaque semaine, des centaines de nouveaux papiers débarquent sur arXiv . Et entre le machine learning, la vision par ordinateur, la crypto, le NLP et tout le reste, y'a de quoi perdre la tête. Et puis bon, lire des abstracts de 500 mots bourrés de jargon technique, c'est pas vraiment ce qu'on fait pour se détendre le dimanche... Du coup ça tombe bien puisque WeekInPapers tente de résoud

WeekInPapers - Pour suivre la recherche en informatique sans se noyer

Par : Korben
7 février 2026 à 10:07

Vous avez déjà essayé de suivre ce qui se passe dans la recherche en informatique ? Moi oui, et c'est l'enfer. Chaque semaine, des centaines de nouveaux papiers débarquent sur arXiv . Et entre le machine learning, la vision par ordinateur, la crypto, le NLP et tout le reste, y'a de quoi perdre la tête. Et puis bon, lire des abstracts de 500 mots bourrés de jargon technique, c'est pas vraiment ce qu'on fait pour se détendre le dimanche...

Du coup ça tombe bien puisque WeekInPapers tente de résoudre ce problème. Le concept est simple : chaque semaine, le site liste tous les papiers publiés sur arXiv dans le domaine de l'informatique, avec des résumés générés par IA et un glossaire des termes techniques. L'idée, c'est de rendre la recherche accessible aux gens comme moi qui n'ont pas un doctorat en deep learning.

Le site couvre une trentaine de catégories différentes : Machine learning, vision par ordinateur, intelligence artificielle, traitement du langage naturel, robotique, cryptographie, architecture hardware, graphisme, interaction homme-machine... Bref, à peu près tous les domaines de l'informatique.

Cette semaine par exemple, y'avait plus de 300 papiers listés. Rien que ça...

L'interface est plutôt bien foutue puisque vous avez une sidebar avec des filtres pour sélectionner les catégories qui vous intéressent. Et chaque papier apparaît sous forme de tuile cliquable avec le titre, la date, les tags de catégorie et l'identifiant arXiv. Vous survolez une tuile et hop, l'abstract s'affiche. Et si vous cliquez, vous avez les détails complets.

Ce qui est cool, c'est que les papiers sont souvent taggés dans plusieurs domaines. Du coup, un article sur les réseaux de neurones pour la génération vidéo apparaîtra à la fois dans machine learning et dans vision par ordinateur. C'est chouette pour ne pas louper des trucs qui chevauchent plusieurs disciplines.

Ce projet a été créé par Matthew Oxley et moi, ce que je préfère, ce sont les résumés générés par un LLM qui permettent d'avoir une idée rapide de ce que raconte un papier sans se taper 15 pages de formules mathématiques. Après, si un truc vous intéresse vraiment, rien ne vous empêche d'aller lire le papier original, évidemment.

Voilà, pour les chercheurs, les étudiants ou juste les curieux qui veulent rester au courant des dernières avancées, c'est une ressource plutôt pratique. En tout cas, plus pratique que de faire du doom-scrolling sur X en espérant tomber sur un thread intéressant.

  • ✇Korben
  • Reinstall - Le script ultime pour réinstaller n'importe quel OS sur votre VPS (même Windows)
    Aujourd'hui, on va aller un peu plus loin que les simples bidouilles habituelles car je vais vous présenter Reinstall , un outil qui va peut-être vous changer la vie si vous gérez des serveurs distants. Vous connaissez la chanson... vous avez un VPS sous Debian et vous voulez passer sous Arch pour faire votre malin. Sauf que pour opérer ce changement, c'est la galère assurée !! Faut passer par l'interface web de l'hébergeur, booter sur une ISO via une console VNC qui rame sa maman, et prier pou

Reinstall - Le script ultime pour réinstaller n'importe quel OS sur votre VPS (même Windows)

Par : Korben
6 février 2026 à 10:22

Aujourd'hui, on va aller un peu plus loin que les simples bidouilles habituelles car je vais vous présenter Reinstall , un outil qui va peut-être vous changer la vie si vous gérez des serveurs distants.

Vous connaissez la chanson... vous avez un VPS sous Debian et vous voulez passer sous Arch pour faire votre malin. Sauf que pour opérer ce changement, c'est la galère assurée !! Faut passer par l'interface web de l'hébergeur, booter sur une ISO via une console VNC qui rame sa maman, et prier pour que le réseau revienne après le reboot.

Eh bien ça c'est terminé grâce à ce script Reinstall. Vous lui balancez une commande, le script s'occupe de tout, et hop, votre serveur redémarre sur le nouvel OS de votre choix. Pas besoin d'accès IPMI, pas besoin de supplier le support technique, ça marche tout seul.

Et ça supporte pas mal d'OS... Côté Linux, y'a 19 distributions majeures : Alpine, Debian (de 9 à 13), Ubuntu (de 16.04 à 25.10), toute la famille Red Hat (AlmaLinux, Rocky, Oracle), Fedora, Arch, Gentoo, NixOS... Bref, y'a tout ce qu'il faut.

Et le truc qui va plaire à ceux qui font du cloud, c'est également le support de Windows. En effet, le script permet d'installer Windows Vista, 7, 8.1, 10, 11 et même Windows Server 2025.

Et rassurez-vous, il n'utilise pas des images bricolées par on ne sait qui, mais les ISO officielles de chez Microsoft. Lui se content d'injecter automatiquement les drivers VirtIO pour que ça tourne comme un charme sur n'importe quel cloud (AWS, GCP, Oracle Cloud...).

Aussi, le point le plus chiant quand on réinstalle un serveur distant, c'est la config réseau. Si on se loupe, on perd l'accès SSH et c'est fini. Reinstall gère ça intelligemment puisqu'il détecte votre IP (statique ou dynamique), gère l'IPv6, les passerelles exotiques et même les serveurs ARM.

Ce qu'il vous faut avant de tout casser

  • RAM : 256 Mo pour Alpine/Debian, 1 Go pour Windows.
  • Disque : 1 Go pour Linux, 25 Go minimum pour Windows.
  • Accès : Un accès root/admin sur la machine actuelle.
  • Temps estimé : Environ 5 à 15 minutes selon la vitesse de connexion de votre serveur.

Un petit avertissement quand même... Ce script ne gère pas les conteneurs type OpenVZ ou LXC. Faut que ce soit une vraie VM (KVM, VMware, Hyper-V) ou un serveur bare-metal.

Le tuto ! Le tuto !

C'est là que ça devient drôle. Pour installer un nouveau Linux (disons Debian 13) depuis votre système actuel, il suffit de faire un petit :

# Télécharger le script
curl -O https://raw.githubusercontent.com/bin456789/reinstall/main/reinstall.sh

# Lancer la réinstallation
bash reinstall.sh debian 13 --password "VotreMotDePasse"

Si vous voulez tenter l'aventure Windows :

bash reinstall.sh windows --image-name "Windows 11 Enterprise LTSC 2024" --lang fr-fr

Le script tourne même depuis Windows (via un .bat) si vous voulez faire l'inverse et repasser sous Linux.

Perso, je trouve ça quand même génial pour tester des trucs sans passer des plombes à configurer des ISO. Ça dépanne grave quand on veut repartir on une base saine en un clin d'œil. D'ailleurs, si vous avez besoin de sécuriser vos serveurs après l'install, j'avais parlé de Fail2Ban il y a quelques temps, et c'est toujours une bonne idée. Et si vous avez peur de perdre vos données, jetez un œil à Restic pour vos backups.

Bref, si vous gérez des VPS et que vous en avez marre des consoles web préhistoriques, foncez tester ce truc (sur une machine de test d'abord, hein, venez pas pleurer après).

Bon, je vous laisse… Je vais aller me faire un petit café !

  • ✇Korben
  • Nginx Proxy Manager - Le reverse proxy que même ma grand-mère pourrait configurer
    L'autre jour, je voulais juste exposer un petit service tournant sur mon NAS pour y accéder à distance quand je suis en déplacement. Alors je me suis dit "Allez, je vais faire ça propre avec Traefik" mais bon, debugger du fichier YAML parce qu'on oublie des indentations à un moment ça casse la tête. J'ai +40 balais et pas que ça à foutre. Si vous hébergez vos propres services à la maison (self-hosting powaaaah !) et que vous êtes un peu bordélique comme moi, vous installez un truc, puis un autre

Nginx Proxy Manager - Le reverse proxy que même ma grand-mère pourrait configurer

Par : Korben
3 février 2026 à 08:48

L'autre jour, je voulais juste exposer un petit service tournant sur mon NAS pour y accéder à distance quand je suis en déplacement. Alors je me suis dit "Allez, je vais faire ça propre avec Traefik" mais bon, debugger du fichier YAML parce qu'on oublie des indentations à un moment ça casse la tête. J'ai +40 balais et pas que ça à foutre.

Si vous hébergez vos propres services à la maison (self-hosting powaaaah !) et que vous êtes un peu bordélique comme moi, vous installez un truc, puis un autre, et vous finissez avec une collection de ports impossible à mémoriser du genre monip:8080, monip:32400, monip:9000… Aarrgh, l'enfer !!!

Et ne me lancez pas sur la gestion des certificats SSL !! Si vous voulez faire ça bien, faut générer des certificats Let's Encrypt à la main pour chaque service, modifier les fichiers de conf Nginx en priant pour ne pas oublier un point-virgule… et j'en passe et des pas mûres… Alors je sais, oui ça nous occupe et pendant ce temps là, on n'est pas dehors en train de voler des voitures mais j'sais pas vous, moi j'ai mieux à faire.

Hé bien, figurez-vous les copains, qu'il existe un outil qui transforme ce cauchemar en promenade de santé. Ça s'appelle Nginx Proxy Manager, et une fois que vous aurez lu mon article et testé vous penserez : "Mais pourquoi je me suis emmerdé la vie pendant tout ce temps, mortecouille ?!".

Nginx Proxy Manager, c'est quoi ce truc ?

En gros, c'est une interface graphique super propre pour gérer Nginx. Au lieu de taper des lignes de commandes et d'éditer des fichiers de config obscurs, vous avez un beau tableau de bord pour :

  1. Rediriger vos domaines (ex: plex.mondomaine.fr) vers vos conteneurs Docker.
  2. Gérer vos certificats SSL (HTTPS) automatiquement.
  3. Sécuriser l'accès à certains services avec un mot de passe.

Mais en vrai, c'est plus riche que ça. Dans la barre du haut, vous avez tout ce qu'il faut pour piloter votre reverse proxy comme un adulte responsable : des hosts (proxy, redirections, streams, 404), des certificats (Let's Encrypt ou certifs locaux), des utilisateurs, des règles d'accès (Access Lists), et même des logs d'audit pour savoir qui a fait quoi (au cas où un de vos potes "teste un truc vite fait" et casse tout).

C'est le reverse proxy pour ceux qui veulent que ça marche, tout de suite, sans devenir ingénieur réseau bac+12 ou devoir se taper 2h d'explications IRL d'un barbu qui pue de la gueule ^^.

Installation en 3 minutes chrono (avec Docker)

Bon, on ne va pas y passer la nuit. La méthode la plus propre, c'est évidemment Docker Compose. Si vous ne l'avez pas, installez-le (allez, un petit apt install docker-compose et on n'en parle plus).

Créez un dossier nginx-proxy-manager et collez-y ce fichier docker-compose.yml :

version: '3.8'
services:
 app:
 image: 'jc21/nginx-proxy-manager:latest'
 restart: unless-stopped
 ports:
 - '8080:80' # Port HTTP public
 - '8181:81' # Port d'administration (à garder pour vous)
 - '8443:443' # Port HTTPS public
 volumes:
 - ./data:/data
 - ./letsencrypt:/etc/letsencrypt
 db:
 image: 'jc21/mariadb-aria:latest'
 restart: unless-stopped
 environment:
 MYSQL_ROOT_PASSWORD: 'npm'
 MYSQL_DATABASE: 'npm'
 MYSQL_USER: 'npm'
 MYSQL_PASSWORD: 'npm'
 volumes:
 - ./mysql:/var/lib/mysql

Petit piège à éviter : Faites gaffe si vous avez déjà un serveur web (Apache ou Nginx) qui tourne sur la machine hôte. Il va falloir couper le service ou changer les ports, sinon Docker va vous jeter une erreur parce que le port 80 est déjà pris. Du coup, vérifiez bien avec un petit netstat -tulpn | grep 80 avant de lancer la sauce.

Ah oui, et si vous utilisez un pare-feu comme UFW (ce que je vous recommande chaudement), n'oubliez pas d'ouvrir le port 81 : ufw allow 81. Sinon, vous allez pleurer devant une page blanche et vous demander pourquoi ça marche pas.

Ensuite, lancez la bête :

docker-compose up -d

Et voilà ! C'est tout. Votre serveur tourne. Si vous avez des erreurs, c'est probablement parce que vos ports sont déjà utilisés. Ou que les dossiers data, Let's Encrypt et MySQL n'existent pas encore. Moi j'ai ça sur mon NAS :

La configuration que même ma grand-mère pourrait le faire

Ouvrez votre navigateur et allez sur http://votre-ip:8181 et créez vous un compte.

Une fois dedans, pour exposer un service, c'est ridicule tellement c'est easyyyy

  1. Cliquez sur "Add Proxy Host".
  2. Entrez votre nom de domaine (ex: nextcloud.mondomaine.fr).
  3. Indiquez l'IP de la machine et le port du service (ex: 8080).
  4. Allez dans l'onglet "SSL", cochez "Request a new SSL Certificate" et "Force SSL".
  5. Sauvegardez.

En fait, le seul truc qui peut coincer, c'est la propagation DNS. Si vous venez d'acheter votre nom de domaine il y a 5 minutes, pas de panique si Let's Encrypt refuse de générer le certificat. Attendez une petite heure et réessayez. C'est classique.

Et hop, fini. Votre service est accessible en HTTPS, avec le petit cadenas vert qui va bien. Nginx Proxy Manager s'occupe de discuter avec Let's Encrypt et de renouveler le certificat tout seul. C'est carrément magique.

Tour d'horizon des fonctionnalités qui sauvent des week-ends

Parce que oui, Nginx Proxy Manager ne fait pas "juste" proxy + "cadenas". Dans le menu Hosts, vous avez plusieurs types de trucs à créer, et chacun sert à un usage bien précis. Et côté Certificats et sécurité, il y a de quoi faire sans sortir le marteau-piqueur.

Certificats Let's Encrypt (HTTP et DNS) + certifs locaux

On va commencer par le sujet qui donne des boutons : les certificats. Dans l'onglet Certificates, vous pouvez gérer tout ça au même endroit :

  • Let's Encrypt en HTTP-01 : le classique. NPM ouvre la voie, répond au challenge, et basta. Pratique pour un service.mondomaine.fr exposé "normalement".
  • Let's Encrypt en DNS-01 : là, c'est le mode "j'ai compris la vie". Vous pouvez valider le certificat via votre DNS (donc sans dépendre d'un port 80 accessible), et surtout ça permet les wildcards du style *.mondomaine.fr. Donc un seul certif et roule ma poule, même si vous ajoutez 12 sous-domaines demain à 3h du mat.
  • Certificats locaux : vous pouvez aussi importer un certificat existant (genre un certif de votre boîte, un truc interne, un CA maison, ou même un self-signed si vous aimez vivre dangereusement). Ça évite de dépendre de Let's Encrypt si vous êtes en mode "tout en local, rien sur Internet".

Et le meilleur c'est que NPM gère le renouvellement automatique. Donc plus de rappel calendrier "renouveler les certifs" tous les 2 mois, sinon c'est le drame et tout le monde vous écrit "ça marche plus ton truc".

Plusieurs comptes, parce que tout le monde n'est pas "admin"

Dans Users, vous pouvez créer plusieurs comptes pour accéder à l'interface. Typiquement :

  • un compte admin pour vous, le chef, le patron, le seigneur des reverse proxies.
  • un compte "moins dangereux" pour quelqu'un qui doit juste consulter ou bidouiller un truc sans toucher à toute l'infra.

Et ça, couplé aux Audit Logs (j'y reviens juste après), c'est très pratique quand plusieurs personnes mettent les mains dedans. Parce que "c'est pas moi, j'ai rien touché" est une phrase universelle, on la retrouve dans toutes les cultures.

Access Lists, le videur à l'entrée

Alors ça, c'est une des fonctions les plus sous-cotées. Les Access Lists permettent de mettre en place des règles d'accès et de les réutiliser partout :

  • Basic Auth (login/mot de passe) : parfait pour protéger une appli pas prévue pour être publique, ou un petit outil d'admin que vous ne voulez pas exposer "en clair".
  • Allow/Deny par IP : le top pour dire "seulement depuis mon IP / mon VPN / mon réseau". Et là, même si quelqu'un devine votre URL, il se prend un mur.

Vous créez une Access List une fois, et ensuite vous l'appliquez à vos Proxy Hosts. Du coup, pas besoin de refaire 50 fois la même conf. C'est propre, c'est net, c'est carré.

Les redirections propres (HTTP -> HTTPS, domaine A -> domaine B, etc.)

Besoin de rediriger un vieux domaine vers un nouveau ? Ou de faire un joli http:// qui part systématiquement en https:// ? Les Redirection Hosts servent exactement à ça. C'est bête mais ça évite d'aller trifouiller des règles Nginx à la main.

Exemples typiques :

  • mondomaine.fr -> www.mondomaine.fr
  • ancientruc.mondomaine.fr -> nouveautruc.mondomaine.fr
  • http -> https (pour les retardataires)

Streams - Quand ce n'est pas du HTTP mais que vous voulez quand même un reverse proxy

Le web, c'est bien, mais tout n'est pas en HTTP. Certaines applis parlent en TCP/UDP (bases de données, services réseau, protocoles chelous, etc.). C'est là que Streams entrent en jeu. Cette fonctionnalité vous permet de proxyfier des flux réseau, genre "ce port externe pointe vers ce port interne".

Alors oui, c'est plus "brut" que les Proxy Hosts, mais ça dépanne vraiment quand vous avez un service qui n'a rien à faire derrière un vhost HTTP. Et ça se configure aussi en 2 clics, sans incantations démoniaques.

404 Hosts - La sortie de secours

Les 404 Hosts, c'est la petite finition qui fait plaisir (non, rien à voir avec votre salon de massage préféré). Vous pouvez définir un "host poubelle" qui répond proprement quand quelqu'un tape un domaine qui n'existe pas chez vous, ou quand un bot scanne votre serveur en espérant trouver /phpmyadmin par magie.

Au lieu de laisser traîner une réponse moche ou ambiguë, vous renvoyez une 404 nette, propre, assumée. C'est pas de la sécurité absolue, mais c'est une bonne hygiène, et ça évite de donner trop d'infos aux curieux.

Audit Logs

Dans Audit Logs, vous avez l'historique des actions effectuées dans l'interface : création/modif de hosts, changements de certifs, etc. C'est le genre de truc dont on se fout… jusqu'au jour où on en a besoin. Et là, vous êtes content de pouvoir remonter le film de l'horreur.

Et enfin, mon bonus : Le mode "je sais ce que je fais" (les options avancées Nginx)

Et si un jour vous voulez aller un cran plus loin, NPM permet aussi d'ajouter des réglages plus "Nginx pur jus" par host (headers, règles, conf custom). Donc vous commencez en mode clic-clic, et si vous devenez un peu psycho sur l'optimisation, vous pouvez aussi affiner. Sans tout casser, normalement.

2/3 conseils de daron pour éviter les boulettes

  • Ne laissez pas l'admin ouvert au monde : le port 8181 (ou votre port d'admin) c'est "pour vous". Si possible, limitez-le via pare-feu / VPN / IP autorisées. C'est le panneau de commande de votre château, pas un distributeur de bonbons.
  • Utilisez les Access Lists pour tout ce qui est sensible : dashboards, outils d'admin, services pas prévus pour Internet, etc.
  • Pensez au DNS-01 si vous voulez des wildcards ou si vous n'avez pas envie d'exposer le port 80.

Et par rapport aux autres ?

Je vous vois venir les puristes : "Oui mais Traefik c'est mieux car c'est dynamique". C'est vrai. J'ai testé Traefik, et c'est une tuerie pour les environnements qui bougent tout le temps. Mais sa config en YAML peut vite devenir une usine à gaz si vous débutez. Caddy est top aussi (un seul fichier de conf), mais il faut quand même mettre les mains dans le cambouis.

Perso, je pense que Nginx Proxy Manager est un excellent choix pour un homelab par exemple. C'est un peu le choix du confort, celui des grosses feignasses comme moi parce que c'est visuel, c'est du clic-bouton clic clic, et pour un petit serveur perso, c'est franchement imbattable.

Bref, si vous galérez encore avec vos vhosts Nginx, arrêtez de vous faire du mal. Installez ça, et profitez de la vie (et de vos week-ends).

Nginx Proxy Manager c'est par ici !

  • ✇Korben
  • Des scripts tout faits pour votre Proxmox
    Ce matin, je discutais avec Emmanuel (un lecteur fidèle) sur mon Linkedin Korben et il m'a partagé une ressource vraiment chouette. Si comme moi vous jouez un peu parfois avec un serveur Proxmox qui tourne à la maison pour vos expérimentations ou votre domotique, vous savez que configurer chaque VM ou conteneur LXC peut vite devenir chronophage. On copie-colle des commandes, on installe des dépendances, on se plante, on recommence... La routine quoi sauf que cette routine peut vite devenir relou

Des scripts tout faits pour votre Proxmox

Par : Korben
2 février 2026 à 10:54

Ce matin, je discutais avec Emmanuel (un lecteur fidèle) sur mon Linkedin Korben et il m'a partagé une ressource vraiment chouette. Si comme moi vous jouez un peu parfois avec un serveur Proxmox qui tourne à la maison pour vos expérimentations ou votre domotique, vous savez que configurer chaque VM ou conteneur LXC peut vite devenir chronophage. On copie-colle des commandes, on installe des dépendances, on se plante, on recommence... La routine quoi sauf que cette routine peut vite devenir reloue.

Hé bien, fini la galère !!!! Le projet dont je veux vous parler aujourd'hui s'appelle Proxmox VE Helper-Scripts et c'est une collection communautaire de scripts (plusieurs centaines !) qui permet d'installer et de configurer tout un tas de services en une seule ligne de commande.

En gros, c'est une immense boîte à outils pour votre hyperviseur. Vous avez besoin d'une instance Home Assistant pour gérer des ampoules connectées ? Hop, vous lancez le script et ça vous crée le conteneur LXC tout propre. Vous voulez monter un serveur média avec Plex ou Jellyfin ? Pareil, c'est généralement plié en quelques minutes (selon votre connexion évidemment).

Vous allez sur le site, vous cherchez l'outil qui vous intéresse, vous copiez la commande bash fournie (du style bash -c "...") et vous la collez dans le shell de votre nœud Proxmox. Et hop, l'assistant se lance. Il vous pose quelques questions (IP statique ou DHCP, espace disque, RAM... ce genre de trucs classiques) et puis tente de s'occuper de tout le reste (si les planètes sont bien alignées et que votre karma est au top !).

Je trouve ça génial parce que non seulement ça gère l'installation, mais ça s'occupe aussi des mises à jour. Mais bon, attention quand même parce qu'une mise à jour upstream peut parfois casser le script, donc prudence. C'est d'ailleurs super utile si vous utilisez Proxmox sur un Raspberry Pi (via Pimox), même si l'architecture ARM peut poser souci avec certains scripts. D'ailleurs, bonne nouvelle pour les utilisateurs de Pimox : il existe Pimox-Scripts , un portage de ces mêmes Helper Scripts mais adaptés spécifiquement pour ARM/Raspberry Pi. Tous les scripts ne sont pas encore dispos (moins de contributeurs), mais y'a déjà de quoi faire !

Parmi les scripts disponibles, on retrouve les classiques Docker, AdGuard Home, Pi-hole, mais aussi des trucs plus pointus pour le monitoring ou la sécurité. C'est vraiment très complet, y compris si vous êtes dans une optique de création de lab de cybersécurité .

Après, je dois quand même vous faire une petite mise en garde de circonstance. Car comme d'habitude, exécuter des scripts bash trouvés sur le net direct en root... comment dire... c'est jamais sans risque. Le code est open source et maintenu par une communauté active, ça facilite l'audit, mais ce n'est pas une garantie de sécurité absolue. Sauf si vous aimez vivre dangereusement, jetez toujours un œil au code avant de valider. La confiance n'exclut pas le contrôle !!

Un grand merci à Emmanuel pour le tuyau initial et à Karl pour l'info sur Pimox-Scripts !

  • ✇Korben
  • Vos agents IA sécurisés en -10 sec. sur Mac
    Si vous faites du "vibe coding" avec Claude ou Codex, vous savez que laisser un agent IA faire sa life, c'est un peu risqué. Si celui-ci se met à exécuter des rm -rf sur votre ordi de boulot, vous êtes dans la merde ! Heureusement, Kevin Lynagh a sorti Vibe et pour vous résumer le délire, c'est une VM Linux ultra-légère capable de sandboxer vos agents IA. Ce qu'il vous faut Un Mac ARM (M1, M2, M3...) macOS 13 Ventura minimum Temps estimé : 5 minutes Installation Hop, on commence par installer

Vos agents IA sécurisés en -10 sec. sur Mac

Par : Korben
2 février 2026 à 10:37

Si vous faites du "vibe coding" avec Claude ou Codex, vous savez que laisser un agent IA faire sa life, c'est un peu risqué. Si celui-ci se met à exécuter des rm -rf sur votre ordi de boulot, vous êtes dans la merde !

Heureusement, Kevin Lynagh a sorti Vibe et pour vous résumer le délire, c'est une VM Linux ultra-légère capable de sandboxer vos agents IA.

Ce qu'il vous faut

  • Un Mac ARM (M1, M2, M3...)
  • macOS 13 Ventura minimum
  • Temps estimé : 5 minutes

Installation

Hop, on commence par installer Vibe. Plusieurs options s'offrent à vous :

curl -LO https://github.com/lynaghk/vibe/releases/download/latest/vibe-macos-arm64.zip

unzip vibe-macos-arm64.zip

sudo mv vibe /usr/local/bin

Et là, c'est prêt. C'est du Rust pur compilé avec le framework Virtualization.framework d'Apple, donc ça va viiiiite !

Et ce que vous pouvez voir au lancement de Vibe, c'est le mapping entre vos dossiers locaux liés à Claude, Codex et compagnie, et les dossiers qui sont dans la VM.

Premier lancement

Pour démarrer une VM, c'est aussi simple que ça :

./vibe

Oui, c'est tout. 10 secondes plus tard, vous avez un shell Linux avec un accès réseau et un partage automatique de vos dossiers. Notez jute que la première fois il faut une connexion réseau pour télécharger l'image de base de Debian. Après, tout est en local.

Le truc cool, c'est que Vibe utilise un système copy-on-write où chaque VM part d'une image de base commune et seules les modifications sont stockées. Comme ça même si vous lancez 10 VMs, ça bouffe pas votre SSD.

Bon ok, j'en ai lancé que 2 en vrai mais l'idée est là ^^

Configurer Claude ou Codex

Ensuite c'est simple, il suffit de lancer la commande Claude ou Codex directement dans le terminal que ça vous a créé, de les configurer comme si vous étiez sur votre ordinateur et puis c'est parti, vous pouvez les lancer avec le mode --yolo pour Codex ou avec --allow-dangerously-skip-permissions pour Claude.

Et c'est tout ! Si ça fait de la merde, ce sera dans la VM et vous ne risquerez rien ! Les fichiers sont bien sûr créés et dispo dans le répertoire dans lequel vous avez lancé vibe. Mais tout sera exécuté dans la VM donc y'a plus aucun risque.

Bref, si vous faites du vibe coding et que vous voulez pas finir avec un sudo rm -rf / généré par une IA un peu trop enthousiaste... bah voilà quoi. Le tout en moins de 1200 lignes de Rust, open source sous licence MIT.

Taaadaaaa ! À découvrir ici !

  • ✇IA, Machine Learning, IoT, … – L'ADN
  • Mode et luxe : sortir de l’essoreuse TikTok Shop
    « Si je vous parle de poulet frit pour introduire une table ronde sur la mode, c'est parce qu'aujourd'hui, la mode, c'est moins une collection de vêtements qu'un ensemble de phénomènes viraux. » Brune Ouakrat plante le décor de cette table ronde de la Journée des Tendances 2026 avec cette litanie : poulet frit tasty crusty, Labubus velus […] L’article Mode et luxe : sortir de l’essoreuse TikTok Shop est apparu en premier sur L'ADN.

Mode et luxe : sortir de l’essoreuse TikTok Shop

« Si je vous parle de poulet frit pour introduire une table ronde sur la mode, c'est parce qu'aujourd'hui, la mode, c'est moins une collection de vêtements qu'un ensemble de phénomènes viraux. » Brune Ouakrat plante le décor de cette table ronde de la Journée des Tendances 2026 avec cette litanie : poulet frit tasty crusty, Labubus velus […]

L’article Mode et luxe : sortir de l’essoreuse TikTok Shop est apparu en premier sur L'ADN.

  • ✇Korben
  • Webhooks Proxy Tunnel – Vos webhooks en local sans payer Ngrok
    Ce matin, je cherchais un moyen simple de tester des webhooks en local sans passer par ce bon vieux Ngrok qui est devenu un peu relou avec ses limites en version gratuite. J'ai d'abord pensé à monter mon propre serveur VPN (coucou Tailscale), mais franchement flemme. Et puis tout à fait par hasard (aaah les joies de la sérendipité) je suis tombé sur cet outil qui devrait vous plaire, surtout si vous développez des applis qui doivent recevoir des notifications HTTP (GitHub, Stripe, Slack...). Ben

Webhooks Proxy Tunnel – Vos webhooks en local sans payer Ngrok

Par : Korben
29 janvier 2026 à 10:28

Ce matin, je cherchais un moyen simple de tester des webhooks en local sans passer par ce bon vieux Ngrok qui est devenu un peu relou avec ses limites en version gratuite. J'ai d'abord pensé à monter mon propre serveur VPN (coucou Tailscale), mais franchement flemme.

Et puis tout à fait par hasard (aaah les joies de la sérendipité) je suis tombé sur cet outil qui devrait vous plaire, surtout si vous développez des applis qui doivent recevoir des notifications HTTP (GitHub, Stripe, Slack...). Ben oui vous connaissez la galère... votre serveur de dev est sur "localhost", donc inaccessible depuis l'extérieur, du coup, impossible de recevoir ces fameux webhooks sans ouvrir votre routeur ou utiliser un tunnel.

C'est là qu'intervient Webhooks Proxy Tunnel !

Grâce à cet outil, au lieu de multiplier les intermédiaires, vous déployez votre propre tunnel... directement sur l'infrastructure de Cloudflare. Et le meilleur c'est que ça tourne généralement très bien sur leur offre gratuite (dans la limite des quotas Workers évidemment, donc attention si vous bourrinez comme un fifou).

L'outil utilise un Cloudflare Worker couplé à un Durable Object (une sorte de mini-serveur d'état). Le Worker reçoit alors les requêtes publiques sur une URL en HTTPS (genre "truc.workers.dev") et les transmet via une WebSocket à un petit client Node.js qui tourne sur votre machine. Et hop, le trafic arrive sur votre port local.

Perso, je trouve ça brillant car même si le trafic passe techniquement par Cloudflare (puisque c'est leur infra), vous gardez la main sur le code qui s'exécute et vous évitez d'envoyer vos données à un service tiers supplémentaire dont vous ignorez tout.

Pour l'installer, ne plus c'est hyper fastoche. Il vous faut juste un compte Cloudflare et Node.js. J'ai testé l'install en moins de 5 minutes, vous clonez le dépôt, vous installez les dépendances et vous lancez le déploiement (qui vous demandera de vous authentifier) :

git clone https://github.com/peter-leonov/webhooks-proxy-tunnel.git
cd webhooks-proxy-tunnel/worker
npm install
npm run deploy

Une fois déployé, le script vous donne une URL et il ne vous reste plus alors qu'à lancer le client local en lui disant où taper (par exemple votre port 3000) et le tour est joué !! Vous pouvez même gérer plusieurs tunnels en parallèle si vous bossez sur plusieurs projets, chaque tunnel ayant son ID unique.

Attention quand même, c'est conçu pour du développement hein, pas pour streamer de la 4K. Les requêtes doivent tenir en mémoire (limite de 100 Mo environ) donc sauf si vous transférez des fichiers énormes via vos webhooks, ça passera crème pour du JSON ou des petits payloads binaires.

Voilà, si vous cherchiez une alternative self-hosted et gratuite pour vos tests, c'est clairement un outil à garder sous le coude. Et si vous avez besoin de trucs plus costauds pour du réseau d'entreprise, jetez un œil à Tailscale ou Octelium .

Source

  • ✇Korben
  • jq-quest - Apprenez à maîtriser jq sans vous prendre la tête
    Si vous avez déjà croisé la route de jq , c'est probablement parce que vous vous la touchez un peu dans le terminal et que vous avez déjà joué avec du format JSON (logs, APIs, config...). Jq, tout le monde l'adore parce que ça filtre, ça mappe et surtout ça transforme du JSON directement depuis le terminal. Mais la syntaxe de ce truc, aïe aïe aïe, c'est comme faire de la Regex. C'est de l'apprentissage sur le tas surtout. Faut copier coller des trucs en provenance de RIP-StackOverflow ou de Chat

jq-quest - Apprenez à maîtriser jq sans vous prendre la tête

Par : Korben
28 janvier 2026 à 07:46

Si vous avez déjà croisé la route de jq , c'est probablement parce que vous vous la touchez un peu dans le terminal et que vous avez déjà joué avec du format JSON (logs, APIs, config...).

Jq, tout le monde l'adore parce que ça filtre, ça mappe et surtout ça transforme du JSON directement depuis le terminal. Mais la syntaxe de ce truc, aïe aïe aïe, c'est comme faire de la Regex. C'est de l'apprentissage sur le tas surtout. Faut copier coller des trucs en provenance de RIP-StackOverflow ou de ChatGPT-le-sang-de-la-veine. Et le pire c'est que 2 jours après, on a tout oublié !!! Puis lire la doc officielle, m'en parlez pas, c'est comme lire autre chose que mon site... c'est pas le criss de fun ^^.

Heureusement, pour ceux qui veulent vraiment monter en compétence sans s'endormir, il existe jq-quest .

C'est un petit projet sympa hébergé sur Codeberg qui propose une approche "learning by doing" (apprendre en faisant, pour les anglophobes). Au début, je pensais que c'était juste un QCM basique, mais en fait non puisqu'il faut vraiment taper les commandes et se salir les mains.

Pour essayer, suffit de cloner le dépôt, vous lancez le script, et on vous donne un input JSON et l'output attendu. À vous ensuite de trouver la bonne commande jq pour passer de l'un à l'autre.

Il vous faudra juste jq d'installé sur votre machine. Attention par contre, si vous êtes sous Windows, il faudra passer par WSL ou Git Bash, parce que le script .sh ne va pas aimer PowerShell.

Ça s'installe donc en deux secondes comme ceci :

git clone https://codeberg.org/gturri/jq-quest.git
cd jq-quest

Ensuite, vous lancez votre premier exercice :

./jq-quest.sh 1-pretty-print.json

Le script va alors vous afficher l'instruction, le JSON d'entrée et ce qu'il attend en sortie :

INSTRUCTION: Pretty print the json
INPUT: {"k1": "v1", "k2":[1, 3, 7]}
EXPECTED OUTPUT: {
 "k1": "v1",
 "k2": [
 1,
 3,
 7
 ]
}

Vous tapez votre proposition de filtre, et il vous dit si c'est bon ou pas. Pour proposer une solution, suffit de taper :

./jq-quest.sh 1-pretty-print.json 'SOLUTION'

Si vous séchez (et croyez-moi, ça va arriver), vous pouvez demander un indice avec :

./jq-quest.sh 1-pretty-print.json hint

Ou carrément la solution si vous êtes au bout du rouleau :

./jq-quest.sh 1-pretty-print.json solution

Mais rassurez vous, les exercices sont progressifs, ça commence par du "pretty print" basique (le truc qu'on fait tous), puis on attaque les filtres simples, les clés spéciales, les tableaux, et petit à petit on arrive sur des trucs bien plus costauds comme les itérations sur objets, le slicing ou les opérations mathématiques.

Ce genre de tuto interactif c'est top parce que jq, c'est hyper puissant, mais la courbe d'apprentissage est un peu raide au début. Là, en une petite heure, vous pouvez plier les exercices et avoir enfin compris la logique du truc au lieu de tâtonner à chaque fois.

D'ailleurs, si vous aimez ce genre d'outils pour parser de la donnée, je vous rappelle qu'il existe aussi fq pour les fichiers binaires ou encore htmlq pour le HTML . J'aurais pu vous parler d'outils graphiques pour faire ça, mais franchement, rien ne vaut la ligne de commande pour comprendre ce qu'on fait. Et si vous êtes plutôt Python, jetez un oeil à jc qui convertit la sortie des commandes classiques en JSON.

Bref, si vous voulez arrêter de souffrir à chaque fois que vous devez extraire un champ d'un JSON interminable, faites un tour sur jq-quest, ça va vous dérouiller les neurones.

Si vous êtes dev et que ce genre de tuto vous parle, suivez Korben sur LinkedIn pour d'autres découvertes.

Un grand merci à Guillaume pour la découverte.

Tendances 2026 : La Vibe et le Caractère

Face au « slop » algorithmique et à la dilution du sens, 2026 marque le règne de la vibe. Entre mémification et protocoles, comment retrouver notre agentivité ? En formulant un plaidoyer pour le caractère ?

L’article Tendances 2026 : La Vibe et le Caractère est apparu en premier sur L'ADN.

  • ✇IA, Machine Learning, IoT, … – L'ADN
  • Voyager au bon rythme : la philosophie du temps long
    Venise accueille près de 25 millions de touristes par an. Une situation intenable pour La Sérénissime qui a dû mettre en place des mesures drastiques afin de contrôler les flux de vacanciers. Barcelone, Rome, Santorin : partout, le même constat. Le tourisme de masse a transformé des destinations de rêve en zones de saturation où l'expérience […] L’article Voyager au bon rythme : la philosophie du temps long est apparu en premier sur L'ADN.

Voyager au bon rythme : la philosophie du temps long

Par : L'ADN
13 janvier 2026 à 15:00

Venise accueille près de 25 millions de touristes par an. Une situation intenable pour La Sérénissime qui a dû mettre en place des mesures drastiques afin de contrôler les flux de vacanciers. Barcelone, Rome, Santorin : partout, le même constat. Le tourisme de masse a transformé des destinations de rêve en zones de saturation où l'expérience […]

L’article Voyager au bon rythme : la philosophie du temps long est apparu en premier sur L'ADN.

  • ✇Korben
  • Microsoft débranche enfin MDT - Comment déployer Windows sans se ruiner (et sans le cloud) ?
    Snif, snif sniiiif, c'est la fin d'une époque pour tous les admins système qui ont les mains dans le cambouis depuis plus de deux décennies. Hé oui les amis, Microsoft vient de décider de débrancher la prise de son vénérable Microsoft Deployment Toolkit (MDT). Adios ce outil né en 2003 (sous le nom de BDD à l'époque) qui nous a sauvés la mise pendant plus de 20 ans pour installer des parcs entiers de bécanes sans y passer la nuit ! Alors pourquoi ce revirement ? Bon, alors officiellement, c'est

Microsoft débranche enfin MDT - Comment déployer Windows sans se ruiner (et sans le cloud) ?

Par : Korben
13 janvier 2026 à 14:19

Snif, snif sniiiif, c'est la fin d'une époque pour tous les admins système qui ont les mains dans le cambouis depuis plus de deux décennies.

Hé oui les amis, Microsoft vient de décider de débrancher la prise de son vénérable Microsoft Deployment Toolkit (MDT). Adios ce outil né en 2003 (sous le nom de BDD à l'époque) qui nous a sauvés la mise pendant plus de 20 ans pour installer des parcs entiers de bécanes sans y passer la nuit !

Alors pourquoi ce revirement ?

Bon, alors officiellement, c'est pour nous faire passer à des solutions "modernes" mais officieusement, beaucoup y voient une manœuvre pour nous pousser vers le passage à la caisse cloud avec Windows Autopilot et Intune. Forcément, un outil gratuit, local, qui ne remonte quasiment aucune télémétrie (contrairement aux usines à gaz actuelles) et qui permet de faire des masters aux petits oignons sans dépendre d'Azure, ça commençait à faire tache dans le catalogue de Redmond. (oooh yeah !)

Le problème, c'est que pour pas mal de boîtes, Autopilot nécessite des licences spécifiques (M365 Business Premium ou Intune Plan 1) et une connexion internet béton. Hé oui, tout le monde n'a pas envie de dépendre du cloud pour provisionner un poste.

Ça tombe bien, vous me connaissez, je ne vais pas vous laisser tomber. Alors si vous faites partie de ceux qui se retrouvent le cul entre deux chaises, sachez qu'il existe des alternatives sérieuses et surtout gratuites ou open source.

Pour l'imagerie pure et dure (le bare-metal), mon chouchou reste FOG Project . C'est une bête de course open source qui remplace avantageusement la partie imagerie de WDS. Ça gère le boot réseau (PXE), le multicast pour arroser des dizaines de PC d'un coup, et ça permet de capturer et déployer vos images Windows 10 ou 11. Et pour ceux qui veulent du plus classique, Rescuezilla (le clone graphique de Clonezilla) fait aussi un boulot béton pour cloner des disques.

Mais là où ça devient vraiment chouette, c'est pour la configuration post-installation car plutôt que de s'enquiquiner avec des task sequences complexes, je vous conseille de regarder du côté d'Ansible. Oui, ça marche aussi pour Windows via WinRM (le mode standard) ou SSH ! Vous lancez un petit playbook YAML et hop, vos softs sont installés, vos paramètres de sécurité sont appliqués et votre machine est prête à l'emploi. C'est propre, reproductible et ça évite les erreurs humaines.

Pour ceux qui veulent bidouiller leur serveur de boot, n'oubliez pas non plus d'aller voir mon article sur Netboot.xyz qui est une mine d'or pour booter un grand nombre d'OS par le réseau.

Bref, même si Microsoft tente de nous enfermer dans sa cage dorée avec Autopilot, la communauté a déjà tout ce qu'il faut pour qu'on reste maîtres de notre infrastructure. Alors courage les admins !!! Une page se tourne mais les outils qui déchirent sont toujours là !

Source

  • ✇Korben
  • 100 trillions de tokens analysés - Comment l'IA est-elle vraiment utilisée ?
    100 trillions de tokens, c'est assez incroyable comme chiffre ! Et si vous vous demandez ce que c'est, hé bien c'est le volume de données qu'OpenRouter vient d'analyser pour publier son rapport "State of AI" de décembre dernier. Et perso, je ne m'attendais vraiment pas à ces résultats. OpenRouter, pour ceux qui ne connaissent pas, c'est un routeur de modèles IA qui permet d'accéder à tous les LLM du marché via une seule API. Du coup, ils ont une vue unique sur comment les gens utilisent vraiment

100 trillions de tokens analysés - Comment l'IA est-elle vraiment utilisée ?

Par : Korben
6 janvier 2026 à 08:58

100 trillions de tokens, c'est assez incroyable comme chiffre ! Et si vous vous demandez ce que c'est, hé bien c'est le volume de données qu'OpenRouter vient d'analyser pour publier son rapport "State of AI" de décembre dernier. Et perso, je ne m'attendais vraiment pas à ces résultats.

OpenRouter, pour ceux qui ne connaissent pas, c'est un routeur de modèles IA qui permet d'accéder à tous les LLM du marché via une seule API. Du coup, ils ont une vue unique sur comment les gens utilisent vraiment ces outils. Pas ce qu'ils prétendent en faire sur LinkedIn (loool), mais ce qu'ils font vraiment avec.

Et là, première surprise : le roleplay représente 52% de l'usage des modèles open-source. Y'a plus de la moitié des tokens qui passent par DeepSeek, Qwen et compagnie servent à... jouer des rôles, à discuter avec des personnages fictifs, à faire du chat de base avec l'IA. Pas à coder, pas à bosser, pas à révolutionner l'humanité. Juste à s'amuser.

Du coup, ça relativise pas mal le discours ambiant sur l'IA qui va tous nous remplacer au boulot. Visiblement, pour l'instant, elle nous aide surtout à nous divertir.

Le roleplay domine largement l'usage des modèles open-source ( Source )

Deuxième claque : l'Asie est passée de 13% à 31% de l'usage mondial en un an. Singapour est maintenant le deuxième pays utilisateur après les États-Unis, devant l'Allemagne et la Chine. L'Europe, elle, stagne à 21%. Et l'Afrique ? 0,46%. Y'a encore du boulot niveau démocratisation...

L'Asie explose, l'Europe stagne, l'Afrique reste à la traîne ( Source )

Côté modèles, DeepSeek écrase tout le monde en volume avec 14,37 trillions de tokens. Qwen suit avec 5,59 trillions, puis Meta LLaMA. OpenAI ? Seulement 1,65 trillion. Mais attention, c'est du volume brut. Quand on regarde les usages pros, Claude écrase la programmation (60%+ du trafic code), pendant que DeepSeek se tape... le roleplay et le chat casual.

Le truc vraiment remarquable, c'est la montée des modèles capables de raisonner (genre o1). En janvier 2025, ils représentaient 0% mais aujourd'hui, ils sont à la tête de 50% des nouveaux usages. L'inférence multi-étapes, la délibération, la planification... Tout ça a explosé en moins d'un an. On est passés de chatbots basiques à des systèmes qui réfléchissent avant de répondre.

Les modèles raisonnants passent de 0% à 50%+ en un an ( Source )

Et les prompts ? Ils ont quadruplé de longueur. De 1 500 tokens en moyenne à plus de 6 000. Les gens sont devenus plus bavards avec leurs assistants numériques, ou alors ils ont compris qu'il fallait être plus précis pour obtenir de bons résultats.

Dernier point intéressant, le prix n'a quasiment aucun impact sur l'usage. Une baisse de 10% du prix ne génère que 0,5 à 0,7% d'usage supplémentaire. Les utilisateurs choisissent leurs modèles sur la qualité, pas sur le tarif. Bref, ce n'est pas encore un marché de commodité. La course à la meilleure performance continue.

Alors oui, l'étude a ses limites car c'est une seule plateforme, et pas l'ensemble du marché. Mais avec 100 trillions de tokens, c'est quand même un sacré échantillon. Et ça dit des choses sur notre rapport à ces outils qu'on ne peut pas ignorer, encore une fois.

Source

  • ✇Korben
  • WOLS, le standard open source qui fait pousser les QR codes comme des champignons
    Après les standards pour les APIs, après les standards pour le web, après les standards pour à peu près tout ce qui touche à l'informatique, voici... un standard pour les champignons ! Et non, je ne parle pas des champignons de Mario qui vous font grandir de partout (hi hi). Je parle de vrais champignons. Ceux qu'on cultive pour les manger. Bref, ceux qui représentent une industrie de 50 milliards de dollars qui gère encore ses données sur des feuilles Excel et des bouts de papier collés sur des

WOLS, le standard open source qui fait pousser les QR codes comme des champignons

Par : Korben
6 janvier 2026 à 08:37

Après les standards pour les APIs, après les standards pour le web, après les standards pour à peu près tout ce qui touche à l'informatique, voici... un standard pour les champignons !

Et non, je ne parle pas des champignons de Mario qui vous font grandir de partout (hi hi). Je parle de vrais champignons. Ceux qu'on cultive pour les manger. Bref, ceux qui représentent une industrie de 50 milliards de dollars qui gère encore ses données sur des feuilles Excel et des bouts de papier collés sur des bocaux.

Shiitake happens, comme on dit ^^.

Heureusement des champignonistes plus malin que les autres ont créé WOLS, pour WeMush Open Labeling Standard . L'idée c'est d'encoder toutes les infos de traçabilité de vos cultures fongiques directement dans un QR code. Origine du mycélium, substrat utilisé, dates d'inoculation, conditions de croissance... Hop, tout ça compressé dans un petit carré noir et blanc que vous pouvez scanner.

Le truc couvre 5 types de spécimens (de la culture mère jusqu'à la récolte), 4 stades de croissance, et propose 3 formats de QR différents selon vos besoins. Vous voulez juste un truc compact ? 500 octets. Vous voulez du JSON-LD pour faire le malin avec vos métadonnées ? 400 octets en mode embedded. Vous êtes parano et vous voulez chiffrer vos précieuses données de pleurotes ? AES-256-GCM, mon ami.

D'ailleurs, le projet est agnostique côté espèces : Que vous cultiviez du Lion's Mane (le champignon du hipster), du Shiitake (le classique), des pleurotes ou même du Reishi pour vos smoothies santé, le standard s'en fiche et encode tout pareil. De quoi faire pleurer de joie tous les myciculteurs de la planète. Ou les faire pleurote de joie, si vous préférez.

(Oui, je vous ai eu "champignoniste", c'est pas un vrai mot ^^)

Côté technique, c'est du sérieux malgré le sujet rigolo. Y'a des implémentations en JavaScript (@wemush/wols), en Python (wols), et même un conteneur Docker pour les feignasses qui veulent pas installer de dépendances. Le tout sous licence open source , donc vous pouvez forker ça et l'adapter à vos besoins sans vous prendre le cèpe. D'ailleurs si vous cherchez un nom pour votre propre projet open source , évitez les jeux de mots sur les champignons, c'est déjà pris.

Bref, si vous cultivez des champignons (légaux, hein les toxicos) et que vous en avez marre de noter vos infos sur des post-it qui finissent par moisir comme vos substrats ratés, ce standard pourrait bien être la truffe numérique que vous attendiez.

  • ✇Korben
  • Comment j'ai viré Algolia et recréé le Google de 1998 sur mon site
    Bon, faut qu'on parle un peu du moteur de recherche de mon site. Ceux qui l'ont déjà utilisé savent de quoi je parle : c'était pas terrible. Enfin, « pas terrible » j'suis gentil. C'est un espèce d'overlay avec des résultats certes fiables mais c'était vraiment pas pratique. Et en plus de ça, comme j'ai un site statique généré avec Hugo, je passais par Algolia pour la recherche. Si vous ne connaissez pas, Algolia c'est un service cloud qui indexe votre contenu et vous fournit une API de recherch

Comment j'ai viré Algolia et recréé le Google de 1998 sur mon site

Par : Korben
31 décembre 2025 à 12:00

Bon, faut qu'on parle un peu du moteur de recherche de mon site. Ceux qui l'ont déjà utilisé savent de quoi je parle : c'était pas terrible. Enfin, « pas terrible » j'suis gentil. C'est un espèce d'overlay avec des résultats certes fiables mais c'était vraiment pas pratique.

Et en plus de ça, comme j'ai un site statique généré avec Hugo, je passais par Algolia pour la recherche. Si vous ne connaissez pas, Algolia c'est un service cloud qui indexe votre contenu et vous fournit une API de recherche ultra-rapide. Sur le papier c'est génial et dans la pratique aussi d'ailleurs sauf que voilà, ça coûte des sous. Et mon site rencontre un franc succès ces derniers temps (merci à vous !), donc j'ai de plus en plus de visiteurs, donc de plus en plus de recherches, donc une facture Algolia qui grimpe gentiment chaque mois.

Du coup je me suis dit : « Et si je trouvais une solution de recherche pour sites statiques ? » Parce que oui, ça existe et c'est comme ça que j'ai découvert Pagefind.

Pagefind c'est donc un moteur de recherche statique open source développé par CloudCannon qui fonctionne comme ceci : Au moment du build de votre site, Pagefind parcourt tout votre HTML généré et crée un index de recherche qu'on peut interroger avec un peu de JS. Y'a donc plus d'API, et tout se fait localement sur le navigateur des internautes.

Bref, ça avait l'air très cool alors évidemment, je me suis lancé dans l'aventure et comme j'aime bien me compliquer la vie, j'ai décidé de pas juste intégrer Pagefind tel quel. Non non. J'ai voulu recréer l'interface du Google de 1998 parce que à quoi bon avoir son propre site web si on peut pas s'amuser un peu ^^.

Laissez-moi donc vous raconter cette aventure.

Le problème avec Algolia

Leur service est excellent, je dis pas le contraire, la recherche est rapide, les résultats sont pertinents, l'API est bien foutue mais voilà, y'a le modèle de pricing puisque Algolia facture au nombre de requêtes de recherche.

Plus les gens cherchent sur votre site, plus vous payez et quand vous avez un site qui fait plusieurs millions de pages vues par mois, bah... ça chiffre vite. En gros je dépasse très vite les 10 000 recherches offertes chaque semaine et ensuite ça chiffre. C'est pas la mort, mais c'est un coût récurrent débile pour un truc qui pourrait être gratuit.

En plus de ça, y'a la dépendance à un service externe. Si Algolia tombe, ma recherche tombe. Et si Algolia change ses prix, je vais devoir subir. Même chose si Algolia décide de modifier son API... il faudra que j'adapte mon code. Bref, c'est le cloud dans toute sa splendeur... C'est pratique mais on n'est jamais vraiment chez nous.

Pagefind à la rescousse

Pagefind résout donc tous ces problèmes d'un coup. C'est un outil en ligne de commande qui s'exécute après votre générateur de site statique (Hugo dans mon cas, mais ça marche avec Jekyll, Eleventy, Astro, ou n'importe quoi d'autre).

Concrètement, vous lancez :

npx pagefind --site public

Et Pagefind va :

    1. Scanner tous vos fichiers HTML dans le dossier public/
    1. Extraire le contenu textuel (en ignorant la nav, le footer, les pubs si vous lui dites)
    1. Créer un index de recherche optimisé
    1. Générer des fichiers JavaScript pour interroger cet index côté client

Et le résultat c'est un dossier pagefind/ qui contient tout ce qu'il faut. Ensuite; à vous de servir ces fichiers statiquement avec le reste de votre site, et la magie pourra opérer !

L'index pour mes 18 000 articles fait environ 1,5 Go. Ça peut paraître beaucoup, mais Pagefind est malin car il découpe l'index en fragments et ne charge que ce qui est nécessaire pour la recherche en cours. Du coup en pratique, une recherche typique télécharge quelques centaines de Ko, et pas plus.

L'intégration technique

Pour intégrer Pagefind dans mon workflow Hugo, j'ai donc été cherché le binaire, je l'ai mis sur mon serveur et je l'ai appelé dans un cron comme ça, je rafraichi l'index de recherche 1 fois par jour (et pas à chaque génération du site).

0 4 * * * /home/manu/pagefind/pagefind --site /home/manu/public_html --output-path /home/manu/public_html/pagefind >> /var/log/pagefind.log 2>&1

J'ai aussi créé un fichier de configuration pagefind.yml pour affiner le comportement :

root_selector: "[data-pagefind-body]"
exclude_selectors:
 - "header"
 - ".site-header"
 - "footer"
 - ".sidebar"

L'astuce ici c'est d'indexer uniquement les div ayant la class data-pagefind-body='true' et d'exclure les éléments qui ne font pas partie du contenu éditorial afin de ne pas indexer ce qui se trouve dans le header, les natives, le footer...etc.

Côté JavaScript, Pagefind utilise les imports ES6 dynamiques. Ça veut dire que le moteur de recherche n'est chargé que quand l'utilisateur lance effectivement une recherche :

async function initPagefind() {
pagefind = await import('/pagefind/pagefind.js');
await pagefind.init();
}

Et pour faire une recherche :

const search = await pagefind.search("linux");
// search.results contient les IDs des résultats
// On charge le contenu de chaque résultat à la demande
for (const result of search.results) {
 const data = await result.data();
 console.log(data.url, data.meta.title, data.excerpt);
}

C'est bien fichu parce que search.results retourne immédiatement les références des résultats, mais le contenu réel (titre, extrait, URL) n'est chargé que quand vous appelez result.data(). Du coup vous pouvez implémenter une pagination propre sans télécharger les données de milliers de résultats d'un coup.

Le délire rétro - Recréer Google 1998

Maintenant que j'avais un moteur de recherche fonctionnel, fallait l'habiller. Et c'est là que j'ai eu cette idée un peu débile : Pourquoi pas recréer l'interface du Google de 1998 ?

Pour les plus jeunes qui lisent ça, Google en 1998 c'était une page blanche avec un logo, un champ de recherche, et deux boutons : « Google Search » et « I'm Feeling Lucky« . Pas de suggestions, pas de carrousels, pas de pubs... Juste un champs de recherche. C'était la belle époque !

J'ai donc créé une page de recherche avec deux vues distinctes. La page d'accueil avec le logo centré et le champ de recherche au milieu, exactement comme le Google originel.

Et la page de résultats avec le logo en petit en haut à gauche et les résultats en dessous.

Pour le code CSS, j'ai voulu être fidèle à l'époque. Times New Roman comme police par défaut, les liens en bleu souligné qui deviennent violet une fois visités. Et surtout, les boutons avec l'effet 3D des interfaces Windows 95 :

.search-button:active { border-style: inset; }

Ce border: outset et border-style: inset au clic, c'est exactement ce qui donnait cet effet de bouton en relief qu'on avait partout dans les années 90. Pour moi, ça fait toute la différence pour l'authenticité. Même le logo, je l'ai volontairement « dégradé » pour qu'il soit de la même qualité que le logo Google d'origine.

La pagination « Koooooorben »

Vous vous souvenez de la pagination de Google avec « Goooooogle » en bas de page ? Le nombre de « o » correspondait au nombre de pages de résultats. J'ai fait pareil, mais avec « Koooooorben ».

let logo = 'K'; for (let i = 0; i < oCount; i++)
{
logo += o;
} logo += 'rben'; }

Plus il y a de résultats, plus il y a de « o ». C'est complètement inutile mais ça me fait marrer à chaque fois que je le vois.

Le bouton « J'ai de la chance »

Ah, le fameux « I'm Feeling Lucky » de Google, j'ai voulu l'implémenter comme à l'époque ! Si vous tapez une recherche et cliquez sur « J'ai de la chance », vous êtes envoyé sur le premier résultat. Classique. Mais si vous cliquez sur le bouton avec le champ vide sur la home de la recherche, vous êtes envoyé sur un article aléatoire parmi les +18 000 du site.

Pour ça, j'ai utilisé une astuce : le sitemap. Mon Hugo génère un fichier sitemap.xml qui contient toutes les URLs du site et je peux aller piocher dedans en JS :

const articles = [...xml.querySelectorAll('loc')] .map(loc => loc.textContent) .filter(url => {
// Exclure les pages qui ne sont pas des articles
const path = new URL(url).pathname;
return !path.startsWith('/categories/') && !path.startsWith('/page/') && path !== '/';
});
const randomUrl = articles[Math.floor(Math.random() * articles.length)];
window.location.href = randomUrl;
} }

Un seul fetch, un peu de parsing XML natif, et hop c'est le grand retour de la fonctionnalité « article aléatoire » qui vous manquait, je le sais !

Tri et nombre de résultats

Je vous ai aussi mis une listbox qui vous permet d'afficher 10, 25 ou 50 résultats ainsi qu'un tri par pertinence ou data. Et ça aussi Pagefind sait parfaitement le navigateur.

Mode sombre et accessibilité

Même si l'interface est rétro, j'ai quand même ajouté quelques fonctionnalités modernes. Le mode sombre respecte les préférences système, et j'ai intégré la police OpenDyslexic pour les personnes dyslexiques.

Le truc important c'est de charger ces préférences avant le rendu de la page pour éviter le fameux flash. J'ai donc un petit script qui lit les préférences dans le localStorage et applique les classes CSS immédiatement :

function() {
 if (localStorage.getItem('theme') === 'dark') {
 document.documentElement.classList.add('dark-mode');
 }
 if (localStorage.getItem('dyslexic-font') === 'true') {
 document.documentElement.classList.add('dyslexic-mode');
 }
});

Gestion de l'historique navigateur

Un détail qui peut sembler anodin mais qui est super important pour l'expérience utilisateur c'est la gestion du bouton retour du navigateur.

Quand vous faites une recherche, l'URL change selon votre requête du genre /recherche/?q=linux&p=2. Du coup si vous partagez cette URL à un collègue, la personne arrivera directement sur les résultats de recherche. Et si vous utilisez le bouton retour, vous reviendrez alors à la recherche précédente.

window.addEventListener('popstate', () => {
const query = new URLSearchParams(location.search).get('q');
if (query) doSearch(query);
else showHomePage();
});

Liens vers d'autres moteurs

Et si vous ne trouvez pas votre bonheur dans mes +18 000 articles (ce qui serait quand même étonnant ^^), j'ai ajouté des liens pour relancer la même recherche sur Google, DuckDuckGo, Qwant, Brave et Ecosia. Bref, un petit service bonus pour mes visiteurs, exactement comme le proposait Google à l'époque.

Le bilan - Algolia vs Pagefind

Après 1 semaine d'utilisation, voici donc mon verdict ! Côté portefeuille d'abord, Algolia me coûtait entre 60 et +100 euros par mois et maintenant pour Pagefind, c'est zéro euros ! Et les performances sont également au rendez-vous. Algolia c'était rapide et bien là, ça l'est encore plus. Seul compromis à noter, l'index Algolia se mettait à jour en temps réel, alors que Pagefind nécessite une reconstruction au moment du build.

La conclusion

Voilà, j'ai maintenant une recherche qui marche vraiment bien, qui me coûte 0€ par mois, et qui a un look rétro qui va en surprendre plus d'un...

Alors est-ce que c'était nécessaire de passer autant de temps sur le design rétro ? Hé bien absolument pas. Mais est-ce que ça valait le coup ?

Franchement, oui !! C'est mon site, je fais ce que je veux, et si ça peut faire sourire quelques visiteurs nostalgiques des débuts du web, c'est du bonus. D'ailleurs un grand merci aux Patreons qui me soutiennent car sans eux, je n'aurais pas pu passer mon dimanche là dessus ^^

Et puis surtout, ça m'a permis de découvrir Pagefind qui est vraiment un excellent outil. Donc si vous avez un site statique (ou n'importe quel type de contenu textuel) et que vous cherchez une solution de recherche gratuite et performante, je vous le recommande chaudement. La documentation est claire, l'intégration est simple, et le résultat est top !

Allez, maintenant vous pouvez aller tester la nouvelle recherche sur le site . Et si vous cliquez sur « J'ai de la chance » sans rien taper... bonne découverte !

  • ✇Korben
  • Netflix offre des vidéos 4K HDR gratuites pour vos tests et calibrations
    Vous avez déjà eu besoin de vidéos de test en 4K HDR pour calibrer votre écran, tester un encodeur maison ou juste faire le malin avec votre nouveau téléviseur ? Hé bien je ne le savais pas mais Netflix met à disposition gratuitement une bibliothèque de contenus professionnels sous licence Creative Commons Attribution 4.0 (donc vous pouvez les utiliser à condition de créditer Netflix). Ça s'appelle Netflix Open Content et c'est une initiative plutôt méconnue du géant du streaming. L'idée c'est d

Netflix offre des vidéos 4K HDR gratuites pour vos tests et calibrations

Par : Korben
30 décembre 2025 à 13:39

Vous avez déjà eu besoin de vidéos de test en 4K HDR pour calibrer votre écran, tester un encodeur maison ou juste faire le malin avec votre nouveau téléviseur ? Hé bien je ne le savais pas mais Netflix met à disposition gratuitement une bibliothèque de contenus professionnels sous licence Creative Commons Attribution 4.0 (donc vous pouvez les utiliser à condition de créditer Netflix).

Ça s'appelle Netflix Open Content et c'est une initiative plutôt méconnue du géant du streaming. L'idée c'est de fournir aux développeurs, chercheurs et autres bidouilleurs des fichiers vidéo de référence de qualité broadcast, sans les problèmes de droits habituels.

Et y'a du lourd dans le catalogue puisqu'on y trouve des courts-métrages d'animation comme Sol Levante (2020), un anime réalisé en partenariat avec Production I.G et entièrement dessiné à la main en 4K HDR natif. Côté live-action, y'a aussi des trucs techniques comme Sparks (2017) filmé en 4K à quasi 60 fps avec un master HDR encodé pour 4000 nits... de quoi faire chauffer les dalles haut de gamme.

Netflix fournit les masters vidéo en HDR10 et pour certains projets des métadonnées Dolby Vision au format XML. Pour Sol Levante par exemple, y'a même les sessions Pro Tools avec le mix Dolby Atmos, les storyboards et quelques fichiers After Effects du projet. Donc pour les devs qui bossent sur des codecs ou les fabricants de TV qui veulent calibrer leurs dalles, c'est de l'or en barre.

Le téléchargement se fait soit via navigateur, soit en ligne de commande avec AWS CLI si vous avez de gros fichiers à récupérer... et croyez-moi certains pèsent lourd comme Sol Levante ou encore Sparks.

Après, faut quand même noter que le dernier contenu ajouté date de 2020 donc le projet n'a pas l'air très actif ces derniers temps mais les contenus restent parfaitement utilisables. Et vous en trouverez d'autres ici également .

Voilà, si vous cherchez des vidéos de test de qualité pro sans vous prendre la tête avec les droits d'auteur, c'est une ressource plutôt sympa à bookmarker.

Source

  • ✇Korben
  • ddrescue + Raspberry Pi Imager - Le combo pour cloner vos cartes SD sans vous arracher les cheveux
    Vous avez un parc de Raspberry Pi à déployer et vous en avez marre de refaire la config à chaque fois ? Ou pire, votre carte SD commence à faire des siennes et vous voulez la sauver avant qu'elle rende l'âme ? Hé bien j'ai le combo parfait pour vous les amis ! Je vais vous parler en réalité de deux outils complémentaires que vous connaissez déjà je pense : ddrescue pour le clonage/sauvetage de cartes SD, et Raspberry Pi Imager pour créer des images préconfigurées. Ensemble, ils forment une chaîn

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

Par : Korben
26 décembre 2025 à 09:00

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

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

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

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

La commande de base, c'est ça :

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ssh pi@pi-cuisine.local

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

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

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

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

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

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

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

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

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

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

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

lsblk -o NAME,SIZE,MODEL,MOUNTPOINT

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

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

Enjoy !

  • ✇Korben
  • Koharu - Le traducteur de mangas IA qui fait tout le boulot à votre place
    J’sais pas si vous lisez des mangas de temps en temps mais si vous êtes à jour, vous avez peut-être envie de lire la suite, mais malheureusement, souvent c’est pas encore traduit en français. Alors vous 3 solutions… soit vous patientez, soit vous apprenez le japonais… Soit, soit… Soit vous installez Koharu, un logiciel de traduction de mangas propulsé par IA. C’est hyper bien foutu puisque ça détecte automatiquement les bulles de dialogue, ça lit le texte japonais via OCR, ça efface proprement l

Koharu - Le traducteur de mangas IA qui fait tout le boulot à votre place

Par : Korben
8 décembre 2025 à 10:39

J’sais pas si vous lisez des mangas de temps en temps mais si vous êtes à jour, vous avez peut-être envie de lire la suite, mais malheureusement, souvent c’est pas encore traduit en français. Alors vous 3 solutions… soit vous patientez, soit vous apprenez le japonais… Soit, soit…

Soit vous installez Koharu, un logiciel de traduction de mangas propulsé par IA. C’est hyper bien foutu puisque ça détecte automatiquement les bulles de dialogue, ça lit le texte japonais via OCR, ça efface proprement le texte original avec de l’inpainting, ça traduit le tout avec un modèle de langage aux petits oignons et ça replaque le texte traduit dans la bubulle.

Tout ça en quelques clics, évidemment, sinon ce serait pas drôle !

Le projet est développé par mayocream et c’est du 100% Rust avec une interface Tauri. Pour ceux qui ne connaissent pas, Tauri c’est un peu l’équivalent d’Electron mais en plus léger et plus performant. Le moteur d’inférence utilisé, c’est Candle de HuggingFace, ce qui permet de faire tourner des modèles IA localement sans avoir besoin d’envoyer vos data dans le cloud.

Côté modèles, Koharu embarque plusieurs outils spécialisés. Pour la vision par ordinateur, on a comic-text-detector pour repérer les bulles (avec le petit modèle custom de mayocream ), manga-ocr pour la reconnaissance de caractères et AnimeMangaInpainting pour effacer proprement le texte original. Pour la traduction, c’est vntl-llama3-8b-v2 ou Sakura-GalTransl-7B-v3.7 qui s’y collent et c’est sans galère puisque ces modèles se téléchargent automatiquement au premier lancement.

Et Koharu supporte évidemment l’accélération GPU donc si vous avez une carte NVIDIA, vous pouvez profiter de CUDA et pour les fans d’Apple Silicon avec un M1 à M5, Metal est également supporté. Bref, ça dépote et le logiciel gère aussi la mise en page verticale pour les langues CJK (Chinois, Japonais, Coréen), ce qui est plutôt indispensable quand on traduit des mangas.

Les sources sont dispo sur Github et y’a des binaires pour Windows et macOS directement sur la page des releases. Pour les autres plateformes, faudra compiler vous-même avec Rust et Bun.

Voilà, si vous rêvez de traduire ce manga obscur qui dort au fond d’un forum japonais, Koharu va vous plaire. Et un grand merci à Lorenper pour l’info !

  • ✇Korben
  • GitWrap - Votre année sur GitHub !
    Vous connaissez le Spotify Wrapped qui vous rappelle chaque décembre que vous avez écouté “Africa” de Toto 847 fois ? Hé bien GitWrap fait pareil mais pour votre code sur GitHub. Et tout ça avec une interface qui sent bon le DOS et les moniteurs à phosphore vert. Vous entrez votre nom d’utilisateur GitHub, et l’outil génère alors un récapitulatif de votre année de commits, de pull requests et de contributions diverses et variées. Le tout emballé dans une esthétique rétro qui ferait pleurer d

GitWrap - Votre année sur GitHub !

Par : Korben
4 décembre 2025 à 12:19

Vous connaissez le Spotify Wrapped qui vous rappelle chaque décembre que vous avez écouté “Africa” de Toto 847 fois ? Hé bien GitWrap fait pareil mais pour votre code sur GitHub. Et tout ça avec une interface qui sent bon le DOS et les moniteurs à phosphore vert.

Vous entrez votre nom d’utilisateur GitHub, et l’outil génère alors un récapitulatif de votre année de commits, de pull requests et de contributions diverses et variées. Le tout emballé dans une esthétique rétro qui ferait pleurer de nostalgie n’importe quel dev qui a connu l’époque où “git” n’existait pas encore et où on faisait des sauvegardes sur disquettes.

L’interface vous accueille avec un prompt style années 80… genre > Enter GitHub username to begin. On se croirait dans WarGames avant de lancer une partie de morpion thermonucléaire et il ne manque plus que la voix synthétique qui demande “Shall we play a game?” et c’est parfait.

Y’a aussi un leaderboard pour les compétitifs qui veulent comparer leur nombre de commits avec les autres. Parce que oui, apparemment certaines personnes ont besoin de savoir qu’elles ont codé plus que leur voisin de bureau. Chacun ses kinks.

A vous de tester maintenant pour savoir si vous avez bien bossé sur votre code cette année ou si vous n’avez rien branlé comme l’année dernière.

Et accessoirement vous pouvez même vous faire une jolie image pour frimer sur LinkedIn ! Ça prend 30 secondes et ça vous donnera une excuse pour procrastiner avant de retourner à ce bug que vous évitez depuis trois jours.

Source

  • ✇Korben
  • Cascii - Un éditeur de diagrammes ASCII qui tient dans un fichier HTML
    Dessiner des schémas en ASCII art, c’est un peu le sport national des devs qui documentent leur code dans des fichiers texte. Sauf que jusqu’ici, soit on se tapait ça à la main caractère par caractère, soit on passait par des outils en ligne qui demandent de se créer un compte et gardent vos diagrammes sur leurs serveurs. Heureusement, Cascii règle le problème puisqu’il s’agit d’un éditeur graphique complet qui tient dans un seul fichier HTML ! Et comme Cascii est écrit en JavaScript pur, y’a au

Cascii - Un éditeur de diagrammes ASCII qui tient dans un fichier HTML

Par : Korben
3 décembre 2025 à 10:01

Dessiner des schémas en ASCII art, c’est un peu le sport national des devs qui documentent leur code dans des fichiers texte. Sauf que jusqu’ici, soit on se tapait ça à la main caractère par caractère, soit on passait par des outils en ligne qui demandent de se créer un compte et gardent vos diagrammes sur leurs serveurs. Heureusement, Cascii règle le problème puisqu’il s’agit d’un éditeur graphique complet qui tient dans un seul fichier HTML !

Et comme Cascii est écrit en JavaScript pur, y’a aucune dépendance, aucun framework, aucun npm install…etc. Vous téléchargez juste le fichier HTML, vous l’ouvrez dans votre navigateur, et c’est parti mon kiki.

Et pour l’installer, une commande suffit :

curl https://cascii.app -o cascii.html && open cascii.html

Ahaha ouais c’est la commande curl la plus nulle de l’histoire des commandes curl mais ça vous montre que je n’abuse pas.

Côté fonctionnalités, on a donc tout ce qu’il faut pour dessiner des diagrammes propres. Des lignes libres, des lignes en escalier, des carrés, des cercles, des losanges, du texte, des tableaux. Un système de calques permet d’organiser les éléments et de les grouper. Le plus malin, je trouve, c’est les “jointures intelligentes” qui connectent automatiquement les formes entre elles… parce que dessiner des flèches qui arrivent pile au bon endroit à la main, c’est l’enfer. Même comme ça, je suis pas doué, cela dit…

Ne le jugez pas…

L’éditeur propose plusieurs charsets tels que ASCII classique ou Unicode pour ceux qui veulent des lignes plus jolies et il y a 3 styles de lignes (pointillées, solides fines, solides épaisses) ainsi que des flèches directionnelles. Côté thèmes, du sombre, du clair, ou un mode “console” pour les nostalgiques du terminal.

La sauvegarde se fait automatiquement dans le stockage local du navigateur, donc même si vous fermez l’onglet par erreur, votre travail n’est pas perdu et pour partager ou archiver, il y a un export en Base64 qui permet de tout récupérer plus tard. Si vous utilisez la version hébergée sur cascii.app, vous pouvez aussi générer des liens courts pour partager vos créations.

Le projet est sous licence Apache 2.0 et le code source est dispo sur GitHub et pour les raccourcis clavier, c’est du classique : Ctrl+Z pour annuler, Ctrl+C/V pour copier-coller, Ctrl+G pour grouper des éléments, Shift+Click pour la multi-sélection. L’historique est illimité donc vous pouvez revenir en arrière autant que vous voulez.

Voilà, si vous documentez du code, dessinez des architectures système ou avez juste besoin de faire un petit schéma rapide sans sortir l’artillerie lourde, Cascii fera le job !

  • ✇Korben
  • SMART Report Viewer - Vérifiez la santé de vos disques en ligne
    Vous voulez savoir si votre SSD est sur le point de rendre l’âme mais vous avez la flemme d’installer un énième logiciel ? SMART Report Viewer règle le problème puisqu’il permet d’analyser vos rapports SMART directement dans votre navigateur. En gros, vous exportez les données SMART de votre disque avec un outil comme smartctl ou CrystalDiskInfo, vous glissez le fichier dans l’interface web, et hop… l’analyse se fait entièrement côté client. Pour rappel, les données SMART (Self-Monitoring, Ana

SMART Report Viewer - Vérifiez la santé de vos disques en ligne

Par : Korben
3 décembre 2025 à 08:31

Vous voulez savoir si votre SSD est sur le point de rendre l’âme mais vous avez la flemme d’installer un énième logiciel ? SMART Report Viewer règle le problème puisqu’il permet d’analyser vos rapports SMART directement dans votre navigateur.

En gros, vous exportez les données SMART de votre disque avec un outil comme smartctl ou CrystalDiskInfo, vous glissez le fichier dans l’interface web, et hop… l’analyse se fait entièrement côté client.

Pour rappel, les données SMART (Self-Monitoring, Analysis and Reporting Technology), c’est ce que votre disque collecte sur lui-même en permanence : Nombre de secteurs réalloués, heures de fonctionnement, cycles d’allumage, erreurs de lecture… Tous ces indicateurs qui permettent de voir venir une panne avant de perdre vos photos de vacances ou votre collection de photos de… enfin bref.

SMART Report Viewer supporte les disques NVMe et SATA, ce qui couvre à peu près tout ce qu’on trouve dans nos machines aujourd’hui, donc que vous ayez un vieux HDD mécanique qui grince depuis 2015 ou un SSD NVMe tout neuf, ça devrait passer.

L’avantage d’un outil web par rapport aux logiciels classiques comme CrystalDiskInfo ou GSmartControl, c’est surtout sa portabilité puisque vous pouvez analyser un rapport depuis n’importe quel PC, y compris celui d’un pote qui vous demande de jeter un œil à son disque qui fait des trucs suspect.

Pour récupérer vos données SMART, le plus simple reste smartmontools. Sous Linux ou macOS, un petit sudo smartctl -a /dev/disk0 > rapport.txt et c’est réglé. Sous Windows, CrystalDiskInfo permet d’exporter les infos et ensuite vous balancez le fichier sur SMART Report Viewer et vous avez votre diagnostic.

Pas de repo GitHub visible donc difficile de savoir comment l’analyse est faite côté code mais vous pouvez vérifier que tout se passe dans le navigateur puisqu’en coupant votre connexion après avoir chargé la page, ça marche toujours.

Bref, encore un petit outil pratique qui ne fait qu’une chose et la fait bien !

❌
❌