Pas vraiment. J’ai le sentiment qu’il y a des plages d’IP qui prennent la relève successivement dès que la première est bloquée. Je pense que fail2ban est impuissant face un réseau de botnet un peu organisé :
Dès que tu es bloqué sur un hôte, tu commences à en attaquer un autre (ça ne sert à rien d’insister, il suffit d’attendre que le temps passe)
Tu communiques l’info à ton réseau pour qu’une autre pc vérolé prenne la relève.
Tu peux changer les règles pour empêcher ça (tu fais une méta-règle qui parse les logs de fail2ban, et si la même IP est présente 10 fois en 3j tu la ban à vie), mais tu auras toujours un train de retard.
Attention, la commande va se mettre à donner des résultats bizarres dès que tu auras des espaces dans le nom de fichier. Quitte à utiliser une redirection, je préfère le couple find / xargs qui te permet aussi d’utiliser plusieurs process :
Tout à fait. Autant cela peut être parfois bénéfique de s’accrocher à un projet pour garder un cap, autant cela peut devenir toxique si cela devient une contrainte. Dans ton message, je sens poindre la culpabilité, et ça n’est jamais bon (c’est selon moi le pire des sentiments). Prend ce journal pour ce qu’il est, une interrogation et une source d’inquiétude, mais surtout pas comme une accusation.
Prends soin de toi.
(C’est peut être évident pour tout le monde mais dès fois ça peut servir d’enfoncer des portes ouvertes !)
Oh merci ! Je cherchais depuis longtemps une application à la Zim à faire tourner sur mon PC au travail. C’est en test depuis ce matin, la prise en main s’est faite tout de suite.
Tu as aussi une version en ligne de commande (qui n’est pas mise en avant et n’est accessible que par ceux qui savent qu’elle existe déjà). Je l’utilise dans vim avec le plugin éponyme.
Il faut récupérer l’archive standalone et utiliser le programme languagetool-commandline.jar. Voir le manuel sur le wiki.
sxhkd fait partie du gestionnaire de fenêtre bspwm. C’est un petit démon utilisé dans le gestionnaire pour gérer tous les raccourcis claviers mais peut être utilisé de manière autonome. Il est paramétré avec un simple fichier texte (et un syntaxe très concise)
C’est amusant, j’ai en tête un journal un peu similaire sur buildroot. La version 2022-11 est en RC-1, je comptais me laisser un peu le temps avant la sortie pour préparer ce que j’avais à y mettre :)
Peut être que l’attaque par force brute n’est plus réalisée en tentant successivement les mots de passes sur le formulaire de connexion, mais à froid contre un hash qui aurait fuité lors d’une compromission de données ?
J’ai une nitrokey start, et j’en suis très content ( le journal devrait citer la dépeche de gouttegd à ce sujet, car on est en plein dedans). Par contre, son périmètre est réduit car il s’agit exclusivement d’une clef gpg, et ne gère pas les aspects U2F ou FIDO2.
Je pense que la solution des jetons de sécurité est une bonne solution (si l’on compare avec ce qui est en train de se mettre en place : Passkeys : Venez centraliser vos mots de passe !) : un jeton qui prend en charge NFC et GPG, pouvant etre utilisé sur le pc ou le smartphone, la possibilité de déposer sa clef publique sur franceconnect ou sur le site de sa banque et c’en est fini des problème de compte piratés (du moins pour le 0,001% de la population qui savait déjà comment se protéger…)
Le code généré est interprété comme un script shell côté linux dont la première ligne MZqFpD=' correspond également à du code machine valide chez Windows.
Sous windows, les premières instructions (en langage machine) consistent à sauter à l’emplacement du code exécutable alors que sous Linux, le programme est lu comme un script shell, qui va s’auto décompresser pour lancer le code binaire qu’il contient.
J’imagine que le système trouve ses limites dès qu’il doit faire appel à des librairies tierces ?
C’est super le format CSV, c’est simple facile, à construire, facile à lire, sauf que
Le format CSV n’est pas un format texte mais un format binaire.
Le format CSV n’est pas un format texte mais un format binaire.
Le format CSV n’est pas un format texte mais un format binaire.
mais quand on s’en rend compte, c’est trop tard. On est piégé. Fini. Foutu.
Ça fonctionne bien tant qu’on travaille sur ses propres fichiers de son coté, mais dès qu’on s’ouvre au monde on découvre à quel point l’univers est cruel :
Niveau 0 :
les européens qui utilisent le point virgule à la place de la virgule
les caractères d’échappements avant les séparateurs de champs (\,)
les caractères d’échappements qui sont échappé eux meme (\\,)
Niveau 1 :
les séparateurs de champ qui sont contenus dans un bloc texte (",")
les caractères de bloc textes qui n’en sont pas vraiment car précédé par un caractère d’échappement (\")
Niveau 2 :
toutes les combinaisons possibles des niveau 0 et 1
le texte contenant des retours chariots
les formules excels stockées directement le CSV (="Du texte")
Et la découverte de cette année : Excel enregistre le "CSV au format UTF-8" en ajoutant un Indicateur d'ordre des octets — ou BOM pour les intimes. Il te faut donc commencer à lire les premiers octets du fichier voir s’il s’agit d’un BOM, et si c’est le cas ne commencer à parser le fichier qu’après. (un exemple de cas posant problème dans un ticket de bug ouvert que j’ai ouvert suite à ça)
Allez on le répète une dernière fois pour la route
Le format CSV n’est pas un format texte mais un format binaire.
Ça n’est pas la première fois que Chrome joue avec les DNS. C’est d’ailleurs intéressant d’en connaître la cause pour voir à quel point le web à divergé d’internet…
Je suis convaincu par le format RST et son expressivité, et je suis sur Pelican depuis… longtemps maintenant. J’utilise le theme Flex que j’ai customisé à ma sauce en surchargeant les éléments qui m’intéressaient. Tu peux donc y trouver un exemple pour voir comment modifier un thème par défaut pour l’enrichir de ton côté.
L’idée pour ça est de construire le thème en y insérant des include qui correspondent à des sous-éléments que tu peux surcharger par ailleurs. Bien sûr, il est possible que le thème que tu utilises ais mis en place ces points de surcharge. (je suis pas allé voir sur le thème par défaut). La plupart des thèmes que j’ai vu correspondent à un thème que les gens ont pu construire peur eux, mais sans chercher à le rendre réutilisable par d’autres.
L’avantage de pelican est que tu peux facilement cloner un blog existant pour le modifier à ta guise hors ligne :)
J’ai pris un modèle basé sur le controleur 8152B. En recherchant "8152B Micro USB 2.0" sur le site de ton vendeur tu devrais trouver assez de références :)
J’utilise un raspberry pi zero, qui est allumé 24h/24, avec un adapteur ethernet par usb (c’est le modèle sans wifi). Il fourni un serveur ssh, et j’ai des scripts wake-on-lan tout prêts qui me permettent de démarrer mon NAS a distance si nécessaire.
Quand je suis à distance, j’utilise les tunnels de ssh pour accéder aux fichiers présents sur le nas et ça marche plutôt bien, le pi0 tient bien la charge du chiffrement ssh. J’ai testé une lecture de vidéo depuis chez mes parents (connectés via la fibre) et il n’y a eu aucun soucis. Je pensais que le pi-zero serait un goulet, mais tout s’est passé sans problème.
Dans le futur je pense me construire un système buildroot dédié pour ça, mais je n’ai pas encore eu le temps de me pencher dessus, ça me permettrai d’avoir une image du système dispo à installer sur la carte SD qui me permettrait de restaurer le système.
Je ne devrai peut-etre pas poster ça ici, mais sslh génère des trames http qui sont vraiment identifiables pour qui prends la peine de regarder ce qui transite par le réseau.
La solution "sure" que j’ai trouvé est d’ouvrir un proxy en https sur un serveur web, qui redirige le flux vers la machine désirée. (j’ai suivi ce bug report avec intéret à l’époque où j’en avais besoin)
ProxyRequests On
AllowConnect 22
<Proxy *>
Order deny,allow
Deny from all
</Proxy>
<Proxy chez-moi>
Order deny,allow
Allow from all
</Proxy>
Puis d’utiliser une requete ssh qui simule complètement une connexion http (le user-agent est important car certain pare-feu d’entreprise se basent dessus pour filtrer les connexions)
Merci pour ton témoignage, et bravo pour ton concours ! J’ai ressenti à la lecture du journal a quel point tu as du en baver ! Je ne connais pas le domaine de la sécurité, je ne vais donc pas broder dessus, mais ton retour est intéressant sur l’énergie nécessaire pour sortir de sa zone de confort. Tu as vraiment eu de la chance que l’employeur t’ai donné les moyens de mener ta formation.
Te serais-tu lancé dedans si tu avais imaginé la charge que ça représentait ?
La sortie ps :
$ ps aux | grep tempo
sebasti+ 23319 0.8 0.4 119996 16464 pts/2 Sl+ 13:49 0:03 _build/default/tempo.exe
et le résultat du bench :
$ ab -n 100000 -c 10 http://localhost:8000/
This is ApacheBench, Version 2.3 <$Revision: 1879490 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking localhost (be patient)
…
Finished 100000 requests
Server Software:
Server Hostname: localhost
Server Port: 8000
Document Path: /
Document Length: 0 bytes
Concurrency Level: 10
Time taken for tests: 3.350 seconds
Complete requests: 100000
Failed requests: 0
Non-2xx responses: 100000
Total transferred: 18600000 bytes
HTML transferred: 0 bytes
Requests per second: 29851.08 [#/sec] (mean)
Time per request: 0.335 [ms] (mean)
Time per request: 0.033 [ms] (mean, across all concurrent requests)
Transfer rate: 5422.17 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.0 0 1
Processing: 0 0 0.5 0 51
Waiting: 0 0 0.5 0 51
Total: 0 0 0.5 0 51
Percentage of the requests served within a certain time (ms)
50% 0
66% 0
75% 0
80% 0
90% 1
95% 1
98% 1
99% 2
100% 51 (longest request)
Je ne vois rien de condescendant dans le message auquel tu réponds. Je pense que tu fais un présupposé là il faut seulement y voir une remarque venant de quelqu’un qui a pris le temps d’écrire son commentaire, illustré par des exemples.
Toutefois, et sans vouloir paraître condescendant, je veux bien que tu m’expliques comment tu compte implémenter la récursion terminale dans le langage.
J’ai pensé longtemps comme toi, et j’ai récemment changé d’avis. L’avantage de systemd est qu’il fait office d’ordonnanceur. On peut l’utiliser pour remplacer cron / init.d / interfaces etc
Un exemple tout con, je veux lancer mes sauvegardes de manière automatique, mais j’ai besoin de m’assurer que le réseau est up. Si le réseau est géré par systemd, il suffit de déclarer une règle After dans mon service pour que la tâche se lance dès que le pc est connecté :
Au final, ça reste des fichiers de configurations puisque tous est éditable directement c’est juste que nous n’avons pas pris l’habitude d’apprendre ce nouveau système.
Pareil, le bouquin Le Langage Caml nous explique dès le début ce qu’est la récursivité, et termine en expliquant comment compiler le langage… avec ledit langage.
[^] # Re: GNU parallel
Posté par chimrod (site web personnel) . En réponse au message Aide pour commande. Évalué à 3.
Merci tu m’apprends quelque chose là !
[^] # Re: Paramètres par défaut des distributions
Posté par chimrod (site web personnel) . En réponse au journal ssh : et si nous sensibilisions par un label, ou autre impératif?. Évalué à 4.
Pas vraiment. J’ai le sentiment qu’il y a des plages d’IP qui prennent la relève successivement dès que la première est bloquée. Je pense que fail2ban est impuissant face un réseau de botnet un peu organisé :
Tu peux changer les règles pour empêcher ça (tu fais une méta-règle qui parse les logs de fail2ban, et si la même IP est présente 10 fois en 3j tu la ban à vie), mais tu auras toujours un train de retard.
[^] # Re: GNU parallel
Posté par chimrod (site web personnel) . En réponse au message Aide pour commande. Évalué à 5. Dernière modification le 03 janvier 2023 à 10:01.
Attention, la commande va se mettre à donner des résultats bizarres dès que tu auras des espaces dans le nom de fichier. Quitte à utiliser une redirection, je préfère le couple
find
/xargs
qui te permet aussi d’utiliser plusieurs process :Exemple trivial :
find . -name '*.jpg' -print0 | xargs -0 -I '{}' --max-procs 0 echo "fichier {}"
ou la version avec
find
tout seul (mais séquentielle) :find . -name '*.jpg' -exec echo fichier {} \;
[^] # Re: Réponse
Posté par chimrod (site web personnel) . En réponse au journal Adieu Grammalecte ?. Évalué à 9.
Tout à fait. Autant cela peut être parfois bénéfique de s’accrocher à un projet pour garder un cap, autant cela peut devenir toxique si cela devient une contrainte. Dans ton message, je sens poindre la culpabilité, et ça n’est jamais bon (c’est selon moi le pire des sentiments). Prend ce journal pour ce qu’il est, une interrogation et une source d’inquiétude, mais surtout pas comme une accusation.
Prends soin de toi.
(C’est peut être évident pour tout le monde mais dès fois ça peut servir d’enfoncer des portes ouvertes !)
[^] # Re: T'as pensé au crayon à papier ?
Posté par chimrod (site web personnel) . En réponse au journal J'ai testé: une ardoise à cristaux liquides. Évalué à 3.
Oh merci ! Je cherchais depuis longtemps une application à la Zim à faire tourner sur mon PC au travail. C’est en test depuis ce matin, la prise en main s’est faite tout de suite.
[^] # Re: Problème d'hébergeur
Posté par chimrod (site web personnel) . En réponse au journal Adieu Grammalecte ?. Évalué à 6.
Tu as aussi une version en ligne de commande (qui n’est pas mise en avant et n’est accessible que par ceux qui savent qu’elle existe déjà). Je l’utilise dans vim avec le plugin éponyme.
Il faut récupérer l’archive standalone et utiliser le programme
languagetool-commandline.jar
. Voir le manuel sur le wiki.# sxhkd ?
Posté par chimrod (site web personnel) . En réponse au message Lancer une commande lors de l'appui sur une touche du clavier. Évalué à 4.
sxhkd fait partie du gestionnaire de fenêtre bspwm. C’est un petit démon utilisé dans le gestionnaire pour gérer tous les raccourcis claviers mais peut être utilisé de manière autonome. Il est paramétré avec un simple fichier texte (et un syntaxe très concise)
# buildroot
Posté par chimrod (site web personnel) . En réponse au journal NixOS ou comment j'ai rendu mes machines interchangeables et ennuyeuses. Évalué à 4.
C’est amusant, j’ai en tête un journal un peu similaire sur buildroot. La version 2022-11 est en RC-1, je comptais me laisser un peu le temps avant la sortie pour préparer ce que j’avais à y mettre :)
[^] # Re: Force brute
Posté par chimrod (site web personnel) . En réponse au lien Mots de passe : une nouvelle recommandation pour maîtriser sa sécurité. Évalué à 6.
Peut être que l’attaque par force brute n’est plus réalisée en tentant successivement les mots de passes sur le formulaire de connexion, mais à froid contre un hash qui aurait fuité lors d’une compromission de données ?
[^] # Re: Ça me fait penser
Posté par chimrod (site web personnel) . En réponse au journal [ HS ] haïku (essai). Évalué à 4.
Souffle de la lune
Souvenir d’une insomnie
Lucrèce en bépo
[^] # Re: Nitrokey
Posté par chimrod (site web personnel) . En réponse au journal Clés de sécurité, pas assez utilisées. Évalué à 6.
J’ai une nitrokey start, et j’en suis très content ( le journal devrait citer la dépeche de gouttegd à ce sujet, car on est en plein dedans). Par contre, son périmètre est réduit car il s’agit exclusivement d’une clef gpg, et ne gère pas les aspects U2F ou FIDO2.
Je pense que la solution des jetons de sécurité est une bonne solution (si l’on compare avec ce qui est en train de se mettre en place : Passkeys : Venez centraliser vos mots de passe !) : un jeton qui prend en charge NFC et GPG, pouvant etre utilisé sur le pc ou le smartphone, la possibilité de déposer sa clef publique sur franceconnect ou sur le site de sa banque et c’en est fini des problème de compte piratés (du moins pour le 0,001% de la population qui savait déjà comment se protéger…)
# Si je comprends
Posté par chimrod (site web personnel) . En réponse au lien Cosmopolitan : la libc pour faire des exécutables multi OS (et même sans OS). Évalué à 4.
Le code généré est interprété comme un script shell côté linux dont la première ligne
MZqFpD='
correspond également à du code machine valide chez Windows.Sous windows, les premières instructions (en langage machine) consistent à sauter à l’emplacement du code exécutable alors que sous Linux, le programme est lu comme un script shell, qui va s’auto décompresser pour lancer le code binaire qu’il contient.
J’imagine que le système trouve ses limites dès qu’il doit faire appel à des librairies tierces ?
[^] # Re: CSV
Posté par chimrod (site web personnel) . En réponse au lien Unix legend, who owes us nothing, keeps fixing foundational AWK code. Évalué à 4.
C’est super le format CSV, c’est simple facile, à construire, facile à lire, sauf que
mais quand on s’en rend compte, c’est trop tard. On est piégé. Fini. Foutu.
Ça fonctionne bien tant qu’on travaille sur ses propres fichiers de son coté, mais dès qu’on s’ouvre au monde on découvre à quel point l’univers est cruel :
Niveau 0 :
\,
)\\,
)Niveau 1 :
\"
)Niveau 2 :
="Du texte"
)Et la découverte de cette année : Excel enregistre le "CSV au format UTF-8" en ajoutant un Indicateur d'ordre des octets — ou BOM pour les intimes. Il te faut donc commencer à lire les premiers octets du fichier voir s’il s’agit d’un BOM, et si c’est le cas ne commencer à parser le fichier qu’après. (un exemple de cas posant problème dans un ticket de bug ouvert que j’ai ouvert suite à ça)
Allez on le répète une dernière fois pour la route
Pfff ça va mieux.
# Déjà vu ?
Posté par chimrod (site web personnel) . En réponse au message Google Chrome court circuite la configuration DNS du système (?). Évalué à 6.
Ça n’est pas la première fois que Chrome joue avec les DNS. C’est d’ailleurs intéressant d’en connaître la cause pour voir à quel point le web à divergé d’internet…
# pelican
Posté par chimrod (site web personnel) . En réponse au journal Static Site Generator. Évalué à 7.
Je suis convaincu par le format RST et son expressivité, et je suis sur Pelican depuis… longtemps maintenant. J’utilise le theme Flex que j’ai customisé à ma sauce en surchargeant les éléments qui m’intéressaient. Tu peux donc y trouver un exemple pour voir comment modifier un thème par défaut pour l’enrichir de ton côté.
L’idée pour ça est de construire le thème en y insérant des
include
qui correspondent à des sous-éléments que tu peux surcharger par ailleurs. Bien sûr, il est possible que le thème que tu utilises ais mis en place ces points de surcharge. (je suis pas allé voir sur le thème par défaut). La plupart des thèmes que j’ai vu correspondent à un thème que les gens ont pu construire peur eux, mais sans chercher à le rendre réutilisable par d’autres.L’avantage de pelican est que tu peux facilement cloner un blog existant pour le modifier à ta guise hors ligne :)
[^] # Re: Bastion ssh pi0
Posté par chimrod (site web personnel) . En réponse au journal Serveur perso basse consommation. Évalué à 6.
J’ai pris un modèle basé sur le controleur 8152B. En recherchant "8152B Micro USB 2.0" sur le site de ton vendeur tu devrais trouver assez de références :)
# Bastion ssh pi0
Posté par chimrod (site web personnel) . En réponse au journal Serveur perso basse consommation. Évalué à 10.
J’utilise un raspberry pi zero, qui est allumé 24h/24, avec un adapteur ethernet par usb (c’est le modèle sans wifi). Il fourni un serveur ssh, et j’ai des scripts wake-on-lan tout prêts qui me permettent de démarrer mon NAS a distance si nécessaire.
Quand je suis à distance, j’utilise les tunnels de ssh pour accéder aux fichiers présents sur le nas et ça marche plutôt bien, le pi0 tient bien la charge du chiffrement ssh. J’ai testé une lecture de vidéo depuis chez mes parents (connectés via la fibre) et il n’y a eu aucun soucis. Je pensais que le pi-zero serait un goulet, mais tout s’est passé sans problème.
Dans le futur je pense me construire un système buildroot dédié pour ça, mais je n’ai pas encore eu le temps de me pencher dessus, ça me permettrai d’avoir une image du système dispo à installer sur la carte SD qui me permettrait de restaurer le système.
[^] # Re: Pendant ce temps dans l'équipe de dev du backoffice paiement
Posté par chimrod (site web personnel) . En réponse au journal CISSP, sécurité, il faut que je vous raconte un truc.... Évalué à 10.
Je ne devrai peut-etre pas poster ça ici, mais sslh génère des trames http qui sont vraiment identifiables pour qui prends la peine de regarder ce qui transite par le réseau.
La solution "sure" que j’ai trouvé est d’ouvrir un proxy en https sur un serveur web, qui redirige le flux vers la machine désirée. (j’ai suivi ce bug report avec intéret à l’époque où j’en avais besoin)
Puis d’utiliser une requete ssh qui simule complètement une connexion http (le user-agent est important car certain pare-feu d’entreprise se basent dessus pour filtrer les connexions)
(non, je ne détaillerai pas davantage)
# Felicitations
Posté par chimrod (site web personnel) . En réponse au journal CISSP, sécurité, il faut que je vous raconte un truc.... Évalué à 10.
Merci pour ton témoignage, et bravo pour ton concours ! J’ai ressenti à la lecture du journal a quel point tu as du en baver ! Je ne connais pas le domaine de la sécurité, je ne vais donc pas broder dessus, mais ton retour est intéressant sur l’énergie nécessaire pour sortir de sa zone de confort. Tu as vraiment eu de la chance que l’employeur t’ai donné les moyens de mener ta formation.
Te serais-tu lancé dedans si tu avais imaginé la charge que ça représentait ?
# OCaml (avec cohttp)
Posté par chimrod (site web personnel) . En réponse au journal Le taptempo du web. Évalué à 2.
Et voici une version en OCaml, j’ai utilisé cohttp qui est une librairie bas-niveau pour construire des requêtes client/serveur.
La sortie ps :
$ ps aux | grep tempo
sebasti+ 23319 0.8 0.4 119996 16464 pts/2 Sl+ 13:49 0:03 _build/default/tempo.exe
et le résultat du bench :
[^] # Re: Complexité algorithmique
Posté par chimrod (site web personnel) . En réponse au journal [Letlang] Hommage à Leonardo Pisano Fibonacci. Évalué à 2.
Merci, je n’avais pas eu cette lecture. Avec ton retour je vois mieux ce qui s’est joué.
[^] # Re: Complexité algorithmique
Posté par chimrod (site web personnel) . En réponse au journal [Letlang] Hommage à Leonardo Pisano Fibonacci. Évalué à 8.
Je ne vois rien de condescendant dans le message auquel tu réponds. Je pense que tu fais un présupposé là il faut seulement y voir une remarque venant de quelqu’un qui a pris le temps d’écrire son commentaire, illustré par des exemples.
Toutefois, et sans vouloir paraître condescendant, je veux bien que tu m’expliques comment tu compte implémenter la récursion terminale dans le langage.
# Qtpass proprio ?
Posté par chimrod (site web personnel) . En réponse au message [IHM] pour pass + gpg. Évalué à 5.
Depuis quand ? La licence est toujours en GPLv3
[^] # Re: NetworkManager ?
Posté par chimrod (site web personnel) . En réponse au message fichier /etc/network/interfaces. Évalué à 7.
J’ai pensé longtemps comme toi, et j’ai récemment changé d’avis. L’avantage de systemd est qu’il fait office d’ordonnanceur. On peut l’utiliser pour remplacer cron / init.d / interfaces etc
Un exemple tout con, je veux lancer mes sauvegardes de manière automatique, mais j’ai besoin de m’assurer que le réseau est up. Si le réseau est géré par systemd, il suffit de déclarer une règle
After
dans mon service pour que la tâche se lance dès que le pc est connecté :Au final, ça reste des fichiers de configurations puisque tous est éditable directement c’est juste que nous n’avons pas pris l’habitude d’apprendre ce nouveau système.
[^] # Re: plus sérieusement
Posté par chimrod (site web personnel) . En réponse au lien Qu'est-ce que la récursivité. Évalué à 4.
Pareil, le bouquin Le Langage Caml nous explique dès le début ce qu’est la récursivité, et termine en expliquant comment compiler le langage… avec ledit langage.
Je trouve que ça a un côté poétique en fait.