Vue lecture

Il y a de nouveaux articles disponibles, cliquez pour rafraîchir la page.

rPGP – Une bibliothèque Rust pour l’implémentation d’OpenPGP

rPGP c’est un bibliothèque Rust qui va vous permettre de jouer avec OpenPGP comme des grands ! Plus besoin de vous taper des kilomètres de C pour avoir un bout de code qui chiffre trois mails bourrés de fautes. Maintenant, on a le droit à une implémentation 100% Rust, avec une API minimaliste mais qui fait le taf. Et en plus, c’est sous licence libre, donc on peut en faire ce qu’on veut !

Le top du top, c’est que rPGP gère tout ce qu’il faut pour être compatible avec Autocrypt 1.1. Si vous ne connaissez pas, c’est une spécification pour chiffrer les mails qui est censée être facile à utiliser pour monsieur et madame tout-le-monde.

Côté technique, rPGP est mis à jour régulièrement en tant que crate pgp (oui, ils ont pensé à nous, les flemmards qui ne veulent pas taper plus de trois lettres). Et pour la partie RSA, ça vit tranquillou sous le parapluie collectif RustCrypto. Et pour les petits malins qui voudraient se la jouer elliptique, pas de panique : le support ECC est assuré par la crate Curve25519-dalek. J’adore le nom 🙂

Bon, après, faut avouer que la doc de l’API est encore un peu légère mais si vraiment vous séchez, vous pouvez toujours ouvrir une issue sur GitHub. Les devs sont sympas, ils répondent (des fois).

D’ailleurs, rPGP s’est payé un petit audit de sécurité indépendant en 2019, réalisé par les gars d’IncludeSecurity et pas de failles critiques ! Bon, quelques trucs à corriger par ci par là, mais globalement, c’est du solide. Si vous voulez jeter un œil au rapport, c’est par ici.

Notez que rPGP est utilisé en prod par Delta Chat, l’app de messagerie basée sur les mails et ça tourne nickel sur Windows, Linux, macOS, Android et iOS, en 32 et 64 bits. Que demande le peuple ?

Et si vous êtes du genre à tout vouloir faire tourner dans votre navigateur (ou dans Node.js, on ne juge pas), rPGP a même pensé à vous avec une feature wasm ! Par contre, les bindings sont encore expérimentaux, mais tout se trouve dans le repo rpgp/rpgp-js.

Allez, je vous laisse, j’ai des messages secrets à chiffrer moi !

BugStalker – Le debugger Rust puissant et convivial

Je sais, convivial c’est un mot bizarre pour parler d’un outil de débogage, mais celui-ci va vous faire kiffer si vous codez en Rust. Ça s’appelle BugStalker et c’est juste le debugger qu’il vous faut pour traquer les bugs vicieux dans vos programmes puisqu’il comprend toutes les subtilités du langage.

Ça veut dire qu’il sait gérer les types Rust complexes comme les vecteurs, les pointeurs intelligents et même les variables locales des threads. Et il ne fait pas que les afficher joliment, il vous permet carrément d’interagir avec !

Vous pouvez poser des breakpoints où vous voulez dans votre code, que ce soit sur une ligne précise, une fonction ou même une instruction assembleur. Et quand votre programme s’arrête sur un breakpoint, vous pouvez contrôler son exécution pas à pas, rentrer dans les fonctions ou les sauter, tout ça à la volée.

Et si vous avez besoin d’inspecter les données de votre programme, il a ce qu’il vous faut dans le ventre. Vous pouvez par exemple évaluer des expressions pour afficher les variables locales et globales, les arguments des fonctions, et même découper des tableaux ou des vecteurs pour voir ce qui se cache dedans.

L’outil vous propose deux interfaces au choix : une classique en ligne de commande, et une interface graphique en mode TUI (Text User Interface) qui claque. Et le kif, c’est que vous pouvez passer de l’une à l’autre quand vous voulez pendant une session de débogage !

Ah et j’allais oublier un truc énorme : les Oracles ! Non, je ne parle pas de la boîte qui fait des bases de données, mais d’une fonctionnalité trop stylée de BugStalker. En gros, c’est des modules qui viennent se greffer au debugger pour vous filer des infos sur des aspects spécifiques de votre programme. Par exemple, l’Oracle Tokio vous donne des insights sur le runtime Tokio si vous faites de l’asynchrone, sans avoir à modifier votre code. Trop fort !

Bon allez, je vais pas vous faire languir plus longtemps. Si vous voulez essayer, c’est tout simple, vous installez ça avec cargo :

cargo install bugstalker

et hop, vous êtes prêts à déboguer comme des pros. Et si jamais vous avez un souci avec la dépendance libunwind, y a même une version sans, mais entre nous, libunwind c’est quand même mieux.

Franchement, je « ne contracte pas » quand je vous dis que BugStalker c’est le debugger qu’il vous faut pour vos projets Rust. Avec lui, traquer les bugs c’est presque devenu un sport national, alors go sur https://github.com/godzie44/BugStalker , votre code Rust vous dira merci !

Allez, sur ce je vous laisse, j’ai un programme à déboguer moi (non, mon code est parfait).

Chiffrez vos fichiers en toute simplicité avec File-Encryptor

Vous cherchez un moyen simple et efficace de sécuriser vos fichiers ?

Ça tombe bien, je vous ai déniché un petit outil bien pratique nommé File-Encryptor qui est un programme développé en Rust vous permettant de chiffrer et déchiffrer vos fichiers en un clin d’œil.

Ce programme utilise l’algorithme de chiffrement AES-GCM (Advanced Encryption Standard-Galois/Counter Mode), connu pour être très robuste, avec une clé de 256 bits. Le gros avantage de File-Encryptor, c’est qu’il supporte le chiffrement basé sur un mot de passe. Comme ça, pas besoin de vous trimballer une clé USB avec votre précieuse clé de chiffrement. Il vous suffit de choisir une phrase secrète, et hop, vos fichiers sont chiffrés en un rien de temps. Et si vous voulez rajouter une couche de sécurité supplémentaire, vous pouvez même ajouter des données d’authentification en bonus (comme votre mail par exemple).

Bref, si vous avez des documents sensibles à envoyer par email ou via une clé USB ou si vous voulez faire une sauvegarde bien sécurisée de vos précieux fichiers sur un cloud ou un disque dur externe, et bien un petit tour avec notre ami File-Encryptor et vous pouvez dormir sur vos deux oreilles.

Allez, assez parlé, je vous fais une petite démo pour que vous compreniez comment ça marche.

Première étape : générer une clé de chiffrement.

Ouvrez un terminal et tapez :

file-encryptor keygen > mykey.key

Vous pouvez aussi utiliser l’option -p ou --password pour générer une clé à partir d’un mot de passe de votre choix. Par exemple :

file-encryptor keygen -p "motdepasse123" > mykey.key

Notez bien que la clé AES256 générée est obtenue en hashant votre mot de passe avec l’algorithme SHA256. Bon à savoir !

Maintenant, passons au chiffrement proprement dit. Mettons que vous ayez un fichier texte nommé « secret.txt » à chiffrer. Rien de plus simple :

file-encryptor seal secret.txt < mykey.key > secret.encrypted

Et si vous voulez ajouter des données d’authentification, rajoutez l’option -a suivie d’une chaîne de caractères. Par exemple votre email :

file-encryptor seal secret.txt -a "james@bond.mi6" < mykey.key > secret.encrypted

Pour déchiffrer votre fichier, c’est tout aussi facile. Il vous suffit de taper :

file-encryptor open secret.encrypted < mykey.key > secret.decrypted.txt

Et n’oubliez pas de préciser les données d’authentification si vous en aviez utilisé lors du chiffrement :

file-encryptor open secret.encrypted -a "james@bond.mi6" < mykey.key > secret.decrypted.txt

Et voilà, le tour est joué ! Vous savez désormais comment chiffrer et déchiffrer des fichiers comme un pro avec File-Encryptor. Franchement, c’est pas sorcier et ça peut dépanner dans un tas de situations.

Cliquez ici pour mettre la main sur ce petit outil bien pratique. Et n’oubliez pas : la paranoïa est votre meilleure amie dans ce monde de brute (force) !

Pylyzer – Une analyse statique Python 100 fois plus rapide !

Vous en aviez marre des analyseurs de code Python plus lents qu’un escargot sous Xanax ? Et bien dites bonjour à pylyzer, la nouvelle star de l’analyse statique ! 🚀

Ce p’tit truc est écrit en Rust, ce qui lui permet d’être en moyenne 100 fois plus rapide que ses concurrents comme pytype ou pyright. En plus de la vitesse, pylyzer se distingue par son analyse ultra détaillée. On parle pas juste de type checking basique là, pylyzer est capable de détecter les accès hors limites à des listes ou les accès à des clés inexistantes dans des dictionnaires.

D’ailleurs, contrairement à ce qu’on pourrait penser, pylyzer n’est pas qu’un simple type checker. C’est un véritable couteau suisse de l’analyse statique ! Il fait aussi office de linter pour vous aider à garder un code propre et consistant.

Bon après, faut pas se leurrer, pylyzer a ses limites. Déjà, il suppose que votre code est potentiellement statiquement typé, donc oubliez les exec, setattr et compagnie. Ah et le typage de l’API standard de Python n’est pas complet donc vous risquez de voir des erreurs du genre « cette API n’existe pas », soyez prévenus ! Enfin, vu que le type checking de pylyzer est conservatif dans son approche, vous risquez de voir pas mal de faux positifs. Si ça vous saoule, désactivez les diagnostics, on ne vous en voudra pas (mais je vous le déconseille quand même) ! 😅

En parlant d’accès, vous n’aurez aucun mal à accéder aux rapports d’erreur de pylyzer car contrairement à certains, ils sont clairs comme de l’eau de roche ! Fini le charabia illisible, on vous montre exactement où se situe l’erreur et on vous explique le problème sans prise de tête. Et côté fonctionnalités, pylyzer ne fait pas les choses à moitié. Le support LSP est hyper riche, de la complétion au renommage en passant par plein d’autres features bien cool. Tout ça grâce à l’adaptation du serveur de langage de Erg. Et si vous voulez en profiter directement dans VSCode, pas de souci ! L’extension est dispo sur le Marketplace et hop, c’est réglé ! 😎

Maintenant vous allez me dire « OK c’est bien beau tout ça, mais pylyzer il sert à quoi comparé à Ruff par exemple ?« . Alors oui, Ruff est aussi un outil d’analyse statique pour Python écrit en Rust, mais lui se concentre uniquement sur le linting tandis que pylyzer fait du type checking et sert de serveur de langage. En gros, on ne mélange pas les torchons et les serviettes !

Si vous voulez savoir comment ça marche dans le détail, sachez que pylyzer utilise le type checker de Erg en interne, en plus de ses propres capacités de vérification de type. Il convertit l’AST Python en AST Erg avant de le passer au type checker, puis il adapte les résultats pour Python. Malin ! 😏 Par contre, Erg n’est pas un langage transpilé en Python comme on pourrait le croire, il peut tourner directement sur la machine cible.

Malgré ces petits défauts, pylyzer gère quand même un paquet de trucs : type checking sur les variables, opérateurs, fonctions, méthodes et classes, inférence de type, résolution des modules et packages, les types des collections (list, dict, tuple), une bonne partie de typing, les types génériques et variance, les type guards, le type narrowing (qui peut se faire avec is et isinstance mais pas que), les assertions de type (via typing.cast par exemple)… Bref, ça en fait des belles jambes dis donc ! 🦿

Alors vous attendez quoi pour tester ce petit bijou ?

Asak – Un outil audio CLI puissant écrit en Rust

Voici un outil qui va changer votre façon de bidouiller avec le son. Oubliez les interfaces compliquées et les logiciels gourmands, place à la ligne de commande avec Asak !

Il s’agit d’un outil audio multiplateforme, écrit dans le langage du moment, j’ai nommé Rust. Léger, rapide et diablement efficace. Le genre de truc qui vous donne envie de ressortir votre vieux Termina pour jouer.

Asak permet d’enregistrer, lire, et même appliquer des effets en temps réel, le tout via son interface en ligne de commande ou son interface utilisateur textuelle (TUI) super intuitive. Fini les clics à n’en plus finir, ici on tape des commandes comme un vrai hacker du dimanche.

Pour l’installer, rien de plus simple.

Assurez-vous d’avoir Cargo installé, puis lancez un petit

cargo install asak

et hop, vous voilà prêt à en découdre avec les ondes sonores. Si vous n’avez pas encore Cargo, pas de panique, suivez simplement le guide d’installation et vous serez paré en un rien de temps.

Ensuite, si vous voulez enregistrer un message pour votre répondeur façon années 80, c’est facile :

asak rec hello

Et si vous ne précisez pas de nom de fichier, pas de panique, Asak vous demandera gentiment de le faire, avec un nom par défaut.

Maintenant pour écouter votre chef-d’œuvre :

asak play hello.wav

Et si vous ne vous souvenez plus du nom, un petit coup d’œil dans le répertoire courant et Asak vous proposera gentiment de choisir parmi les fichiers .wav disponibles.

Mais Asak ne s’arrête pas là. Vous pouvez paramétrer l’appareil d’enregistrement et de lecture avec -r et -p, la durée avec -d, la fréquence d’échantillonnage avec -s, les canaux et le format avec -ch. Bref, vous avez le contrôle total.

Et que serait un outil audio digne de ce nom sans la possibilité de jouer avec le son en temps réel ? Asak vous propose de régler le volume avec -a, d’appliquer des effets comme la réverbération ou le délai avec -f, et même de faire du passthrough avec des effets live grâce à -z. Bref, de quoi transformer votre bureau en studio d’enregistrement lo-fi tendance.

Côté formats, Asak supporte les classiques WAV, AIFF et FLAC, en entrée comme en sortie. Et s’il vous prend l’envie de bidouiller avec plusieurs flux audio simultanés, pas de souci, Asak gère ça comme un chef.

Alors, convaincu ? Vous aurez plus d’infos ici.

Sur ce, je vous laisse, j’ai une soudaine envie d’aller bidouiller avec des samples de vieux films de science-fiction. Que la force du son soit avec vous !

Créez facilement des livres électroniques avec mdBook

Vous rêvez de créer votre propre livre électronique ou une bonne grosse documentation technique mais vous ne savez pas par où commencer ?

Ne cherchez plus, mdBook est là pour vous !

Il s’agit d’un outil codé en Rust, qui a l’aide de quelques commandes simples, vous permettra d’initialiser la structure de votre ouvrage, de rédiger votre contenu en Markdown, de personnaliser le rendu et de le mettre en ligne. Voici un exemple de ce que ça peut donner comme rendu.

Pour démarrer votre aventure avec mdBook, rien de plus simple. Installez l’outil en suivant les instructions sur le site officiel, puis lancez la commande suivante dans un terminal :

mdbook init mon-premier-livre

Et voilà, le squelette de votre chef-d’œuvre est prêt et vous n’avez plus qu’à rédiger !

mdBook regorge de fonctionnalités pour mettre en forme votre contenu. Vous pouvez organiser vos chapitres dans le fichier SUMMARY.md, ajouter une page d’introduction dans README.md, créer votre propre template, et même inclure des images et autres ressources. Et une fois votre prose finalisée, vous pourrez donner vie à votre livre à l’aide de la commande :

mdbook serve

Celui-ci va alors générer une version web interactive accessible via un serveur web, avec une navigation et moteur de recherche intégré, de vos écrits. Et la commande

mdbook build

… vous permettra de générer une version HTML de votre bouquin.

Je trouve ça très satisfaisant de passer par le markdown pour la rédaction et la mise en forme. Je le faisais pour des prez style Powerpoint mais full markdown à l’époque où je faisais des confs, et c’était un vrai gain de temps.

Mais le véritable atout de mdBook, c’est sa capacité à automatiser la publication de votre livre. Grâce à l’intégration continue, chaque modification que vous apportez peut être instantanément mise en ligne. Comme ça, fini les mises à jour manuelles bien reloues !

Bref, vous l’aurez compris, mdBook est un excellent outil pour les auteurs qui aiment partager leur travail avec leur communauté. Ah, j’allais oublier ! Si vous avez besoin d’inspiration, n’hésitez pas à explorer la documentation officielle de mdBook. Vous y trouverez des astuces, des exemples et même des témoignages d’auteurs conquis.

RustPython – Python puissance Rust

Un interpréteur Python 3 flambant neuf, entièrement réécrit en Rust, ça claque, non ? Pour ceux qui hibernent, Rust, c’est le langage de programmation qui monte, qui monte et qui cartonne notamment grâce à sa rapidité légendaire et son bon niveau de sécurité.

Et en fusionnant avec Python, on obtient le meilleur des deux mondes, puisque ça permet d’utiliser Python comme un langage de script dans vos applications Rust. Vous pourrez ainsi, grâce à RustPython, profiter de la simplicité et de l’expressivité de Python, tout en bénéficiant des performances et de la robustesse de Rust.

RustPython peut aussi être compilé en WebAssembly, ce qui permet d’avoir du Python directement dans votre navigateur, sans installer quoi que ce soit et ainsi, votre code s’exécutera à la vitesse de la lumière. Évidemment ce projet est open-source et libre comme l’air et pour l’utiliser, c’est simple comme bonjour.

Tout d’abord, assurez-vous d’avoir installé Rust sur votre machine. Si ce n’est pas le cas, filez sur rustup.rs dare-dare ! Ensuite, clonez le dépôt GitHub de RustPython :

git clone https://github.com/RustPython/RustPython

Placez-vous dans le répertoire RustPython fraîchement cloné, puis lancez la démo :

cd RustPython
cargo run --release demo_closures.py

Et voilà, vous venez d’exécuter du code Python à la vitesse du son grâce à RustPython ! Notez que cet outil dispose également d’un compilateur JIT expérimental qui compile les fonctions python en code rust natif.

Si vous avez envie d’en savoir plus, rendez-vous sur https://rustpython.github.io.

Source

ZTDNS – Microsoft renforce la sécurité DNS pour Windows

Tiens, Microsoft nous prépare un nouveau bébé baptisé Zero Trust DNS, ou ZTDNS pour les intimes. Alors c’est quoi encore ce truc ? Eh bien c’est tout simplement un système permettant de sécuriser le DNS sur nos chers Windows.

Pour ceux qui auraient loupé un épisode, le DNS c’est un peu comme l’annuaire téléphonique d’Internet. Il permet de traduire les noms de domaine tout mignons comme korben.info en adresses IP bien moins sexy. Le problème, c’est que jusqu’à présent, le DNS c’était un peu le maillon faible de la sécurité. Les communications n’étaient pas chiffrées, ce qui ouvrait la porte à plein de menaces comme l’espionnage, le détournement de trafic ou même les attaques de type « DNS spoofing« . D’ailleurs, selon une étude de Cisco, plus de 70% des attaques de phishing utilisent des techniques de DNS spoofing pour tromper leurs victimes.

Mais ça, c’était avant ! Avec ZTDNS, Microsoft promet de changer la donne. Déjà, toutes les communications entre les clients Windows et les serveurs DNS seront chiffrées et authentifiées grâce aux protocoles DNS over HTTPS (DoH) ou DNS over TLS (DoT), ce qui devrait rendre la vie plus difficile aux vilains cyber criminels qui voudraient mettre leur nez dans nos petites affaires.

Ensuite, et c’est là que ça devient vraiment intéressant, ZTDNS va permettre aux admins réseau de contrôler finement quels domaines peuvent être résolus par les serveurs DNS. En gros, si un domaine n’est pas sur la liste blanche, et bien le client Windows ne pourra tout simplement pas s’y connecter !

Mais attention, mettre en place un truc pareil, ça ne va pas être une partie de plaisir. Il va falloir bien planifier son coup pour éviter de tout casser, du genre bloquer sans faire exprès l’accès à des services importants ! Mais bon, c’est le prix à payer pour renforcer la sécurité et se rapprocher doucement d’un modèle « Zero Trust » où on ne fait confiance à personne par défaut.

Alors concrètement, comment ça va marcher ?

Eh bien déjà, il faudra que les serveurs DNS supportent les protocoles de chiffrement comme DoH ou DoT. Ça tombe bien, ZTDNS est conçu pour être compatible avec tout ça. Pas besoin de réinventer la roue.

Ensuite, lorsqu’un client Windows aura besoin de résoudre un nom de domaine, il va discuter avec un des fameux serveurs DNS « protecteurs » et si le domaine est autorisé, le serveur lui filera l’adresse IP correspondante. Et hop, le pare-feu Windows sera dynamiquement mis à jour pour autoriser la connexion vers cette IP. Par contre, pour le reste, c’est niet ! Le trafic sera bloqué direct !

Bon après, faut quand même avouer qu’il y aura des trucs qui vont morfler à cause de ZTDNS. Tous les protocoles réseaux un peu exotiques qui n’utilisent pas le DNS, comme le multicast DNS (mDNS) par exemple, ça va être coupé. Pareil pour les partages de fichiers sur le réseau local ou les imprimantes qui utilisent des protocoles de découverte archaïques. Ça risque donc de râler dans les chaumières !

Mais heureusement, les ingénieurs de Microsoft ne sont pas nés de la dernière pluie et ont prévu pas mal de mécanismes pour « mitiger » ces problèmes. Par exemple, on va pouvoir définir des exceptions pour autoriser certaines plages d’adresses IP sans passer par le DNS. Ou encore favoriser des solutions plus modernes et sécurisées, comme l’impression via Universal Print qui passe, lui, gentiment par le DNS.

Un autre truc à prendre en compte, c’est que certaines applications un peu spéciales risquent de ne plus fonctionner du tout avec ZTDNS. Celles qui utilisent des adresses IP codées en dur ou des mécanismes de résolution maison, c’est mort. Mais bon, ce sera l’occasion de faire le ménage et de moderniser tout ça.

Microsoft a d’ailleurs prévu un mode « Audit » qui permet dans un premier temps de voir ce qui serait bloqué par ZTDNS, sans pour autant péter la prod. Comme ça, on peut analyser tranquillement les flux réseau et identifier les applications ou les flux problématiques. C’est un bon moyen d’anticiper les éventuels soucis avant de passer en mode bloquant !

Bon après, faut pas non plus se voiler la face. Même avec ZTDNS, il restera toujours des failles de sécurité potentielles. Les connexions VPN ou SASE/SSE par exemple, qui encapsulent le trafic dans un tunnel chiffré, pourront toujours passer entre les mailles du filet si on n’y prend pas garde. Sans parler des technologies de virtualisation qui court-circuitent carrément la pile réseau de Windows !

Mais bon, rien n’est parfait et il faut bien commencer quelque part… ZTDNS représente déjà une sacrée avancée pour renforcer la sécurité réseau des parcs Windows et avec un peu de rigueur et de persévérance, les admins sys pourront en tirer le meilleur parti.

Pour l’instant, ZTDNS est en preview privée chez Microsoft. On ne sait pas encore exactement quand il débarquera dans nos Home Sweet Home. En attendant, je vous invite à aller jeter un œil à l’article sur le blog Techcommunity qui rentre dans les détails techniques de la bête. C’est dense mais ça vaut le coup de s’y plonger si vous voulez être informé.

Source

❌