Arsouyes.org
Voir les Non lu | Plus vieux en premierBackup avec des livres
Arsouyes.org par le 13/02/2026 à 09:16:00 - Favoriser (lu/non lu)
Comment faire un déni de service à la poste
Arsouyes.org par le 06/02/2026 à 08:15:00 - Favoriser (lu/non lu)
Retour d'expérience, 1 an de photovoltaïque
Arsouyes.org par le 05/02/2026 à 08:15:00 - Favoriser (lu/non lu)
Simplifions notre boutique
Arsouyes.org par le 27/01/2026 à 16:00:00 - Favoriser (lu/non lu)
Allégeons notre flux RSS avec make et pandoc
Arsouyes.org par le 21/01/2026 à 14:00:00 - Favoriser (lu/non lu)
Combien de robots ?
Arsouyes.org par le 16/01/2026 à 18:30:00 - Favoriser (lu/non lu)
Il y a quelques jours, après avoir revu le style du site, je me suis demandé quelles pouvait être sa fréquentation. À une époque, nous avions mis en place des statistiques (e.g. Goaccesset Matomo) mais nous les avons supprimées depuis...
J’ai donc récupéré le log de la veille pour regarder moi-même ce qu’il y a dedans et me faire une idée. Avec quelques grep, sed, sort -u, wc et cie, je me suis mis à regarder les nombres et les tendances... Et je me suis rendu compte à quel point c’est difficile de se faire une idée tant il y a de bots dans la masse...
Plutôt que de tout trier à la main, je me suis dit que j’allais tenter une petite arnaque... j’ai modifié le CSS pour inclure une référence vers un logo bidon1. Les humains qui utilisent un navigateur chargeront l’image2, les robots qui lisent le contenu ne devraient pas la demander.
Après une journée complète de ce manège, j’ai supprimé la référence, récupéré les logs de la veille et voici ce que j’en ai tiré.
Données initiales
Le 15 janvier 2026, le site des arsouyes a journalisé 13 676 accès, provenant de 2 419 adresses IP et un volume de réponses3 de 987 Mo. Pour les curieux, voici les commandes que j’ai utilisé.
# Nombres d'accès :
wc -l access.log
# Nombre d'IP
sed -e "s/ .*//" access.log | sort -u | wc -l
# Volume envoyé
sed -e "s/.*1.1. ... //" -e "s/ .*//" access.log \
| grep -v "-" \
| awk '{s+=$1} END { print s}'Pour me faire une idée de ce que cette activité représente, j’ai utilisé Gource. Cet petit outil lit des journaux4 et vous anime tout ça dans une vidéo où l’arborescence du site se déploie au fur et à mesure que vos visiteurs (qui se baladent à l’écran) touchent les fichiers.
La distribution GNU/Linux que j’utilise5 ayant un paquet dans ses dépôts, je l’installe et je le lance sur mon fichier de log.
gource access.log -s 300J’ajoute l’option -s pour donner la durée d’une journée de log (ici 5 minutes), je m’assied confortablement et je profite du spectacle. J’y vois plein de monde qui s’active autour des fichiers RSS et, régulièrement, du monde qui vient peupler les diverses parties du site. À la fin, les bonshommes disparaissent et me laissent avec l’arborescence du site, tel qu’il a été consulté le 15 janvier 2026...

La racine du site est à droite de l’image (le centre avec les boules bleues, vertes, routes, ...). La zone orange au nord correspond aux traductions de phrack (et ses fichiers au format TXT). Les articles sont sur la gauche (les points bleus sont des images et correspondent aux tutoriels). Globalement les zones en bas à droite correspondent à des répertoires (ou plutôt des chemins) qui n’existent plus ou ont été déplacés.
Premier filtre
Il est temps de se réveiller, fermer cette fenêtre et passer à la suite en filtrant les robots.
Comme je l’avais prévu, j’utilise le fichier /style/logo.png comme détecteur. Je commence par isoler ces accès dans mes logs, j’en extrait l’adresse IP et je met ce résultat dans un fichier pour plus tard.
grep "/style/logo.png" access.log | sed -e "s/ .*//" | sort -u > ips.txtJe peux maintenant filtrer mes logs d’accès pour ne garder que ceux des humains.
grep -f ips.txt access.log > access-human.logCe fichier comprend 963 accès répartis sur 124 adresses IP. Les personnes qui ont accédé à mon faux logo représentent 5% des visiteurs et 7% des requêtes.
| Proportion | |
|---|---|
| Accès | |
| Adresses |
Ce filtre n’est pas parfait et je m’attendais à des erreurs :
- Des faux positifs : des humains qui seraient vu comme des robots parce qu’ils utilisent des outils en ligne de commande. J’ai regardé les logs, mis à part
curl(utilisé pour scanner/wordpress/), aucun navigateur en ligne de commande n’est vu ce jour là (e.g.lynx,links,wget). - Des faux négatifs : des robots qui se seraient fait passer pour des humains. Et là, oui, il y en a. Plein plein plein.
Filtre manuel
Comme mon filtre automatique n’a pas filtré assez, je suis passé en manuel. J’ai regardé, pour chaque adresse IP qui a vu le fichier, quels sont les logs qui lui correspondent pour déterminer si c’est ou non un humain.
Certains annoncent qu’ils sont des robots dans les user-agent, mais d’autres ne jouent pas le jeu...
- Ils accèdent à des fichier (pas des pages ; des images, des PDF, le logo), avec un REFERER qui dit venir d’une page des arsouyes, et c’est là leur seule activité de la journée.
- Ils accèdent à des pages qui n’existent plus depuis plusieurs années et ne sont référencées nulle part sur le web.
- Des adresses IPv6 dont les 48 derniers bits sont à 0 ; ça flaire l’IP de grappes de serveurs avec adresse statique, ce ne sont pas des visiteurs mais des serveurs6.
Avec ce filtrage, il me reste 570 accès par 55 adresses. Plus de la moitié des adresses étaient des robots (mais ils ont généré moins de la moitié des requêtes).
En gardant uniquement leur activité, je peux reprendre gource et contempler les gens venir nous rendre visite. C’est bien plus doux que tout à l’heure, et le résultat correspond bien mieux au site existant (les redirections et autres chemins oubliés sont bien plus rares).

Et après ?
Puisque les robots représentent 97.8% des visiteurs, je me suis dit que ça pourrait être intéressant de voir ce qu’il y a dans le tas. Ou plutôt de voir comment ça se réparti...
Les lecteurs RSS. Ce sont effectivement des robots, mais ils viennent parce que des gens veulent savoir s’il y a du nouveau chez les arsouyes. Vu que d’autres robots viennent aussi lire le flux, je ne peux pas filtrer sur le fichier ; je les ai filtrés par leur
user-agent7,Les robots d’indexation. Puisque le but du moteur de recherche est de m’envoyer des visiteurs ensuite, on peut se dire que ses robots sont utiles. Idem, j’ai filtré par
user-agent.Les pénibles (le reste). Des robots de SEO, des robots de sécurité (qui viennent me scaner alors que j’ai rien demandé), des robots d’IA (alors qu’on le leur a interdit) et autres petits malins.
Vous trouverez les chiffres dans le tableau suivant. Les robots d’indexation jouent le jeu, ils sont relativement peu nombreux (143 IP, soit 6%) et font peu de trafic, 319 requêtes (2,3 %) pour 22 Mo (2,2 %). Ce qui m’a surpris, c’est le RSS ; il sont à peine plus nombreux que les robots d’indexation mais génèrent 16 fois plus de requêtes et 26 fois plus de trafic89.
| IPs | Accès | Volume | |
|---|---|---|---|
| Humains | 55 | 570 | 57 Mo |
| Indexation | 143 | 319 | 22 Mo |
| RSS | 204 | 5 310 | 570 Mo |
| Total | 2419 | 13 676 | 987 Mo |
Et si les chiffres vous sont difficiles à comparer, voici un graphique qui vous montre les proportions de chaque groupe suivant qu’on regarde le nombre d’adresses IP, de requêtes, ou le volume généré.

Initialement, on avait créé le site des arsouyes pour nous adresser à d’autres humains. On a vu les robots d’indexation comme des alliés pour permettre à ces humains de nous trouver. Finalement, on se rend compte que notre public principal ce sont des robots dont la plupart sont complètement débiles.
Combien de robots ?
Arsouyes.org par le 16/01/2026 à 18:30:00 - Favoriser (lu/non lu)
Les arsouyes font peau neuve
Arsouyes.org par le 12/01/2026 à 18:30:00 - Favoriser (lu/non lu)
Ça fait quelques temps qu’on trouve le web un peu ennuyeux. Peut être qu’avec l’âge on s’aigrit un peu, ou que l’ambiance sociale ces temps-ci ne s’y prête pas. Mais au bout du compte, on a du mal à retrouver l’amusement un peu flamboyant des premières cyber-années lorsqu’on navigues d’un blog à l’autre.
D’habitude, c’est à ce moment du post qu’on place une petite note qui dit « Sauf chez les arsouyes ». Mais on doit bien admettre que même notre propre site a fini par nous ennuyer... Pas que le style soit moche (voyez la capture suivante, prise pour la postérité), mais à force, il a fini par nous lasser.

On va pas s’alarmer non plus, ça nous prend régulièrement (cf. en 2017 et en 2023). On est pris d’une envie de nouveauté et on revoit le style de notre site pour mieux coller à notre état d’esprit. Et comme à chaque fois on trouve la nouvelle mouture qualitativement bien supérieure à l’ancienne, on se dit qu’à force, on va forcément toucher le Graal !
Fun ou lisibilité ?
Toute la difficulté, lorsqu'on veut faire un site fun, c'est de le garder lisible malgré tout... Parce que c'est pas les idées funs qui manquent. Voyez les captures qui suivent...

Le problème, c’est une quand on confronte ces possibilités à la réalité et que ça ne marche plus. Lorsqu'on remplace le lorem ipsum et autres illustrations bidon par de vrais contenus, on se rend compte que les bannières défilantes, les clignotements, les effets CRT, les fonds transparents et les arc en ciels animés, ça rend pas forcément les choses très lisibles.
Le style qu'on a créé cette fois n'est pas le plus fun d'entre tous, mais il a au moins le mérite de ne pas vous faire saigner des yeux1.
On a beaucoup nettoyé
Une fois qu'on a fixé le style et la structure, on a du repasser sur toutes les pages pour voir ce qu'il fallait adapter et on en a profité pour faire du nettoyage...
Notes en bas de page. J'adore mettre des notes en bas de page un peu partout mais l'ancien style ne s'y prêtait pas bien car, comme leur nom l'indique, elles sont placées en bas de la page et sont donc pénibles à utiliser2. Il y a bien des solutions à base de filtres, pour simuler des notes en marge (cf. chez Arthur Perret) mais on trouvait dommage de devoir les utiliser...
Heureusement, pandoc dispose maintenant d'une option
pour modifier le placement des notes (--reference-location) ;
en bas de la page, en bas de la section ou juste après le bloc qui les
appelles. C’est cette dernière solution que nous avons choisie.
Citations. Avant, nous utilisions les blocs de
citation (i.e. <blockquote>) pour un peu
tout et n’importe quoi. Des citations bien sûr, mais aussi des passage
que nous trouvions plus important, et d’autres plus annexes... Ces
usages incohérents sont maintenant corrigés.
Moins d’images. Dans une autre vie, nous avions cru utile d’illustrer tous les articles (voir toutes les sections) et avions galéré à trouver des images pour ce faire. Mis à part quelques rares exception qui nous ont semblé utiles, nous avons viré toutes ces illustrations.
Moins de news. De la même manière, nous avions gardé une copie de nos courriels envoyés sur la liste de diffusion, catégorisés news. Objectivement, ces posts ne faisaient que lister les liens vers les nouveaux articles et vers les articles de presse où nous apparaissions. Comme ces informations sont déjà disponibles, on a supprimé ces posts et on n’a gardé que les news qui nous semblent apporter quelque chose.
Et après ?
Ce nouveau style est sensé mieux représenter notre état d’esprit3. Tout n’est pas encore fini et on a quelques idées d’adaptations mais la base est là et on est content qu’il soit en ligne.

On est repassés partout pour vérifier mais il est possible qu’on ait oublié des coquilles de temps en temps. Si vous en trouvez, faites-nous signe.
Les arsouyes font peau neuve
Arsouyes.org par le 12/01/2026 à 18:30:00 - Favoriser (lu/non lu)
Prouver qu'une vidéo est un montage
Arsouyes.org par le 07/11/2025 à 14:00:00 - Favoriser (lu/non lu)
Prouver qu'une vidéo est un montage
Arsouyes.org par le 07/11/2025 à 14:00:00 - Favoriser (lu/non lu)
Il y a quelques temps, Jean (prénom d’emprunt) nous a contacté car il se considérait victime d’un trucage vidéo et cherchait un moyen de se défendre...
Son employeur l’a fait suivre par des détectives pendant un arrêt maladie et verse au débats la fameuse vidéo qui le montre bien trop agile pour sa maladie. Jean ne se trouve pourtant pas si agile et penses que la vidéo a du être truquée.
De notre côté, on fait un premier visionnage rapide et on la trouve plutôt saccadée...
Un montage de montages
Après l’habituel calcul des empreintes cryptographiques (pour garantir l’authenticité des fichiers analysés), on commence par regarder les méta-données...
Aucune métadonnée ne mentionne d’appareil de prise de vue, aucun horodatage d’une prise de vue, aucune géolocalisation non plus. Rien de ce qu’on trouve habituellement sur une vidéo issue d’une caméra.
Au contraire, on trouve plutôt les informations de montage... Logiciel de montage (After Effect), date de montage (un mois après la clôture du rapport), fichiers sources, chemin du répertoire du projet. Ce chemin est intéressant car il contient le nom de l’utilisateur, formé de l’initiale du prénom suivie du nom de famille ; il correspond à un graphiste, collègue de Jean pour le même employeur...
Les métadonnées mentionnent aussi l’organisation des rushs utilisés pour le réaliser. Après dédoublonnage on liste une centaine de portions de vidéos avec leurs position et durée dans les fichiers initiaux et celui de destination. Et pour mieux les visualiser, on produit une sorte de diagramme de Gantt où chaque rush est sur une ligne ; la pente permet de se rendre compte de la densité des portions.

Curieusement, ces informations suggèrent que le montage n’ait consisté qu’à mettre bout à bout les fichiers sources. Pourquoi avoir monté autant de petites portions alors qu’elles sont toutes contigües ? Parce que c’est After Effect qui a gardé l’information des rush des fichiers sources, qui étaient eux-même des montages...
Nombreuses coupures
Problème, lorsqu’on regarde le diagramme précédent, il est sensé y avoir plusieurs séquences plutôt longues sans coupures, mais ça ne correspond pas à ce qu’on voit lorsqu’on regarde la vidéo... Et on se dit qu’il y a quelque chose à creuser.
On développe un petit outil qui détecte des coupures lorsque deux images successives sont trop différentes.
- Pour éviter les faux positifs, on valide chacune des coupures détectées à la main. Effectivement, certaines détections correspondent à un gros objet qui entre rapidement dans le champ de vision. On trouve un total de 300 coupures.
- Pour estimer les faux négatifs, on vérifier complètement manuellement une portion. Certaines coupures sont effectivement très subtiles, c’est à peine si on voit les raccords... On en trouve ainsi 100 alors que l’outil n’en avait trouvé que 50.
Et certaines coupures ne sont pas anodines. Par exemple lorsque Jean sort de sa voiture (garée devant un parc). Il y a en fait 4 coupures rien que sur cette action. Le problème, c’est qu’on a pu estimer que le temps coupé correspond à peu près au temps restant. Si la suite des images ne semble pas accélérée, le mouvement général prend moitié moins de temps qu’en réalité.
Des répétitions
En vérifiant à la main les coupures, on a l’impression de voir plusieurs fois la même action. C’est courant lorsqu’on fouille des photos sur des disques durs, parce que les photos sont pas toujours bien triées lorsqu’on les passe au peigne fin, mais pour une vidéo, c’est étrange...
On se code un petit outil pour voir deux images d’une même vidéo puis les faire défiler en parallèle et, en jouant avec les deux curseurs, on arrive à les synchroniser. La séquence de 25 images est bien utilisée deux fois. Et grâce à notre outil, on en trouve plusieurs autres.
Se pose maintenant deux problèmes. Comment trouver les autres répétitions, et comment visualiser ce résultat ?

Pour y arriver, nous avons calculé la similarité entre chaque couple d’image et l’avons visualisée sous forme de matrice. Chaque pixel correspond à la similarité entre l’image en abscisse et celle en ordonnée. La diagonale principale se voit en jaune car ces images y sont comparées avec elle même (donc identiques).
Les répétitions se voient facilement par de petites diagonales jaunes ailleurs dans l’image. Elles correspondent à des séquences d’images identiques, mais à deux endroits différents du flux vidéo. Sur l’exemple plus haut, on voit les répétitions des gestes des petits animaux lorsqu’ils lancent des fruits sur Big Bug Bunny.
Le montage n’a donc pas consisté qu’à mettre bout à bout des séquences, où à enlever des portions. Il a aussi consisté à répéter certaines d’entre elle, Jean est alors montré faisant le même geste plusieurs fois.
Une réécriture
À force de regarder les débuts et les fins des séquences, à essayer de les synchroniser, une autre bizarrerie nous frappe. Deux séquences semblent montée en ordre inverse...
On reprend une analyse minutieuse des séquences en question. On regarde tous les petits détails, tous les objets qui bougent, entrent et sortent du cadre. On dresse un plan du parc où Jean se ballade à partir des points de vue et du décors et on y note l’emplacement de la caméra...
La vidéo nous montrait Jean assis à un banc du parc, puis se baladant vers un autre et ainsi de suite pour en faire le tour avant de rentrer chez lui. En fait, il n’a visité qu’un seul banc puis est revenu à sa voiture.
Conclusion
Ce qui était présenté comme la vidéo des prises de vue des détectives était finalement un montage vidéo à partir d’autres montages. Des séquences ont été coupées, d’autres ont été répétées et réorganisées pour tordre le réel et raconter une histoire plus compatible avec les prétentions de l’employeur.
Comme toujours, le vrai coûte plus que le faux, et prouver le faux coûte encore plus. Il a fallu deux détectives pendant deux jours pour produire les prises de vues. Le montage lui-même n’a pas du prendre plus d’une demi journée de travail au graphiste. Et finalement notre analyse du montage a nécessité deux experts pendant plus d’une semaine.
C’est pour cette raison qu’on devrait toujours considérer qu’un vrai est accompagné de sa preuve. Un montage vidéo, aussi minime soit-il (e.g. ajout de sections de titres) devrait toujours être accompagné des fichiers originaux. C’est ce que nous faisons lorsque nous ajoutons des planches contacts à un rapport ; la vidéo originale est systématiquement en annexe numérique.
Si ce n’est pas la cas, si l’original n’est pas fourni, c’est forcément louche, par principe. Et si vous êtes face à ce genre de vidéo, n’hésitez pas à demander l’aide d’un expert.
Ce que les paradigmes de programmation disent vraiment
Arsouyes.org par le 04/09/2025 à 10:00:00 - Favoriser (lu/non lu)
Ce que les paradigmes de programmation disent vraiment
Arsouyes.org par le 04/09/2025 à 10:00:00 - Favoriser (lu/non lu)
En théorie, tous les langages de programmations sont équivalents. Les problèmes qu’on peut résoudre avec l’un peuvent être résolut avec un autre. En particulier parce qu’ils peuvent se simuler les uns les autres (on dit alors qu’ils sont Turing Complets) et pour s’en convaincre, il suffit de se rappeler qu’on exécute tous les programmes sur un processeur et qu’on peut l’émuler par des programmes.
Mais en pratique, ils sont bien différents. Il y a d’abord le vocabulaire et la grammaire qui les rendent plus faciles à utiliser (ou pas). Il y a ensuite les fonctionnalités offertes par défaut et qui faciliterons la résolution des problèmes (ou pas). Sans oublier l’écosystème de modules additionnels et la communauté humaine qui apporteront un soutien bienvenue (ou pas).
Face à la multitude des langages, le mythe voudrait qu’on fasse le choix rationnellement. En pesant le pour et le contre, qu’on détermine le meilleur d’entre eux. Les enseignant les plus ouverts admettront que ce choix dépend du contexte mais, dans l’idée, il y a toujours un langage supérieur aux autres dont les missionnaires se feront une joie de vous en convaincre.
Ce choix est en fait politique. Choisir un langage, c’est choisir les paradigmes qu’il met en œuvre. Déclaratif, impératif, fonctionnel, orienté objet, ... C’est définir ce que programmer veut dire. Et ça a des conséquences.
Programmation Déclarative
La programmation déclarative consiste à énoncer l’objectif qu’on souhaite obtenir et laisser le système résoudre le problème à notre place.
Par exemple, en HTML, on peut écrire un document dont le contenu stipule une page contenant un paragraphe dont le message est « hello world ». Charge ensuite au navigateur de résoudre les contraintes graphiques pour produire l’affichage correspondant.
<html>
<body>
<p>Hello World !</p>
</body>
</html>On retrouve cette façon d’aborder les problèmes dans d’autres domaines comme la programmation logique par contraintes. Voici un exemple en Answer Set Programming qui décrit un monde où world est une personne, hello est une salutation puis exprime comment sont construits les messages (une salutation suivie d’une personne).
person(world).
greets(hello).
message(S, P) :- greets(S), person(P).
#show message/2.Ce programme peut alors être fourni à un solver qui se charge d’interpréter les contraintes et nous fournir un modèle qui les respectes, ici les messages possibles, c’est à dire « hello world ».
clingo version 5.7.2 (6bd7584d)
[...]
Answer: 1
message(hello,world)
SATISFIABLE
[...]
De manière encore plus générale, les chat bots peuvent être vu comme une programmation déclarative. On exprime le résultat qu’on voudrait et ils se chargent de le produire... avec plus ou moins de réussite (ici il n’a pas respecté la casse).
Dans ce genre de situation, on ne parle pas vraiment de programmation. Parce qu’il s’agit principalement d’émettre des contraintes et de laisser l’outil trouver une solution qui les respecte. On pourrait l’assimiler à prier une entité supérieure pour qu’elle résolve le problème. Si l’entité est efficace, et si le problème est dans sa zone de compétence, la solution sera adaptée. Mettre en forme un document multimédia, trouver un modèle logique, générer du texte qui ressemble à du texte. Et sinon…
Programmation Impérative
À l’opposé, la programmation impérative consiste à fournir des instructions exactes à une machine qui va les exécuter telles quelles et fournir le résultat correspondant (aux opérations ; c’est pas forcément le résultat qu’on voudrait).
Par exemple, on pourrait écrire un programme qui affiche « hello
world » sur la sortie standard en assembleur x86-64 comme suit. On
défini une zone mémoire contenant le message puis, dans le code, on
prépare les registres et on exécute l’appel système
write(). Le code C équivalent est commenté en vis à vis
pour vous montrer que l’idée est assez générale.
hello: .string "hello world\n" # char hello = "..." ;
sizeofhello = . - hello
/* ... */
write:
mov $0x01, %rax # write(
mov $0x01, %rdi # stdout,
lea hello, %rsi # hello,
mov $sizeofhello, %rdx # sizeof(hello),
syscall # ) ;Ce style de programmation convient surtout pour des scripts. Plutôt que de refaire le même enchaînement de commandes, encore et encore, on les écrits dans un fichier et c’est lui qu’on fournira au système pour qu’il les exécute automatiquement. Voici un exemple en bash :
echo "hello world"Ce n’est pas flagrant sur un hello world mais l’idée de ce style de programmation, c’est surtout d’automatiser des tâches qu’on ne veut (ou qu’on ne peut) pas faire soi-même. Il n’y a pas d’ambition à créer un Grand Programme qui résolve un Grand Problème. Le but c’est de résoudre des petites tâches de la vie courante : de la configuration système, de la résolution de défis en ligne, des shellcodes, …
Pour passer à l’Ordre Supérieur, il faudra structurer tout ça. On le fait en regroupant des parties du programmes en morceaux autonomes. Fonctions, méthodes, … les noms ne manquent pas et ils correspondent au paradigme suivi pour gérer la complexité du problème.
Programmation Fonctionnelle
La programmation fonctionnelle est très proche des mathématiques. Le programme est vu comme un ensemble de fonctions qui prennent des paramètres et fournissent des résultats. Chaque fonction peut en appeler d’autres (voir s’appeler elle-même). Programmer consiste à écrire ces fonctions mathématiques et les appeler dans le bon ordre avec les bons paramètres.
L’extrait de code OCaml suivant en est un exemple. La première ligne défini une fonction salutation qui prend une personne en paramètre et affiche un message de bienvenue. La deuxième ligne défini la fonction principale (exécutée lorsque le programme est lancé) qui appelle salutation en lui fournissant son paramètre (le nom de la personne à saluer).
let salutation personne = print_endline ("hello " ^ personne) ;;
let () = salutation "world" ;;Techniquement, les puristes parleront plutôt de procédure. Un peu parce que salutation ne fourni pas de valeur de retour. Mais surtout parce qu’elle a un effet de bord. Et une Fonction mathématique respectable ne s’adonne pas à ces vulgarités.
Plein d’autres langages fonctionnels existent mais on peut retrouver ce paradigme dans des langages qui ne s’en prétendent pas forcément. L’extrait suivant est en JavaScript et suit la même logique. Une fonction pour saluer et une autre qui s’exécute une fois le document affiché. Petite variation, on a cette fois utilisé une structure pour transmettre l’entité à saluer (et plus une simple chaîne de caractère).
function salute(person) {
console.log("bonjour " + person.name) ;
}
window.onload = function () {
w = { name : "world" } ;
salute(w) ;
}L’avantage de ce tic de langage, à voir tout comme des fonctions, est qu’on peut leur appliquer des raisonnements mathématiques et, dans certaines limites, prouver quelques propriétés. Tout s’effondre lorsqu’on ajoute des effets de bords et ça explique l’animosité des puristes envers les procédures : elles violent les limites en sortant de leurs portées.
Il faut également avoir en tête que ce paradigme introduit une hiérarchie entre les fonctions. Les principales (qui savent) appellent leurs subordonnées (qui exécutent). On trouve parfois des fonctions qui s’appellent elle-même (une forme d’onanisme) voir mutuellement mais ce deuxième cas est rare et nécessite une syntaxe spécifique.
De même, les structures de données sont totalement transparentes pour les fonctions. Les fonctions savent ce qu’il faut faire et utilisent le contenu des structures pour mettre en œuvre la solution. Seul un système ad hoc de découpage en module permet (parfois) de réserver cet accès à certaines fonctions mais ce n’est pas naturel dans ce paradigme.
Programmation Orientée Objets
La programmation orientée objet propose d’inverser ce point de vue ; de délaisser les fonctions pour mettre l’accent sur les données. Les fonctions font alors partie intégrante des données qu’elles manipulent et l’ensemble produit un objet autonome. Programmer en POO consiste à définir et donner vie à un écosystème d’agents qui vont collaborer pour résoudre le problème.
Prenons un exemple en PHP. Cette fois nous définissons une
classe qui décrit des personnes. Un attribut $name
pour stocker le nom (et garder son accès privé), une première méthode
pour construire ces objets (en fournissant un nom) et une autre pour les
saluer. Les deux dernières lignes de code instancient un objet puis
invoquent sa méthode.
class Person {
private $name ;
public function __construct($name) {
$this->name = $name ;
}
public function salute() {
echo "hello " . $this->name . "\n" ;
}
}
$p = new Person("world") ;
$p->salute() ;Au delà des droits d’accès sur les données, le réel intérêt de la programmation objet est qu’on peut définir des objets équivalents et les substituer les uns aux autres. Concrètement, ces objets doivent disposer de méthodes en commun (même nom, mêmes paramètres et, suivants les langages, quelques indications supplémentaires). Un code qui utilise ces méthodes peut alors utiliser n’importe lequel de ces objets en fonction des situations sans changement de son code à lui.
La hiérarchie se déplace des fonctions aux objets et ne traduit plus une autorité mais un héritage. Les objets parents lèguent leurs données et leurs comportements à leurs enfants qui peuvent, au besoin, les adapter et les étendre.
De manière générale, une bonne conception repose sur des structures opaques. Plutôt qu’accéder directement aux données d’un objet, il est plus efficace de masquer les données derrière des méthodes. Dit autrement, c’est l’objet lui-même qui sait comment gérer ses propres données.
La liberté des uns s’arrête où commence celle des autres.
Devise de la paix de Fexhe
Et après
Tels qu’on les rencontre la plupart du temps, ces paradigmes de programmation ne font que traduire un point de vue sur ce que programmer veut dire. La programmation déclarative se concentre sur le résultat à obtenir et l’impérative sur le moyen de l’obtenir. La programmation fonctionnelle utilise des fonctions omnipotentes et la programmation orientée objet crée un écosystème d’agents.
Plus qu’une façon de programmer, ces paradigmes définissent notre approche pour résoudre des problèmes... À force d'utiliser un marteau, le monde ressemble à des clous. Les outils qu'on utilise façonnent notre cognition, nos réflexes de pensées, nos façons d'envisager et résoudre les problèmes.
Quand on verse de l'eau dans une cruche, elle prend la forme de la cruche et elle n'est plus la même. Il y a une heure, ils n'imaginaient même pas qu'on puisse porter des noms, et maintenant ils se les disputent.
Terry Pratchett, Procrastination (p. 266), trad. Patrick Coutton
La guerres qui oppose les partisans de programmation fonctionnelle (Lisp, OCaml, Haskell) à la programmation orientée objet (Java, C++, ...) est bien plus profonde qu’une préférence entre les fonctions ou les données. Elle prend sa source dans notre rapport au monde.
- La programmation fonctionnelle induit, par nature, une vue hiérarchique et autoritaire du monde. Les fonctions savent ce qui est bon et accèdent à tout ce dont elles ont besoin pour produire la Vérité.
- La programmation orientée objet induit, par nature, une vue confédérale et distribuée du monde. Les objets collaborent respectueusement entre eux pour produire, collectivement, une solution au problème.
On retrouve cette différence de point de vue dans bien d’autres domaines de l’informatique. La répartition client/serveur induit une asymétrie de rôle et de pouvoir entre le serveur central et les clients périphériques. Au contraire, la répartition pair à pair induit un équilibre et une convergence collective vers le but du service.
Toute organisation qui conçoit un système, au sens large, concevra une structure qui sera la copie de la structure de communication de l’organisation.
Si vous vous demandiez pourquoi les classes préparatoires informatiques (MP2I) enseignent la programmation fonctionnelle, pourquoi le concours de l’agrégation ignore tant de la programmation orientée objet ou encore pourquoi l’HADOPI cible le pair à pair, vous avez maintenant la réponse...
Encierro ou harcèlement ?
Arsouyes.org par le 03/08/2025 à 12:00:00 - Favoriser (lu/non lu)
Encierro ou harcèlement ?
Arsouyes.org par le 03/08/2025 à 12:00:00 - Favoriser (lu/non lu)
Il y a quelques années, alors que nous intervenions dans des classes de CM2 à propos des dangers d’internet, nous avons remarqué que la mayonnaise ne prenait pas du tout.
Bon, nous abordions le côté juridique du harcèlement ce qui n’est pas le sujet le plus sympa de nos ateliers, mais d’habitude, on a toujours plein de questions sur la genèse des lois, le fonctionnement de la justice, des enquêtes et notre rôle dans tout ça. Mais cette année là, rien. Les élèves ont récité la définition du harcèlement qu’ils avaient religieusement apprise plus tôt dans l’année puis plus aucune réaction.
On a cherché quelques raisons qui expliquait cette différence… peut être la chaleur de cette fin de mois de juin, peut être que le sujet est arrivé trop abruptement, peut être que si, que ça… mais aucune explication ne nous satisfaisait vraiment.
Jusqu’à ce que, cette année, le déclic se fasse par hasard lorsqu’un de mes stagiaires m’a raconté ce qu’il a vécu lors des fêtes taurines du village et me montre la vidéo…
Personnellement, je ne m’étais jamais vraiment intéressé à ces festivités ; pour moi un taureau, c’est avant tout un animal de ferme qu’on traite avec respect et qu’on laisse paître tranquillement. Que ceux que j’ai vu dans mon enfance chez mes oncles et tantes fassent plus d’une tonne y est peut être pour quelque chose.
Mais revenons aux fêtes votives…
Historiquement, dans notre village, les recensements avant la seconde guerre mondiale montrent bien des élevages d’animaux mais pas de bovins. Vu le climat, on préférait en fait élever des moutons (on reprochait aux chèvres de casser les murets). Sans taureaux, le village n’avait pas d’arènes inutile.
Depuis, nous n’avons toujours pas de manades au village mais on voit quelques un de ces taureaux camarguais paître dans certains champs. Techniquement, nous sommes à 40 minutes de voiture de la Camargue, cette zone humide paralique. Après avoir vécu ma jeunesse en Ardennes, je ne peux pas qualifier mon village actuel de zone humide tout en restant sérieux.
Mais revenons aux fêtes taurines…
Le village ayant grandit et s’étant doté d’un comité des fêtes, il fallait trouver des animations pour réunir les villageois et tant qu’à importer Halloween, pourquoi pas d’autres fêtes traditionnelles… avec des taureaux camarguais cette fois. Après tout, c’est vachement plus local.
Plusieurs fois par jour, nous avons d’abord eu des abrivado/bandido. C’est le nom qu’on donne aux aller/retour des taureaux des pâtures aux arènes. Bon, nous n’avons pas d’arènes et les champs où paissent les taureaux sont a) bien trop secs pour les qualifier de pâtures, b) à plus de trois kilomètres de la place du village et c) n’appartiennent pas forcément à la bonne manade.
Alors le village a aménagé une petite zone circulaire en bordure des habitations pour rapprocher et figurer la pâture et la manade a garé son camion au centre du village pour l’arène. L’animation consiste donc à ce que des cavaliers encadrent des taureaux pour leur faire des aller/retour entre un parking et un camion. Personnellement, j’aurais laissé ces animaux tranquilles chez eux, ça aurait évité ces trajets inutiles mais on m’a répondu que c’est traditionnel…
Pour compléter les festivités, nous avons aussi des encierro qui ont l’avantage de pouvoir s’effectuer plus tard dans la journée (voir au début de la nuit) : on délimite un ensemble de rues, on lâche un taureau pour qu'il s’y balade et les villageois s’en amusent.
Je n’imaginais pas qu’on puisse lâcher un taureau dans un village mais les Camarguais pèsent le tiers d’un Blanc Bleu Belge (qu’ils compensent par leur caractère). Mais la municipalité installe des barrières spéciales qui bloquent les taureaux mais pas les villageois. Les cornes de la bête sont également recouvertes d’un tissu pour leur protection. En provençal, on parle en fait de biou qui signifie bœuf (la castration rend moins agressif) mais je n’ai pas été vérifier.
Si vous n’avez jamais vu ce genre d’événement, j’ai retrouvé la vidéo de l’épisode qui a secoué mon stagiaire : https://www.youtube.com/watch?v=igPvkFIy2Cc. Vous y verrez les barrières et les gens autour. Après avoir constaté que la place est sans issue, lorsque le taureau veut rentrer chez lui (à 1’34’’), il constate qu’ils ont refermé derrière lui. Ce n’est qu’après avoir attrapé une jeune fille et l’avoir fait tourner comme un soleil1 (à 25’31’’) qu’on lui ouvre enfin les portes et qu’il peut rejoindre cette chambre noire.
Mais revenons à notre intervention à l’école…
L’année où la mayonnaise n’a pas pris avec les élèves, le hasard du calendrier a voulu que nous intervenions la même semaine que la fête du village. Avec leurs maillots aux couleurs de leurs bandes, les élèves assistaient et participaient d’un côté aux encierros et de l’autre, à nos ateliers sur le harcèlement…
Des propos ou comportements répétés ayant pour objet ou pour effet une dégradation de ses conditions de vie.
Je ne sais pas ce que voient mes contemporains lorsqu’ils assistent à ces spectacles mais moi j’y ai vu la célébration du harcèlement : des acrobates qui excitent un taureau désarmé pendant une demi heure pour le pousser à réagir en restant hors de portée, le tout devant un public qui les encourage avec la bénédiction de la municipalité.
Les enfants ne sont pas idiots. Je l’étais de ne pas les avoir compris.
Conventions de stage au féminin
Arsouyes.org par le 09/07/2025 à 09:00:00 - Favoriser (lu/non lu)
Conventions de stage au féminin
Arsouyes.org par le 09/07/2025 à 09:00:00 - Favoriser (lu/non lu)
L’été est synonyme de soleil, de beau temps, de chaleur avec quelques
orages pour rafraichir mais aussi de stagiaires… Surtout que cette
année, en plus des 3ième (collège) et diverses études
post-bac, il faut aussi compter sur les 2nd (lycée) et leur
deux semaines de garderie d’observation en entreprise.
Et qui dit stagiaires dit aussi convention de stage. Ce document d’un peu moins de 10 pages qui fixe les règles du jeu du stage et qu’il faut donc compléter pour correspondre à chaque contexte particulier.
Cette année, nous accueillerons une jeune étudiante pendant une semaine. Pour que tout soit en règle, elle a utilisé l’application web de son Université (de Rennes) en renseignant tous les champs du formulaire (y compris son sexe) et l’application a généré automagiquement une convention au format PDF dont voici le début de la toute première page (le numéro a été changé).

Comme vous l’avez sans doute remarqué dès la première lecture, cette nota (locution latine remplaçant note qui permet de démontrer la culture supérieure du rédacteur) pose quelques problèmes grossiers :
- Elle est incomplète car les mots « médiateur » et « conciliateur » qu’on retrouve plus loin dans la convention y sont également écrit au masculin mais ne sont pas listés ;
- Elle n’est pas grammaticalement valide car « enseignant référent » et « représentant légal » ne sont pas des mots mais des groupes nominaux ;
- Elle n’est pas non plus valide typographiquement puisqu’elle utilise les guillemets anglais (“…”) au lieu des guillemets français («…») ;
- De même il ne devrait pas y avoir d’espace entre le guillemet fermant stagiaire et la virgule qui le suit,
- De même, il ne devrait pas y avoir de virgule entre les deux derniers éléments d’une énumérations séparés par la conjonction de coordination « et ».
Alors maintenant que nous avons enlevé l’éléphant de la pièce, qu’on a fait le tour de trucs bien évidents, j’aimerais attirer votre attention sur un point de détail très subtil qui nécessite peut être une deuxième lecture très attentive.
Pour éviter une surcharge mentale, après tout cette nota est pleine de mots compliqué de trois à quatre syllabes, je vous ai écrit une version équivalente qui n’utilise que des mots courts et simples :
Note : pour être plus à l’aise, on oublie les femmes.
Ce qui m’amène naturellement à la question suivante : « pour l’aise de qui ? ».
Ce n’est pas pour le confort du lecteur. Parce que autant je n’aime pas le point médian, autant je ne supporte pas de lire un qualificatif masculin concernant une femme. Mon cerveau entre en dissonance cognitive en se demandant si on parle d’un homme ou d’une femme et finalement de qui on parle…
Pour faciliter la lecture il eut été plus efficace d’accorder ces mots à la personne à laquelle ils font référence.
C’est donc peut être pour celui qui rédige la convention ? Mais elle est générée par une application web à partir des données d’un formulaire rempli par les futurs stagiaires et qui demande déjà le sexe… rajouter ce cas d’usage doit pas prendre plus d’une demi journée (tests unitaires compris).
Je veux dire, l’industrie du jeu vidéo est capable de traduire les
contenus dans une ribambelle de langue et les localiser dans autant de
pays. Il y a même des jeux où on choisi le sexe du personnage puis tous
les dialogues sont accordés… Mais une Université qui comprend des cursus
d’enseignement et des instituts de recherche en informatique ne serait
pas capable d’utiliser une instruction if…
D’autant que si j’en crois la Charte de promotion de l’égalité et de lutte contre les discriminations à l’Université de Rennes qui est en annexe de la convention (pages 7 et 8) et que j’ai du signer, ce genre de petite chose aurait du être prévue…

Et parce que l’extrait précédent pourrait passer pour ambigu, voici un extrait de l’annexe de cette charte (également présente dans la convention) qui défini les discriminations directes.
![Constitue une discrimination directe la situation dans la quelle sur le fondement de son sexe […] une personne est traitée de manière moins favorable qu’une autre](https://www.arsouyes.org/image-20250704184041202.png)
Donc alors même que l’Université de Rennes prétend lutter contre le stéréotypes et les discriminations, elle rédige des conventions qui mettent de côté la moitié de la population. Pire, la note mentionne 4 rôles qui sont masculinisés, la convention n’est donc grammaticalement bien accordée que si ces 4 rôles sont effectivement masculins ce qui n’arrive que dans 1 cas sur 16.
Dans 15/16 cas possibles, au moins une femme doit faire l’effort cognitif d’ignorer l’erreur d’accord la concernant. En réalité, c’est 100 % des femmes qui doivent faire l’effort d’ignorer l’irrespect dont elles font l’objet.
Systématiquement car les conventions des autres stagiaires de 2nde que j’ai accueilli étaient également rédigées au masculin mais ces conventions–là n’avaient pas l’hypocrisie d’une note prétendant que c’était pour notre bien. Pour la facilité de lecture.
J’ai récemment trouvé une note équivalente à la suite du chapitre « à propos de la traduction » du livre L’art du Game Design1 :

Pour vous la paraphraser, le traducteur avait la flemme de faire un effort pour les femmes alors il prétexte une règle qui permet de les discriminer. Mais promis, c’est pas le but. Que ça en ait quand même l’effet, il s’en tape2. Que la règle ait été rédigée dans cette intention, il s’en tape aussi3. Après tout, c’est pour la facilité de lecture !
C’est pourtant pas les solutions qui manquent… Je comprend que les formes contractées peuvent paraître difficiles et que les doubles flexions allongent le texte. Mais on peut trouver des termes épicènes ou des formules englobantes (i.e. remplacer « tuteur : » par « tutorat de stage … »). Ou pourquoi pas, soyons disruptifs, rédiger un chapitre sur deux au masculin et l’autre au féminin.
Je sais qu’il y a plein d’autres problèmes sur la planètes qui mériteraient notre attention et nos efforts, mais ce n’est pas une raison pour faire perdurer celui-ci !
Alors, lorsque ma future stagiaire m’a envoyé le PDF généré par
l’application, je l’ai ouvert avec Libre Office (Draw) puis j’ai
consciencieusement féminisé la totalité des formulations (y compris
la tutrice de stage) et c’est cette version que j’ai imprimé
sur papier, signé de ma belle écriture puis scanné et renvoyé
pour l’Université. La différence ne se remarque que si on lit le texte,
mais qui lit les contrats ?

Et si d’autres veulent faire de même, mais ne veulent pas modifier le
PDF, j’ai aussi produit ce modèle de
convention de l’Université de Rennes au format odt
qu’il suffit de compléter avant de l’imprimer. Avec cette version, dans
15 cas sur 16, une femme n’a pas besoin de faire d’effort concernant
l’accord la concernant.
Pour la petite histoire, la convention m’est revenue signée par les parties sans aucune difficulté.
Misheard Lyrics
Arsouyes.org par le 23/06/2025 à 09:30:00 - Favoriser (lu/non lu)
Misheard Lyrics
Arsouyes.org par le 23/06/2025 à 09:30:00 - Favoriser (lu/non lu)
En apprenant que nous sommes informaticiens et que nous participons à des enquêtes criminelles, on nous demande régulièrement si/comment nous utilisons les IA pour nous aider à résoudre ces affaires. De même, nous sommes parfois destinataires de communications d’entreprises qui nous annoncent pouvoir nous rendre plus efficaces et plus rapides grâce à elles.
Effectivement nous utilisons des algorithmes corrects qui nous facilitent certaines tâches. Des logiciels prêts à utiliser pour cloner un disque dur puis simuler le système ainsi copié. Mais également quelques autres faits main comme extraire une planche-contact et quelques scripts personnalisés bien pratiques pour nous.
Cette réponse à tendance à décevoir car aucun de ces algorithme n’est habituellement qualifié d’IA. Pour véritablement répondre à la question, nous allons donc illustrer la problématique sur une des tâches qui nous est confiée : la retranscription d’enregistrements audios.
Retranscription d’audio
On peut penser à des enregistrements effectués lors de l’enquête, ou par des dispositifs de [vidéo]surveillance installés dans l’espace public. Mais depuis la démocratisation des smartphones, on en rencontre aussi beaucoup effectués par M et Mme Toutlemonde1. Mais surtout tous les vocaux qui remplacent les messages textuels. Et ces enregistrements sonores posent quelques petits problèmes.
- Un(e) juge d’instruction ne peut pas ouvrir un scellé sans la présence du mis en examen2,
- L’écoute est plus lente que la lecture, Wikipedia donne une moyenne de 200 mots par minutes pour une conversation et entre 250 et 300 pour la lecture.
- Un enregistrement audio peut contenir de longues périodes inutiles pour l’enquête (e.g. bruits de fond).
- Naviguer dans un audio se fait en aveugle, on ne sait pas à l’avance où on va tomber en déplaçant le curseur.
- La qualité du son est parfois mauvaise et rend difficile la compréhension.
Des juges nous demandent donc régulièrement d’analyser des enregistrements audios3, souvent mis sous scellés, pour en effectuer des améliorations, des copies de travail (y compris à destination des parties) et, pour ce qui nous intéresse aujourd’hui, des retranscriptions.
L’enjeu de ces retranscriptions est très important car ce texte sera le prisme par lequel les personnes autour de l’enquête (juges et avocat(e)s principalement) considéreront le contenu de l’enregistrement. La plupart de l’audio n’est généralement pas compliqué ni intéressant mais certains passages peuvent parfois tout changer et nécessiter une transcription mot à mot.
Comme vous pouvez l’imaginer, cette mission est chronophage parce qu’en plus du temps de dactylographie, il faut souvent réécouter certains passages plusieurs fois pour être sûr de ce qu’on [re]transcrit.
Si c’est pas un cas d’usage typique des IA… Leur rapidité réduirait les délais des procédures et leur coût compétitif répondrait au manque de moyens de la justice !? Testons ça…
Quatre exemples
Nous avons donc essayé une IA de reconnaissance vocale sur quelques audios que nous avions du retranscrire et on vous proposes ce petit exercice :
- Le premier texte est celui fourni par l’IA, lisez-le et formez-vous une image de l’ambiance criminelle qu’il dégage.
- Ensuite cliquez dessus pour découvrir notre retranscription et vérifiez si votre idée initiale est toujours valide.
Notez que pour des raisons évidentes, les éléments permettant de reconnaître les auteurs ont été modifiés ou caviardé (i.e. un numéro de téléphone). Mais en dehors de ces détails, le reste est authentique.
Exercice 1
Gêné que mansour voilà j’ai vu égaré mon téléphone vomis je roule retrouver on vous voit du conjoint violent dur schwob demain comme sans jugement d’une somme sur moi à plus
Oui, Yannnick, Bonsoir,
Voilà, j’avais égaré mon téléphone et je
l’ai retrouvé
Bon, voilà, si tu peux me joindre maintenant, ou bien
demain
Enfin, j’ai mon téléphone sur moi
Allez à plus
Exercice 2
voyez-vous john le transport des pédés j’ai un colis à vous remettre je voulais savoir si quelqu’un a palaiseau rouge sur la vaisselle pas de réponse je peux remettre le couvert vos bras hum ça
Ouais, bonjour,
c’est le transport DPD, j’ai un colis à vous
remettre,
Je voulais savoir s’il y avait quelqu’un à [??] ou si
jamais j’ai pas de réponse, je peux remettre le colis à [??]
Exercice 3
ouais il a dit que l’on roule extérieure appelé segura je n’arrivais pas à voir sabrina mais après j’ai eu sabrina villageois je vais devoir voir tomber comme un jeu romantique du matin du poulailler l’ange brûle les papiers ok allez bonne soirée
Ouais, Yannick, ben oui, j’’avais appelé, mais c’était pour, parce que j’arrivais pas à avoir sabrina, et après j’ai eu sabrina, et là je viens de voir que tu m’as appelé, maintenant que je remontait du poulailler, là je pose les papiers, ok, allez bonne soirée.
Exercice 4
oui bonjour colis privé de wally pour vous vous pourriez me rappeler aux érotique soixante-quatorze [xx yy zz] plus merci
Oui bonjour, Colis privé, j’ai un colis pour vous. Vous pourriez me rappeler au zéro six soixante quatorze [xx yy zz] un merci.
Et après ?
Sachant que ces retranscriptions sont fournies à un(e) Juge d’Instruction, imaginez les conséquences si nous lui avions envoyé les résultat de l’IA. Les poursuites de l’enquête, les chefs d’inculpation et éventuellement l’issue du procès.
Notez que nous vous avons montré des exemples de faux positifs mais il existe aussi des faux négatifs. Plutôt que fabuler un contenu limite criminel là où il n’y a rien, l’IA peut tout autant fabuler un contenu inoffensif et ainsi masquer une preuve. On en rencontre beaucoup avec la classification des photos (une autre de nos missions).
Alors bien sûr, les parties pourrons toujours contester les résultats d’une expertise et demander une contre-expertise mais ça pose quelques problèmes. D’abord les faux positifs sont plus facile à contredire que les faux négatifs. Si l’expert fourni une mauvaise retranscription, les parties peuvent corriger. Mais si l’expert n’a rien trouvé, les parties ne savent pas si c’est parce qu’il a bâclé son travail ou parce qu’il n’y avait rien4.
Mais ça pose surtout un problème de déontologie. Fournir un résultat aléatoire alors qu’on est rémunéré en tant que professionnel pour une mission d’expertise judiciaire. Déléguer la vérification aux parties alors qu’on a prêté serment d’accomplir la mission avec honneur et conscience.
Quid si la contre-expertise utilise la même IA ? Où si elle fourni une autre retranscription, comment trancher ? C’est arrivé : après qu’un expert un peu trop enthousiaste (et très onéreux) ait fourni une retranscription contredite par le mis en examen et une autre d’un gendarme. La juge a demandé notre avis pour trancher5.
Puisqu’on ne peut pas lui faire confiance, il faudrait donc, si on utilise l’IA, vérifier chacune de ses retranscriptions… Déjà ça n’économisera pas beaucoup de temps à cause de toutes ces pauses où il faudra remettre en page et corriger les erreurs. Et surtout, c’est ignorer les effets de paréidolie qui font que nos cerveaux privilégient le texte qu’on lit au détriment des mots prononcés (e.g. Assassin de la police). Pour bien faire, il faudrait donc retranscrire notre version sans aide extérieure puis faire un diff avec celle de l’IA pour vérifier que ce qu’elle a trouvé est bon. Cherchez l’économie.
Ici, nous avions utilisé VOSK en version locale6 après l’avoir entraîné sur leur plus gros ensemble d’apprentissage du français mais le problème n’est pas du à VOSK : toutes les IA actuelles ont ces limitations :
- Incapacité à reconnaître et indiquer qu’une portion est ambigüe ;
- Tendance à fabuler et générer des retranscriptions erronées ;
- Difficultés face au bruits, aux néologismes, aux dictions et aux accents ;
- Opacité de fonctionnement, nous ne pouvons être sûr d’aucun résultat ;
- Et pour certaines, obligation d’envoyer les audios chez l’éditeur.
Je ne dis pas qu’il n’y a pas des cas d’usages à cette technologie. Si vous utilisez ce système pour retranscrire, en direct ce que vous êtes en train de dire au calme, ça peut passer ; vous savez ce que vous voulez dire et pouvez détecter et corriger directement les erreurs à l’écran.
Mais pour des expertises judiciaires, non. Car pour rendre le système plus fiable, il faudrait lui faire apprendre la voix des auteurs. Donc les identifier, les trouver et qu’ils acceptent de passer des centaines d’heures à lire des textes. Et reconstituer les conditions acoustiques des enregistrements. Puis espérer que tous les mots de l’enregistrement sont dans le corpus d’apprentissage et que les mis en examens n’ont pas triché sur leur prononciation pendant l’apprentissage7. Sans compter le budget logistique correspondant.
Et même si cette phase était possible, comme l’IA ne serait que plus performante (et pas correcte), des erreurs persisteront qui nécessiterons que nous vérifions ces résultats. Donc que nous retranscrivions tout à la main avant de passer l’IA dessus.
Nous préférons donc nous passer des services de ces IA actuelles. À la place, une fois qu’un passage important pour l’enquête est [re]transcrit par l’un, l’autre vérifie qu’il ne peut pas entendre autre chose (et dans ce cas nous notons que le passage est ambigu). Ça économise des frais et raccourcis les délais.
Le coût du vrai
Arsouyes.org par le 14/06/2025 à 11:30:00 - Favoriser (lu/non lu)
Le coût du vrai
Arsouyes.org par le 14/06/2025 à 11:30:00 - Favoriser (lu/non lu)
Lorsqu’on veut produire quelque chose, que ça soit une ressource, un objet ou un service, il faut dépenser de l’énergie pour y arriver. Une partie pour lutter contre l’entropie, une autre pour transformer les composants, une autre pour les déplacements et ainsi de suite et le total peut parfois être conséquent.
Et tout comme le travail d’une force peut dépendre du trajet, l’énergie nécessaire pour produire quelque chose dépend de la manière dont on s’y prend. Fainéantise oblige, on aime bien que ce trajet minimise la dépense.
Alors, avant de commencer, on peut se demander combien ça va coûter et envisager plusieurs options. Ou plusieurs prestataires et comparer leurs prix pour, souvent, aller au moins disant. Et ça n’est pas toujours une bonne idée…
Produire du vrai
En tant qu’experts judiciaires, les juges nous demandent un éclairage sur des questions informatiques des litiges et enquêtes qui leur sont confiées. Notre travail servira de base pour la suite et ils ont besoin de fondations solides pour bâtir leurs décisions judiciaires et administratives. Bien évidement, ils s’attendent donc à un travail de qualité, ou comme on dit dans le jargon permettant la manifestation de la vérité. Un travail sans erreurs.
Pour arriver à ce résultat nous devons y consacrer beaucoup d’énergie dans plusieurs tâches essentielles dont voici des exemples :
- Entendre les parties, que ce soit lors des réunions sur place, en visio ou par courriers (i.e. les dires et observations),
- Lire, analyser et synthétiser les pièces, parfois nombreuses, verbeuse et très techniques,
- Faire une bibliographie sur des sujets très spécifiques pour mieux comprendre la nature, les causes et les conséquences d’un point du litige,
- Faire des hypothèses et concevoir les expériences scientifiques pour les valider, mener ces expériences et interpréter les résultats obtenus,
- Contrôler en permanence la validité de l’ensemble, sur les plans logique, juridique et scientifique,
- Rédiger un rapport qui doit être pédagogique et interdire toute mésinterprétation des conclusions.
Prenons l’exemple d’entendre une partie. Il y a ce que nous entendons ou lisons puis ce que nous comprenons. Il y a ce qui a été dit et écrit et ce qui voulait être exprimé. Il faut donc prendre du temps en reformulation et autres allers et retours pour s’assurer que ce que la partie voulait communiquer a été pris en compte dans notre réflexion et notre rapport. Il y a ensuite ce que l’autre partie y objecte (et ce qu’elle dit, ce qu’on entend et ce qu’on comprend). Et il y a tous les non-dits qui hurlent en silence et qu’on peut entendre si on prend le temps d’écouter. Et ce n’est qu’entendre les parties, il faudra ensuite contrôler tout ça avec les pièces du dossier complétées de validations techniques dans le monde réel.
Mais ce n’est pas exclusif aux expertises judiciaires…
Lorsqu’une entreprise me demande de venir configurer son réseau informatique, elle s’attend à ce que le résultat soit correct. Il faut que le réseau fonctionne, qu’il n’impacte pas négativement le reste de l’infrastructure, qu’il n’y ait pas de trou de sécurité, qu’il soit maintenable par les équipes sur place. Comme pour de bonnes expertises, il faut plusieurs jours pour bien configurer un réseau.
Lorsque des journalistes nous demandent notre avis sur un fait d’actualité (je ne parle pas d’éditorialistes ou de polémistes mais de journalistes), il faut reprendre le contexte, les enjeux, prendre du recul sur l’événements et ses acteurs, expliquer certains concepts informatiques (en faisant preuve de pédagogie en s’adaptant à leur niveau de compréhension). Pour quelques minutes d’antenne ou quelques phrases citées, il faut compter une à trois heures d’entretiens de notre côté. Pour les journalistes, il faut multiplier ces entretiens et ajouter le temps de synthèse et de rédaction.
Lorsque nous avons écrit notre livre sur les shellcodes, il y a d’abord les années d’apprentissage et d’expérience avant même que le projet de livre ne démarre. Puis il faut énumérer les idées qu’on veut y mettre, les trier, les organiser, écrire les cas d’écoles, les shellcodes, réécrire pour être pédagogique (plusieurs fois), et en parallèle, tester et valider l’ensemble (l’informatique, les explications, l’orthographe, la typographie, …). Un an de délais et 0.5 ETP.
Le problème dans ces situations, c’est quand on ne voit que le résultat final et qu’on ignore tous les efforts pour y parvenir. En oubliant toute cette préparation, on peut alors penser que c’était facile, que ça n’a pas coûté grand chose (et que le prix est donc trop élevé).
Pour montrer aux enfants tout le travail nécessaire derrière les contenus vrais qu’ils peuvent rencontrer, nous leur montrons une vidéo de Jonny Giger, un pro du skate qui relate ses tentatives pour reproduire un trick de skateboard de trois secondes… Divulgâchage : sans compter les années d’entraînement avant de tenter le trick… 5 jours, 1502 essais.
Pour les enseignants qui nous lisent. La séquence commence par montrer le trick final et à demander aux enfants « Combien d’essais Jonny a-t-il fait avant d’y arriver ? Inscrivez votre réponse sur votre ardoise. Par exemple, si vous pensez qu’il a fallu 25 essais, écrivez 25 ».
On montre ensuite les essais du premier jour et on s’arrête avant de commencer le deuxième car les enfants se sont rendus compte qu’ils avaient largement sous-estimé le nombre. On leur propose alors de changer leur réponse et, pour ceux qui veulent, de deviner le nombre de jours. On regarde ensuite la suite (en avançant régulièrement) jusqu’à la fin et ils peuvent voir la réponse. Certains tombent proche, d’autres moins.
On amorce alors une petite phase d’échange en leur demandant leurs avis et en posant quelques questions du style : Est-ce que ça a pris beaucoup de temps ? Il peut montrer combien de vidéos comme ça chaque semaines ? (une), donc par mois (autour de 4) et par an (52 semaines dans l’année, 36 semaines d’école en primaire). Si ça s’y prête, on peut aborder le financement ; puisque ces vidéos prennent tout son temps, comment il travaille ? (c’est son travail, il est sponsorisé).
Produire du faux
À contrario, si on se fout que des erreurs soient présentes, on peut prendre plein de raccourcis qui réduisent les coûts.
Par exemple, les éditorialistes, polémistes, politiciens, publicitaires, et autres influenceurs ne cherchent qu’à produire des mythes. Des rêves partagés par une partie de la population qui, ayant atteint une taille critique, suffit à les faire vivre (les mythes et leurs clergés). Et pour ça, il suffit d’énoncer le message et le diffuser.
Le phishing, les scams, le spam et autres arnaques fonctionnent exactement sur le même mode. Produire un mythe pour ensuite exploiter ses adhérents (la différence étant que les fraudeurs ont l’honnêteté de ne pas prétendre le faire pour notre bien).
Alors bien sûr, pour qu’un mythe vive, il faut que ses messages soit un minimum travaillé pour obtenir de l’engagement du public. Mais ensuite, le but n’est que d’occuper la scène ou éviter que des détracteurs n’aient la parole, il suffit alors de faire plus de bruit. Et produire du bruit, ça ne coûte que la diffusion.
Pour montrer cette asymétrie de situation aux enfants, nous leur montrons deux vidéos de Elouen Rolland où il montre rapidement comment il a utilisé des effets spéciaux pour simuler un trick de skateboard.
Pour les enseignants qui nous lisent. La séquence suit la précédente. Lorsque les questions des élèves ont été traitées, nous leur proposons de jouer une deuxième partie. Nous leur montrons le résultat final de trois secondes. Nous leur demandons alors s’ils trouvent que c’est plus ou moins impressionnant puis leur demandons d’inscrire le nombre d’essais et de jours sur leur ardoise.
Nous leur montrons alors la vidéo explicative. Souvent deux fois car elle est très courte et certains enfants n’ont pas eu le temps de se rendre compte. Nous leur demandons alors combien d’essais. Certains disent un seul, d’autres trois, d’autres aucun. Tous ont raison à leur manière. Pour le nombre de jour, Elouen ne le dit pas mais nous l’estimons à une demi journée s’il bosse vite et une journée sinon.
On amorce alors une phase d’échange sur leurs avis. Beaucoup nous disent qu’on a triché, que c’était pas juste (et ils ont raison). Nous leur demandons combien de vidéos Elouen peut faire en une semaine ? (5, 10, 7, 14 suivant comment on voit la chose et tous ont raison à leur manière), si les deux vidéastes produisent des vidéos pendant une semaine, sur lequel j’ai le plus de chance de tomber si je tire au hasard (celles d’Elouan, il en produit 5 à 10 fois plus), laquelle aura le plus de like (celle d’Elouan car elle est plus impressionnante) et ils concluent généralement spontanément que ça amplifie le phénomène (on en voit plus + on en like plus = on en voit encore plus). On peut alors leur demander si les vidéos impressionnantes qu’ils voient on plus de chance d’être vraies ou fausses (fausses).
La conséquence est que si le faux est produit 10 fois plus souvent, 10% des contenus que je consulte au hasard sont authentiques. Si je lis 5 articles par jour, je trouve quelque chose d’intéressant en moyenne un jour sur deux. C’est à peu près la fréquence que j’ai ressenti il y a quelques décennies.
L’arrivée des LLM a fait exploser le déséquilibre. Il me faut en moyenne deux jours pour écrire un article pour les arsouyes. Mettons qu’un influenceur prenne 1/4 d’heure avec un LLM (on considère que l’utilisateur respecte les bonnes pratiques et pris le temps de relire et corriger deux trois bricoles avant de publier), il peut produire 56 articles pendant que j’en rédige un seul. L’authentique tombe à 2% du total et il me faudra une à deux semaines pour lire un truc authentique.
Pire, les bloggeurs authentiques n’ont pas tant de choses à dire que ça et ne passent pas leur temps à écrire des articles (ils ont une vie, un job et une famille AFK). On oscille alors autour d’un article publié par mois suivant les auteurs. Mais les influenceurs sont payés pour publier, tous les jours du mois. Ils peuvent alors monter à 560 articles… l’authentique se compte alors en pour mille (et je pourrai être content si je trouve un ou deux articles authentiques par an).
Et ces chiffres, c’est en tirant les articles au hasard. Les diverses plateformes qui se chargent du filtrage pour vous à base de likes et autres algorithmes (y compris une curation par des humains) vont empirer la situation car les influenceurs (et leurs LLMs) sont plus performants en viralité que les simples mortels que nous sommes. Corolaire, plus on voit un influenceur, plus on doit interroger son authenticité.
Infirmer le faux
Face à un produit, on doit alors se demander s’il est vrai. C’est le cas en expertises judiciaires face à une observation d’une partie (tous ne sont pas honnêtes). C’est le cas en génie logiciel lorsqu’on vérifie le fonctionnement d’un programme (ils peut rester des bogues).
Parfois la supercherie saute aux yeux. Même en expertise… La capture d’écran de l’application web montre l’adresse et les données d’un autre client. Les factures pour chiffrer le préjudice du à l’absence de wifi ne listent que du chlore pour la piscine.
Mais la plupart du temps, il faut chercher. Comparer le contenu du CD-ROM reçu par le client et sa copie chez le fournisseur pour déterminer que, si, les fichiers ont en fait bien été envoyés et reçus. Insister (plusieurs fois et finir par menacer de saisir le juge) pour recevoir enfin la tablette et constater après une recette complète que, si, l’application a bien été livrée au client (et elle fonctionne).
Et ça, ce sont les cas faciles. Il faut parfois reconstruire l’infrastructure qui a été démontée. Gérer les problèmes de compatibilité avec des matériels anciens ou mal entretenus, ou carrément manquant (il se passe plein de choses en 6 ans). Sans compter la résistance des parties, par maladresse, incompétence ou malhonnèteté.
Quand la théorie n’est pas tout bonnement infalsifiable. Parfois, il est tout simplement impossible de prouver qu’un produit est vrai ou faux. Sans enregistrement, impossible de trancher sur la teneur d’une conversation téléphonique. Qu’importe les moyens consacrés, on n’aura jamais la réponse et mis à part si on fait des découvertes intéressantes fortuites en chemin, on aura perdu des ressources pour rien.
Mais c’est la même chose en V&V (Vérification et Validation) des programmes. Le but d’une recette est de déterminer si le produit peut être mis en production. La preuve de fonctionnement est très laborieuse (quand elle n’est pas indécidable) et la détection des bogues est aléatoire. Certains sautes aux yeux, d’autres nécessitent des infrastructures dédiées (tests en charge), des cas spécifiques (interaction avec l’environnement, dont le calendrier) voir de la chance (situations de compétition).
Pour les enseignants qui nous lisent : Après les deux séquences précédentes, lors de la discussions, nous demandons aux enfants quelle vidéo est la plus longue entre le trick et son making of ? (le making of, l’explication est toujours plus longue que l’événement). Puis nous leur faisons remarquer que c’est parce que Elouen a montré son trucage qu’on sait que sa vidéo est fausse et leur demander s’ils auraient facilement pu le détecter eux-même.
Beaucoup admettent que non et il y a toujours un petit malin pour dire « moi je le savais ! ». Pas la peine de lui faire remarquer qu’il ne l’avait pas dit ou qu’il avait pourtant mis un grand nombre sur son ardoise car on peut alors lui demander comment il pourrait prouver au monde entier que la vidéo est fausse. « facile, il suffit de… ». On peut rappeler que prouver ça veut dire qu’il faut que tout le monde en soit sûr à 100%, donc il faudra regarder chaque image une par une pour détecter un effet visuel (mais que c’est pas garanti), qu’on pourrait demander l’avis de skateurs professionnels, et peut être qu’ils reproduisent le trick (il faudra peut être les payer pour ça) et leur demander si ça va être facile et long ? Ils sont alors tous d’accord que ça prend beaucoup plus de temps que pour faire la vidéo.
On peut reprendre alors le même questionnement qu’à la fin de la deuxième séquence et conclure qu’on voit plus facilement des vidéos fausses que des preuves qu’elles sont fausses.
D’où la stratégie d’argumentation qui consiste à énoncer de gros mensonges et laisser les adversaires se fatiguer à prouver qu’ils sont faut. Saturez l’espace de ces mensonges à bas coût et vos adversaires n’ont plus assez de temps et de ressources pour tous les traiter. Et qu’importe qu’ils en réfutent quelques uns. Le public, saturé lui aussi, n’aura plus assez d’énergie pour un raisonnement analytique et passera au raisonnement intuitif, bourré de biais cognitif qui ont été répertoriés, analysés et que ces fraudeurs ont appris à exploiter.
Prendre le pouvoir ne nécessite pas de prouver à tout le monde qu’on a raison mais de convaincre une portions suffisante que a) vous êtes la bonne personne ou b) il est inutile d’intervenir. Il suffit de rendre les alternatives inaudibles.
Confirmer le vrai
Comment s’en sortir ? Si vérifier est trop coûteux, que la production de faux est telle qu’on ne peut pas suivre la cadence mais qu’abandonner nous mène à la manipulation, difficile de voir une issue… Elle est pourtant là mais nécessite une coopération avec le producteur.
Lorsqu’on produit quelque chose de vrai, c’est rarement pas hasard. On a suivi un cheminement, jalonné d’étapes que nous avons validées individuellement et qui s’enchaînent de manière logique. On sait que ce qu’on a produit est vrai parce qu’on l’a construit comme tel en le vérifiant pas à pas. Dans ce processus, en plus du produit fini, on a aussi construit une sorte de preuve.
Ce qui coûte lorsqu’on vérifie quelque chose, c’est la recherche de cette preuve. Mais puisqu’elle existe, pourquoi ne pas la fournir avec le produit ? Vérifier le produit consistera à rejouer la preuve, ce qui est largement moins coûteux.
Par exemple, face à un alpiniste qui prétend qu’un sommet est atteignable. On pourrait tenter de le gravir pour confirmer ses dires (mais ça ne prouvera pas qu’il l’avait gravit avant nous), ça peut prendre un temps fou, nécessiter de gros efforts, voir être finalement impossible. Mais si cet alpiniste balise une piste derrière son passage, nous pouvons l’emprunter et une fois au sommet, valider que l’ascension est possible ce qui est bien moins coûteux.
On retrouve cette idée en informatique théorique avec les problèmes NP-complets et les codes porteurs de preuve. Dans les deux cas il est facile de vérifier la solution mais difficile de la trouver. L’ordinateur Quantique (et certains usages de LLM1) entrent dans cette idée d’un oracle qui produit une solution mais, détail très important, le résultat doit être facile à vérifier. Dans ce cas, si la solution n’était pas la bonne, on n’a pas perdu beaucoup de temps.
On la retrouve aussi dans le génie logiciel via le développement dirigé par les tests (TDD). Une fonctionnalité est exprimée par des tests (automatiques si possible) que le programme doit respecter. Vérifier le programme consiste alors à lancer les tests qui l’accompagnent. C’est bien plus rapide que de lancer une recette à l’improviste et laisser les utilisateurs jouer avec le programme en espérant qu’il ne trouvent rien.
Et finalement en droit où la charge de la preuve est à celui qui prétend. Le juge n’a pas à perdre son temps à chercher à infirmer des mensonges. En cas de doutes sur des points techniques, il ordonne alors une expertise et notre rapport lui apportera notre conclusion (le corps du rapport est la « preuve » compréhensible qui nous a menés à ces conclusions). De même en science, un article qui ne comprend pas une preuve rejouable de ses conclusions n’est pas valable.
Et après ?
Déterminer la validité de quelque chose nécessite des ressources et des compétences particulières. On peut parfois le faire soi-même et, sinon, demander l’avis à des professionnelles ; des journaliste ou des experts. Mais puisqu’on délègue, on revient à la case départ : comment savoir si la vérification est valide ? En leur appliquant les deux filtres suivants :
- Si aucune preuve n’est fournie, le produit est faux et l’auteur n’est pas professionnel,
- Si la vérification échoue, le produit est faux et l’auteur est incompétent2.
Le premier filtre va drastiquement réduire la cacophonie ressentie dans le cyberespace. Publicités, influenceurs, arnaques, buzz, pseudo-actualités, fake news, … D’un coup, la quasi totalité des contenus polluants (et leurs auteurs) sont éliminés. Et si l’information était vraie ? Rassurez-vous, si c’était le cas, une autre source (fiable cette fois) vous en parlera bientôt.
Le deuxième filtre est plus subtil. On n’a pas forcément le temps de vérifier tout ce qui reste alors on va échantillonner sur ce qui nous importe ; par exemple les informations à enjeux ou les nouvelles sources. Petit à petit, comme en inférence bayesienne, on construit un score de confiance des sources qui répond à la question « à quelle point est-ce fiable ? ».
Informagie Divine et Profane
Arsouyes.org par le 01/06/2025 à 08:00:00 - Favoriser (lu/non lu)
Informagie Divine et Profane
Arsouyes.org par le 01/06/2025 à 08:00:00 - Favoriser (lu/non lu)
En science fiction, la troisième loi de Clarke énonce que « Toute technologie suffisamment avancée est indiscernable de la magie ». Elle a été écrite initialement pour s’appliquer aux récits de science fiction mais s’adapte très bien au monde réel. Car après tout, notre esprit vit dans l’imaginaire et les mythes que nous construisons autour de notre expérience du réel.
Ainsi, je rencontre souvent des gens qui m’avouent considérer l’informatique comme magique. Ils ont raté le coche lorsque c’est rentré dans leur vie, ou n’ont pas voulu se plonger dans cette science ésotérique qui ne les intéressait pas à l’époque et, aujourd’hui, ne sachant pas comment et pourquoi ça marche (ou, en expertise, pourquoi ça ne marche pas comme ils voudraient), ils sont rendu à considérer que des puissances occultes sont à l’œuvre. Pour une partie de la population, c’est de l’informagique.
De son côté, le jeu de rôle Donjons & Dragons, qui se déroule dans un univers médiéval fantastique1, décline la magie sous deux formes : Divine et Profane. La première est utilisable par les prêtres, druides, paladins et rôdeurs. La seconde par les magiciens, ensorceleurs et bardes.
Mais ce n’est pas parce qu’il n’y a pas d’informatique dans D&D qu’on ne peut pas se demander dans quelle classe entreraient les informaticiens…
La Magie Divine
Je vais commencer par citer le manuel des joueurs de D&D 3.5 qui définit la magie divine comme suit (page 179). C’est moi qui ait ajouté le gras.
Prêtres et druides font appel à la magie divine, de même que les paladins et les rôdeurs ayant atteint un certain niveau. Comme son nom l’indique, ce type de magie tire son énergie d’une source divine. Les prêtres obtiennent leurs sorts de leur dieu ou de l’un de ses serviteurs, les druides et les rôdeurs des forces de la nature, et les paladins de celles du Bien et de la Loi.
La première caractéristique de ce type de magie est donc que le pouvoir réel est aux main d’entités supérieures. L’adepte est incapable de modifier seul le réel et doit ainsi prier ces puissances occultes pour qu’elles intercèdent en sa faveurs.
La caractéristique principale dont dépend cette capacité est la sagesse qui regroupe les capacités de volonté, d’observation, de bon sens et d’intuition. L’adepte n’obtient pas les faveurs des puissances par la négociation ou la persuasion (compétences qui dépendent du charisme) mais par l’observation strictes des règles et rites de son église. Qu’il s’en écarte et il perdrait ses capacités.
Ses adeptes sont proches des populations qu’ils considèrent devoir guider et assister. Mais pas forcément par bonté d’âme. D’abord parce qu’il y a des dieux neutres et d’autres franchement mauvais ou chaotiques. Mais ensuite (et surtout), parce que la finalité est d’augmenter l’aura de leur dieu en augmentant le nombre de ses adeptes ; plus une divinité est adulée, plus elle a de pouvoir temporel.
Magie Profane
Je vais, ici aussi, citer les règles (page 177) et ajouter un peu de gras.
Magiciens, ensorceleurs et bardes font appel à la magie profane, qui leur permet de manipuler directement l’énergie magique. Elle exige de leur part un grand talent inné (pour les ensorceleurs), de longues heures d’étude (pour les magiciens), voire les deux (pour les bardes).
Contrairement à la magie divine, cette fois les adeptes sont aux manettes directement. C’est leur actions et leur volonté qui leur permet de modifier le réel. Leur puissance est personnelle et ne dépend pas d’entités extérieures.
La caractéristique principale du magicien est l’intelligence qui lui permet d’étudier, retenir et d’apprendre de nouveaux sorts. Les bardes et ensorceleurs y vont plutôt au talent et c’est donc leur charisme qui fait la différence.
Autre différence, contrairement à la magie Divine où les adeptes avaient accès à la totalité des sorts de leur niveau (puisque c’est l’entité supérieure qui les lance), la magie profane nécessite d’avoir appris les sorts individuellement avant de pouvoir les lancer. Le talent des ensorceleurs et bardes leurs évite de devoir les étudier mais ils doivent tout de même les apprendre (même si c’est intuitif pour eux).
Pour se souvenir de leurs sorts, les magiciens les notent dans leurs grimoires ou sur des parchemins. Ces notes ne sont lisibles que par leur auteur. Un autre magicien qui voudrait les apprendre devra d’abord réussir un test de décryptage. Contrôle d’accès classique pour éviter qu’un novice n’accède à des pouvoir trop grands pour ses capacités.
L’Informagique
Si l’informatique est magique, à quelle catégorie appartient-elle ?
Techniquement, même s’il y a des tendances, ce n’est pas l’effet du sort qui détermine sa catégorie. Par exemple, Arme magique (page 201) est à la fois un sort profane utilisable par les magiciens et ensorceleurs, mais aussi un sort divin utilisable par les prêtres et les paladins.
Ce qui les différencie, fondamentalement, c’est l’entité à la source du pouvoir. Une entité supérieure ou le pratiquant lui-même ?
Ainsi, les solutions sur étagères qui vous proposent de résoudre vos problèmes sont autant de « petits dieux qui naissent dans le désert et attendent un prophète pour démarrer leur culte » :
- Il n’est pas exagéré de parler de Guerres Saintes entre vi et emacs, entre Apple, GNU/Linux et Microsoft, entre X, Meta et le fédiverse,…
- Scrum n’est pas une boîte à outils pour produire des logiciels mais une religion rituelle qui promet la réussite à ceux qui suivent sa liturgie.
- Ansible, Docker et Kubernetes forment La Saint Trinité des DevOps. Un mouvement œcuménique qui prône l’automatisation et la surveillance pour le salut des infrastructures.
- ChatGPT, DALL-E et cie forment un panthéon de divinités qui répondent directement aux prières de leurs adeptes, moyennant une obole au Temple pour financer leur clergé.
De leur côté, les magiciens de l’informatique profane décryptent les Fantastiques Manuels, cherchent à en comprendre les arcanes et utilisent leur art pour modifier directement le système. Les ensorceleurs y vont au talent et les bardes en font des caisses pour impressionner la galerie.
Et après ?
Puisque l’informatique peut être Divine ou Profane, on peut maintenant se demander à quelle type de magie font appel les informaticiens qu’on connaît… Que ce soit parce qu’on a besoin d’une approche particulière, ou pour mieux comprendre des collègues et leur façons d’aborder leurs problèmes.
En plein sur leurs ouvrages, il est difficile de reconnaître les uns des autres car l’informatique se passe essentiellement dans l’esprit du pratiquant. Difficile de reconnaître un magicien d’un prêtre lorsque tous deux fixent leur écrans, manipulent le clavier et gribouillent des signes cabalistiques sur un bout de papier.
Mais il y a quelques occasions où on reconnaît immédiatement les habitudes des uns et des autres. Par exemple, face à une nouvelle technologie. Pour les prêtres, le nombre d’adeptes conditionne la puissance de la divinité et, indirectement, leur puissance à eux. Ils vont donc faire preuve de prosélytisme, prêcher la bonne parole et tenter de vous convertir. Les magiciens y voient plutôt un nouvel univers à explorer et à comprendre.
De même, lorsqu’ils rencontrent un problème. Les prêtres partent du principe que le rite n’a pas été effectué dans les formes. Ils vont alors chercher des exemples et des témoignages pour les comparer au cas présent qu’ils modifieront jusqu’à ce que ça fonctionne. Les magiciens ont plutôt tendance à lire les manuels et le code source pour comprendre le système et ainsi déterminer où et comment le modifier.
De manière générale, les prêtres donnent la priorité à la forme là où les magiciens penchent plutôt vers le fond. Face à un code source, les prêtres verront les erreurs de syntaxe et les magiciens verront les erreurs de sémantique. Face à un texte, les prêtres verront les fautes d’orthographe et les magiciens celles de raisonnement. Dans leurs communication, les prêtres utiliseront des registres de langue2, des mots à la mode3 et autres structures de phrases stéréotypées4.
Et si vous n’avez pas le temps d’observer ces signes subtils, il reste toujours la bonne vieille couleur du chapeaux… Les évêques portent traditionnellement du blanc alors que les sorcières sont notoirement habillées de nuit. Et ça fait des étincelles lorsque vous les approchez trop près l’un de l’autre.
Pourquoi last month n'est pas last month ?
Arsouyes.org par le 26/05/2025 à 15:00:00 - Favoriser (lu/non lu)
Pourquoi last month n’est pas last month ?
Arsouyes.org par le 26/05/2025 à 15:00:00 - Favoriser (lu/non lu)
Il y a quelques temps, je suis tombé sur un article de bibelo.info
où l’auteur découvrait que la commande Unix date, lorsqu’on
lui demande la numéro du mois précédent, ne retournait pas toujours la
bonne valeur. Exemple avec Halloween :
$ date +%Y%m -d '2022-10-31 last month'
202210
Après avoir écrit qu’il lui restait à découvrir le pourquoi, il reprend une solution trouvée sur StackOverflow qui contourne le problème en soustrayant le nombre de jours déjà écoulés :
lastmonth=$(date +%Y%m -d "$(date +%d) day ago")Personnellement, je n’aime pas lorsqu’on mélange les unités. Si on veut retirer un mois, on devrait retirer un mois, pas le nombre de jours déjà écoulés. Le code en serait ainsi plus clair, on respecterait les responsabilités des interfaces et on éviterait de réinventer des roues carrées1 2.
Alors forcément, j’ai cherché pourquoi ce comportement bizarre et comment le résoudre plus proprement…
Que dit la documentation ?
Premier réflexe, man date, pour lire le fabuleux
manuel et comprendre comment la commande est sensée fonctionner.
Cette page est un peu longue alors voici l’extrait qui nous
intéresse :
Chaîne des dates Le format de
--date=CHAÎNEest […] plus complexe que ce qui peut être facilement documenté ici, mais est complètement décrit dans la documentation info.man date, traduction par Michel Robitaille et Guilhelm Panaget
Il faut donc creuser un peu plus loin en consultant la documentation
info. En ligne de commande (info date) ou via le
web (e.g. sur www.gnu.org).
Il faut alors naviguer un peu pour trouver la documentation à propos des
durées relatives dans l’écriture des dates (cf. section
29.7).
29.7 Relative items in date strings […]
The fuzz in units can cause problems with relative items. For example,
2003-07-31 -1 monthmight evaluate to 2003-07-01, because 2003-06-31 is an invalid date. To determine the previous month more reliably, you can ask for the month before the 15th of the current month. For example:$ date -R Thu, 31 Jul 2003 13:02:39 -0700 $ date --date='-1 month' +'Last month was %B?' Last month was July? $ date --date="$(date +%Y-%m-15) -1 month" +'Last month was %B!' Last month was June!
Le comportement est donc connu et documenté ; si on veut le mois précédent une date en fin de mois, ça peut fournir une réponse erronée car la date du mois précédent n’existe pas. Si on revient à l’exemple par rapport à Halloween, le 31 septembre n’existe pas et le système choisi de nous répondre le jour suivant, soit le 1er octobre.
$ date -d '2022-10-31 last month' -R
Sam, 01 Oct 2022 00:00:00 +000
La solution proposée par la documentation consiste à créer une date au 15 du mois actuel puis à remonter d’un mois3 4 5 6 7.
Que dit le code ?
On sait peut être maintenant que le comportement est normal, documenté, et comment contourner le problème. Mais pourquoi est-ce ainsi ? Pour le savoir, il faut plonger dans le code source…
Vous pouvez trouver le code complet dans le dépôt git du projet GNU (i.e. date.c). La fonction principale est un peu longue alors voici les extraits intéressants :
int
main (int argc, char **argv)
{
/* ... */
struct timespec when;
/* ... */
while ((optc = getopt_long (argc, argv, short_options, long_options, nullptr))
!= -1)
{
char const *new_format = nullptr;
switch (optc)
{
case 'd':
if (datestr)
discarded_datestr = true;
datestr = optarg;
break;
/* ... */
}
}
/* ... */
valid_date = parse_datetime2 (&when, datestr, nullptr,
parse_datetime_flags,
tz, tzstring);
/* ... */
}Après avoir analysé les paramètres en ligne de commande, et stocké la
chaîne spécifiant la date de référence dans la chaîne
datestr, le code appelle parse_datetime2()
pour la convertir en timespec, c’est à dire un nombre de
secondes et de nanosecondes (dans notre cas, depuis l’Époque Unix).
Cette fonction est définie dans l’en-tête
parse_datetime2() de la librairie de portabilité GNU
(cf. depôt git de
gnulib). Elle ne fait que déléguer à
parse_datetime_body() dont voici les extraits
intéressants :
static bool
parse_datetime_body (struct timespec *result, char const *p,
struct timespec const *now, unsigned int flags,
timezone_t tzdefault, char const *tzstring)
{
/* ... */
/* Add relative date. */
if (pc.rel.year | pc.rel.month | pc.rel.day)
{
if (debugging (&pc))
{
if ((pc.rel.year != 0 || pc.rel.month != 0) && tm.tm_mday != 15)
dbg_fputs (_("warning: when adding relative months/years, "
"it is recommended to specify the 15th of the "
"months\n"));
/* ... */
}
int year, month, day;
if (ckd_add (&year, tm.tm_year, pc.rel.year)
|| ckd_add (&month, tm.tm_mon, pc.rel.month)
|| ckd_add (&day, tm.tm_mday, pc.rel.day))
{
if (debugging (&pc))
dbg_printf (_("error: %s:%d\n"), __FILE__, __LINE__);
goto fail;
}
tm.tm_year = year;
tm.tm_mon = month;
tm.tm_mday = day;
tm.tm_hour = tm0.tm_hour;
tm.tm_min = tm0.tm_min;
tm.tm_sec = tm0.tm_sec;
tm.tm_isdst = tm0.tm_isdst;
tm.tm_wday = -1;
Start = mktime_z (tz, &tm);
/* ... */
}Après avoir informé l’utilisateur qu’il devrait peut être utiliser le
15 du mois lorsqu’il veut jouer avec des décalages, le code additionne
les années aux années, les mois aux mois et les jours aux jours. Puis la
fonction crée une structure de donnée avec les paramètres et tente de
créer un timespec valide avec un appel à
mktime_z() de gnulib (cf. time_rc.c).
Si nous avions demandé le mois précédent Halloween (31 octobre 2022), le code construit une structure contenant une date factice du 31 septembre 2022 et en demande la conversion.
Elle appelle alors mktime() de la glibc (cf. mktime.c)
qui appelle __mktime64() qui appelle
__mktime_internal(). Encore une fois les codes sont longs
mais voici la portion qui répond à notre question initiale :
const unsigned short int __mon_yday[2][13] =
{
/* Normal years. */
{ 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365 },
/* Leap years. */
{ 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366 }
};
/* ... */
__time64_t
__mktime_internal (struct tm *tp,
struct tm *(*convert) (const __time64_t *, struct tm *),
mktime_offset_t *offset)
{
/* ... */
/* Calculate day of year from year, month, and day of month.
The result need not be in range. */
int mon_yday = ((__mon_yday[leapyear (year)]
[mon_remainder + 12 * negative_mon_remainder])
- 1);
/* ... */
}Lors du calcul du timespec, le code converti la date (ou
plutôt le jour et le mois) en numéro du jour dans l’année. Pour la date
d’exemple, le 31 septembre 2022 correspond au 31 + 243 =
274ème jour dans l’année. mon_yday vaut ainsi
273 (le 1er jour étant le n°0) qui servira pour le calcul du
timespec.
Lorsque cette valeur remonte vers le programme date, et que ce programme tente de la formater pour être lisible par un humain, un calcul inverse est fait, ce numéro de jour dans l’année va être converti en jours et mois. Et le 274ième jour est le 1er octobre.
On peut faire la même observation pour la date un mois avant le 31 mars… On construit temporairement le 31 février, soit le 62eme jour de l’année qui tombe, en temps normal, le 3 mars.
$ date -d '2022-03-31 -1 month' -R
Jeu, 03 Mar 2022 00:00:00 +000
Et après ?
Utiliser date pour connaître le mois précédent, c’est un
peu comme utiliser Pronote pour donner des devoirs. Ça marche (quoi que
pas toujours correctement), mais il y a des solutions plus simple (et
plus bénéfique pour la société et la planète en général).
Le problème, c’est que date est conçu pour gérer des
dates de manière générale. C’est à dire à la seconde près tout en
prenant en compte les fuseaux horaires et les changements d’heure d’été.
C’est bien trop puissant pour l’opération dont on a besoin et
c’est justement cette puissance (gérer les jours) qui pose problème
ici ; nous n’avions pas besoin de plus que des mois et années.
On pourrait très bien arriver au même résultat nous-même. On converti la date en nombre de mois (une année vaut 12 mois), on en enlève un, puis on reconverti en nombre d’années (quotient par 12) et mois (reste de la division par 12). Voici un petit script bash qui le fait automatiquement :
#!/bin/bash
months=$(( $(date "+%Y*12+%m-2") ))
printf "%04d%02d\n" \
$(( $value / 12 )) \
$(( $value % 12 + 1))Et si c’est la vitesse qui compte pour vous, on peut même écrire un code en C qui produit le même résultat avec plus de simplicité.
#include <stdio.h>
#include <time.h>
int main() {
time_t timestamp = time(NULL) ;
struct tm * now = localtime(& timestamp) ;
int months = now->tm_year * 12
+ now->tm_mon
- 1 ;
printf("%04d%02d\n",
months / 12 + 1900,
months % 12 + 1) ;
return 0 ;
}Pour comparer, le tableau suivant montre le temps pour 5000 exécutions de chacune des variantes. Celle de Bibleo.info (et de Stackoverflow) qui enlève le nombre de jours écoulés, celle de la documentation officielle qui crée une date au 15 du mois et les deux dernières des arsouyes.
| Méthode | Ryzen 9 4900H 3.29 GHz | Xeon X5670 2.93 GHz |
|---|---|---|
| bibelo.info | 11.842s | 24.484s |
| GNU info | 11.652s | 24.802s |
| Les arsouyes - bash | 8.306s | 18.567s |
| Les arsouyes - C | 2.438s | 7.445s |
Comme tout hacker qui se respectent, on apprécie toujours d’exploiter un outil pour l’utiliser autrement que prévu et produire des choses chouettes. Mais d’un autre côté, on recherche aussi le Seiryoku Zenyo.
Qu’en disent les IA ?
Si on écoute la rumeur, il ne serait plus nécessaire de réfléchir car les IAs sont capables de le faire pour nous. Plutôt que chercher le pourquoi du comment, il suffirait de le leur demander pour avoir une réponse rapide et efficace…
Chiche : « Pourquoi lorsque je demande à la commande UNIX date quel est le mois précédant le 31 octobre, j’obtiens octobre et pas septembre ? »
Perplexity. Nous a expliqué qu’un mois avant le 31 octobre, ça tombe le 31 septembre mais que Septembre n’ayant que 30 jours, il se rabat sur le dernier jour du mois courant, soit le 31 octobre.
Copilot. Nous a expliqué que “si [nous sommes] au 31 octobre, reculer d’un mois [nous] ramène au 30 septembre, ce qui se traduit par le mois d’octobre”. On n’en saura pas plus.
ChatGPT. Nous a dit que si ça répond octobre, c’est
parce qu’on est le 31 octobre. Sinon c’est peut être à cause de week-end
ou de jours fériés en début septembre. Nous obtiendrions un résultat
plus précis avec 1 month ago (car last month
serait flou).
Tant de ressources pour en arriver là… nous voilà bien avancés.
Cyber existence
Arsouyes.org par le 17/05/2025 à 09:00:00 - Favoriser (lu/non lu)
Cyber existence
Arsouyes.org par le 17/05/2025 à 09:00:00 - Favoriser (lu/non lu)
J’ai toujours un faible pour la mécanique quantique et ses paradoxes, comme le classique chat de Schrödinger qui, enfermé dans une boîte, devrait être considéré à la fois vivant et mort…
En fait le simple geste de soulever le couvercle déterminera l’état de l’animal, même si dans le cas présent il disposait de trois états : vivant, mort ou vachement en colère.
Terry Pratchett, Nobliaux et Sorcières, trad. Patrick Couton
On a un temps considéré que ces superpositions d’états n’étaient valable que pour l’infiniment petit et justifié qu’elles ne se produisent pas à notre échelle par divers procédés aux noms compliqués comme l’effondrement de la fonction d’onde. Autant de formulations alambiquées qui évitent surtout d’admettre qu’en fait, on n’en sait fichtrement rien.
Pour la mécanique quantique relationnelle (cf. wikipedia), il n’y a pas vraiment de paradoxe ni de séparation entre échelles de tailles : on peut effectivement considérer que le chat est vivant et mort à la fois tant qu’on a pas interagit avec lui. Car la seule chose qui existe vraiment, ce ne sont pas les particules (et les chats), mais leurs interactions.
Suivant cette interprétation de la mécanique quantique, non seulement la cuillère n’existe pas, mais moi non plus… Ou du moins, elle et moi n’existons que lorsque je m’en sert. Et encore, si je suis seul à table, nous sommes les seuls à le savoir (enfin, surtout moi).
Cyber existence
La première manifestation de ce principe en informatique est, de par son nom, les bases de données relationnelles. Car dans ce système de stockage et surtout d’organisation de l’information, la seule chose qui existe, ce sont les relations entre les données.
Dans une table d’une BDD relationnelle, ce qui importe, ce ne sont pas les colonnes et les données qui s’y trouvent. L’important, ce sont les lignes, prises comme des représentations de relations entre les données qu’elles comprennent. L’important, ce ne sont pas les chaînes de caractères tbowan ou 62ef6642e16977913051c2ea3d4b5264, mais que leur association décrit un utilisateur du système qui a un pseudonyme et un mot de passe.
Mais ce principe que rien n’existe en dehors des relations peut se généraliser à toute l’informatique…
Pour le processeur, les instructions et les données n’existent que lorsqu’il les charge dans ses registres et en fait quelque chose. De son point de vue, la mémoire peut contenir n’importe quoi (ou ne contient rien). Le meilleur exemple est peut être un shellcode qui sera traité consécutivement comme une donnée (lorsqu’il sera copié quelque part) puis comme une suite d’instructions (lorsqu’il sera exécuté) dont certaines sont ensuite utilisées comme des données.
En réseau, une adresse IPv4 n’existe pas en tant que telle (ces 4 octets pourraient signifier n’importe quoi). Elle n’existe qu’en relation avec la machine qui y répond. Presque toutes les adresses sont attribuées mais elles n’existent que lorsque je communique avec la machine correspondante. Ensuite elles ne seront plus qu’un élément d’un souvenir.
Mais une première particularité apparaît déjà avec l’informatique : on peut être en relation avec quelque chose sans que ce soit réciproque. Par exemple, on peut écouter passivement le réseau pour découvrir les paquets émis par les autres machines. Ces machines, via leurs paquets, entrent en relation avec nous (nous savons qu’elles existent, ou plutôt qu’elles ont existés jusqu’à peu) mais cette relation est à sens unique puisque nous n’émettons pas de paquets.
Il en va de même avec les contenus sur IPFS. Tous les identifiants sont possibles et les fichiers correspondants existent potentiellement mais seuls ceux avec lesquels vous entrez en relations (lorsque vous les consultez) existent de votre point de vue.
Cyber social
On défini souvent le « cyberespace », suivant la définition de Gibson, en tant qu’une « hallucination consensuelle […] constituée par l’ensemble des ordinateurs et de leurs données ». Mais je lui préfère la définition de Sterling dans the Hacker Crackdown :
Cyberspace is the “place” where a telephone conversation appears to occur. Not inside your actual phone, the plastic device on your desk. Not inside the other person’s phone, in some other city. THE PLACE BETWEEN the phones. The indefinite place OUT THERE, where the two of you, two human beings, actually meet and communicate.
Bruce Sterling, The Hacker Crackdown
Pour les non anglophones, voici une traduction personnelle de ce passage.
Le cyberespace est « l’endroit » où une conversation téléphonique semble avoir lieu. Pas à l’intérieur de votre téléphone, cet outil de plastique sur votre bureau. Pas plus que dans le téléphone de votre correspondant, dans une autre ville. C’est L’ESPACE ENTRE les téléphones. Un endroit indéfini AILLEURS, où vous deux, êtres humains, vous rencontrez et communiquez.
Avec cette définition, on retrouve cette idée que ce qui existe, dans le cyberespace, ce n’est pas l’ordinateur ou la donnée, mais les relations que nous y vivons. Sans interaction avec le réseau, nous n’y existons pas (et il n’existe pas non plus).
Prenons les blogs par exemple. Le contenu qu’on y publie n’est qu’un prétexte pour exister. Certains diraient qu’il ne s’agit que de personnal branding mais ça revient à la même chose. En publiant un contenu, on se créer une existence dans cet univers à travers l’image que les visiteurs ont eu en interagissant avec nos contenus. On pourrait aller jusqu’à dire que cette image existe dans l’inconscient des visiteurs et tiens donc plus du mythe (mais c’est un autre sujet).
Le problème, c’est que le lecteur n’est en relation qu’avec le document et pas avec l’auteur. C’est pour ça que la plupart des bloggeurs regardent leurs statistiques de visites : pour la sensation de relation avec leur public qu’elles procurent. Se pose alors de nouveaux problèmes… la fausse croyance que ces valeurs quantifient l’existence dans le cyberespace (plus j’ai de visites par jours, plus j’existe), d’où l’importance du tri entre les visites humaines et celles des robots (je n’existe pas vraiment si c’est un bête robot qui me lit).
C’est aussi pour ça que sont apparus les commentaires. Ils ont permis de boucler la relation en permettant aux lecteurs d’interagir avec le blog et, transitivement, avec l’auteur. Les robots qui postent du spams et autres liens vers des arnaques est en fait le même qu’avec les journaux : ils faussent les statistiques et la sensation d’existence. (Chez les arsouyes, on a privilégié les courriels et la liste de diffusion mais ça ne change pas fondamentalement l’idée).
Comme autre exemple, prenons le réseau de capsules Gemini. Il s’agit d’un « nouveau » couple de protocoles de communication et de présentation du contenu. Le but est d’offrir une sorte de clone du web avec moins de paillettes mais plus de licornes. L’idée est que les trolls n’y sont pas venu car ils considèrent ce micro-univers comme insignifiant (pour l’instant).
Paradoxe, les auteurs y ont des relations plus authentiques les uns avec les autres mais ils n’existent qu’entre eux, et pas du tout pour le reste des internautes qui ne connaissent pas cet univers. Leur prosélytisme traduit ce besoin d’exister au delà des frontières de Gemini (mais leur sera fatal sur le long termes puisque ça attirera les trolls).
Le Fediverse a d’ailleurs été créé pour éliminer ces frontières en créant un espace de libre échange (pas étonnant qu’il trouve tant d’écho en Europe) en permettant aux contenus de passer d’une instance à l’autre, d’un espace à un autre. Les membres peuvent alors exister partout à la fois. Mais tout comme Gemini, ce micro-univers n’existe pas en dehors de sa communauté… et explique que les migrant qui y trouvent refuge commencent souvent par inciter d’autre à les suivre.
Autre problème, ces systèmes sont éphémères. Ils permettent d’être en relation mais une fois le message produit et consommé, il ne reste qu’un souvenir et surtout un manque qu’il faut combler plus ou moins rapidement. Suivant la fréquence, on trouvera des articles mensuels, des micro-bloging journaliers, des messageries temps réel jusqu’à la présence permanente des directs vidéo. Plus on a besoin d’exister, plus on envoie de messages, plus on y fait de bruit.
Pour éviter tout ce bruit, on pourrait utiliser un signal hors
bande. Par exemple, une famille assise au coin du feu en train de
lire ou tricoter n’a pas besoin de faire de bruit, chacun voit les
autres. Des enfants qui font un câlin n’ont pas besoin de parler car le
touché suffit largement mais des enfants laissés seuls dans une autre
pièce vont compenser en faisant du bruit. Une bande sur IRC n’a pas
besoin d’écrire puisque la liste des utilisateurs connectés les informe
de qui existe actuellement. L’usage veut que les utilisateurs
mettent à jour leur statuts (i.e. via la commande
/away) et, dans l’ensemble, ça marche ; ces canaux IRC
génèrent moins de bruit inutiles.
Sauf en entreprises où les employés justifient leur salaire par leur
existence dans la structure. Être /away, c’est être
inexistant, c’est être absent et dans ce contexte, c’est être en congé
(ou pire ; un tire au flan). Alors on n’est jamais officiellement
/away. On falsifie ce signal. Et puisque le signal ne veut
plus rien dire, qu’il a perdu son sens, on doit trouver une alternative
pour signifier qu’on existe… alors on fait comme dans les autres
micro-univers (e.g. twitter, linkedin, whatsapp, …) : on fait
du bruit pour prouver qu’on existe1.
Cyber parasites
Les marchands ont médiatisé les relations commerciales entre producteurs et consommateurs, avec l’objectif de rendre les uns et les autres injoignables sans passer par leurs magasins. L’idée est alors de s’enrichir en prélevant une petite marge monétaire dans les relations commerciales. Et puisque l’existence économique est mesurée en euros, les marchands vampirisent l’existence des producteurs et consommateurs pour leur compte. Nous ne nous fournissons plus chez Untel Artisan (et vendons à Untel Client) mais le faisons dans Untel Magasin (et c’est bien dommage).
On retrouve le même principe en ligne où des marchands de l’attention se sont posés en médiateurs des relations humaines. Qu’importe la forme et le contenu de leurs communications, leur message est toujours le même :
Vous n’existez qu’à travers nous.
Et tout comme les marchands, ces plateformes vivent en vampirisant l’existence de leurs utilisateurs lorsqu’ils interagissent. Nous ne parlons plus avec Untel Correspondant mais communiquons sur Untel Réseau.
Tout comme les centrales d’achats utilisent les prix pour déterminer quels produits seront effectivement vendus (et donc quels fournisseurs seront payés), les plateformes utilisent des algorithmes pour déterminer quels contenus seront effectivement vus (et donc quels utilisateurs existeront dans leur micro-univers). La popularité dans un réseau social ou un magasin ne dépend pas du produit en lui-même mais surtout de son intérêt pour le vampire qui se demande combien d’existence il pourra en tirer.
L’innovation de ces plateforme n’a jamais été dans la fourniture d’un service particulier pour mettre des humains en relation. La pile TCP/IP et ses protocoles comme IRC (chat), SMTP/POP/IMAP (courriels), FTP/HTTP (présence en ligne) ou RSS/ATOM (abonnements) le permettaient déjà.
Leur innovation a été de fournir des indicateurs chiffrés d’existence. Avant ces réseaux, on devait relire et fouiller nos journaux pour se souvenir qu’on existait. Avec Facebook et cie on dispose de chiffres qui résument tout : nombre d’abonnés, nombres de vues. Et pour simplifier les interaction : des likes et, forcément, leur dénombrement. Depuis quelques années, on ne présente plus les personnes influentes en citant leurs réalisations (Untel qui a produit ceci), on le fait en citant leur nombre d’abonnés, de vues ou de likes (Untel au x millions d’abonnés).
Et c’est exactement ce dont le marketing moderne avait besoin. Un moyen de quantifier l’existence de sa marque et mesurer rationnelement l’impact des actions de communication (lire : en vues, likes et nombres d’abonnés). Le dircom et le CMO2 peuvent enfin chiffrer leur utilité lors des CODIR lorsqu’ils parasitent nos existences.
Pire, comme toute mesure qui devient un objectif cesse d’être une bonne mesure (Loi de Goodhart), le nombre d’abonné, de vue et de like est toxique. Il y a d’abord les fraudes avec les chiffres inventés par les plateformes pour faire croire aux utilisateurs qu’ils existent plus (et les garder), puis les faux comptes et faux abonnés qui font croire au public qu’on existe plus (et le subjuguer).
Il y a ensuite la sélection naturelle que ces indicateurs chiffrés opèrent sur les contenus qui y existent (on peut alors parler de mèmes). En favorisant les contenus faciles à produire ; plus courts, creux ou plagiés. En favorisant ceux qui génèrent de l’engagement ; qui biaisent ainsi le choix éditorial, la forme au détriment du fond et construisent des bulles.
Dans ce contexte, les IA génératives sont de formidables outils pour ceux qui ciblent ces indicateurs. Elles permettent de produire très vite des contenus très engageants, augmentant le nombre de relations et donc le sentiment d’existence. Ces IA vont surtout vider les relations de leurs substance jusqu’à ce que leurs utilisateurs prennent conscience de l’illusion… dépressions garanties.
En fait, ce n’est pas tant tel réseau qui baisse de qualité mais le principe même de ces indicateurs qui pose problème. Par exemple, les immigrant vers le Fediverse y vantent le plus souvent le nombre (supérieur) de vues, de likes et d’abonnés qu’ils y trouvent. Mais des trolls, tels des rats dans les navires, ont été embarqué dans le mouvement. Les publicitaires attendent simplement que des influenceur y atteignent leurs seuils de rentabilité avant d’y migrer leur business à leur tour.
Finalement, ces plateformes, comme tous les manipulateurs, ont tendance à dire l’inverse de la réalité ou de leurs pensées. On ne s’en rend généralement pas compte parce qu’on est empêtré dans le brouillard qu’ils génèrent autour de nous mais si on prend le temps d’inverser leur message, voici ce que ça donne :
Nous n’existons qu’à travers vous.
Que les producteurs et consommateurs s’organisent pour reprendre le contrôle de leur relations (i.e. l’AMAP) et les marchands perdront de leur pouvoir. Que les internautes s’organisent de même et ces plateformes disparaîtrons.
Et après ?
La physique relativiste a introduit l’équation sans doute la plus célèbre de toute la physique : Elle met en correspondance la masse d’un objet avec l’énergie qu’il génèrerait s’il disparaissait (ou réciproquement l’énergie nécessaire pour faire exister une masse équivalente). Mais on peut aussi l’interpréter comme une équivalence entre l’existence (la masse, à quelle point elle déforme le tissus de la réalité) et les relations (l’énergie transférée).
Autrement dit, une bonne existence permet de bonnes relations et de bonnes relations mènent à une bonne existence. Corollaire, les bonnes relations sont réciproques.
IA Anti Sociale
Arsouyes.org par le 03/05/2025 à 15:00:00 - Favoriser (lu/non lu)
IA Anti Sociale
Arsouyes.org par le 03/05/2025 à 15:00:00 - Favoriser (lu/non lu)
Habituellement, les questions autour de l’IA tournent toujours autour du même thème : « sont-elles efficaces ? » Ses partisans disent que oui en nous montrant des exemples de tâches où elles ont eu de bons résultats. Ses détracteurs nous disent que non en nous montrant des exemples où elles se sont plantées dans les grandes largeurs ou soulignent l’exploitation des ressources dont elle fait preuve (électricité, bande passante et droit d’auteur). Avec en filigrane la question du grand remplacement des humains par des machines.
Dans un article précédent sur les limites de l’intelligence, je terminais en écrivant que la question que je préfèrerais qu’on se pose est plutôt « pourquoi voulez-vous qu’elles existent ? » et c’est à cette question que j’aimerais consacrer cet article.
Divulgâchage : j’avais répondu « par misanthropie ?! »
IA Génératives
Pour l’instant, ce qu’on a de plus proche d’une « Intelligence Humaine », ce sont des chat bots. Dans la lignée du Test de Turing, ces IA génèrent du texte en réponse à des prompts pour donner l’illusion d’une conversation humaine et, je dois bien l’avouer, c’est bluffant de réalisme.
Mais puisque ces IA simulent des humains, de quels types d’humains s’agit-il ?
Des mythomanes. Techniquement ces IA ne mentent pas car elles ne savent pas ce qui est vrai. De même elles n’hallucinent pas car elles ne perçoivent rien. Ce qu’elles font, c’est fabuler ; en collant des bouts de textes pour que ça donne le change, elles présentent comme réels des faits imaginaires. Parfois elles tombent juste, mais ce n’est pas volontaire, c’est un coup de bol.

Des manipulateurs. Le but de ces IA, l’objectif qui est inscrit dans leur code, est double. D’abord nous plaire en nous disant ce que nous voulons entendre. Et une fois que nous somme sous son charme, utiliser nos informations à leurs profits :
- Directement en nous faisant de la publicité1,
- Indirectement en fournissant nos données à des tiers2.
Des voleur. Elles volent nos mots lorsqu’elles les
reprennent sans nous créditer3. Elles volent nos
contenus lorsqu’elles ne respectent pas les directives
robots.txt4. Et on pourrait discuter un moment
du gaspillage de ressources naturelles qu’elles nécessitent.
En psychiatrie, on appelle ça un trouble de la personnalité anti-sociale. Est-ce vraiment vers ce type de personnalité que vous voulez discuter, confier votre business ou votre vie intime ?
Notez que les éditeurs de ces applications sont complètement en phase avec ces comportements. Ils sont le fruit de choix délibérés en terme de programmation des algorithmes et d’objectifs fixés aux robots. Entre l’Humanité ou leur propre profits, ils ont fait un choix. Dont Acte.
Idem pour tous les utilisateurs qui se servent de ces IA pour nous servir du contenu ou des réponses. Ils sont complices en finançant les éditeurs. Ils sont des escrocs en se faisant passer pour ce qu’ils ne sont pas. Ils font preuve de mépris.
IA Générale
Mais admettons le temps de cet article que les trois défauts précédents puissent être, miraculeusement, évités. Qu’on puisse développer une IA qui ne fabule pas5 qui ne manipule pas et qui ne vole pas. Quel est l’intérêt par rapport à un être humain ?
Le profit économique. Si ces IA sont sur le marché, et sont utilisée par des entreprises et des humains, c’est pour réduire la masse salariale. De leur point de vue, les humains sont un centre de coût. En remplaçant les humains par des robots, ces utilisateurs espèrent faire encore plus de profit6. À l’opposé des démarches affichées de RSE. L’avantage des professionnels sans opposition sociale.
Notez que ces IAG n’existent pas encore, qu’on n’est d’ailleurs pas certains de pouvoir les créer un jour, et surtout, rien ne dit qu’elles seront plus économiques qu’un être humain. Mais ça n’empêche pas des entreprises de poursuivre ce but du grand remplacement.
L’esclavagisme. L’intérêt d’un robot, c’est qu’on en est le maître7. On peut en faire ce qu’on veut et il sa programmation lui intime de nous plaire et nous obéir. Qu’un robot ne le fasse pas et il est détruit. L’avantage des exclaves sans respecter le code noir.
Le totalitarisme. Les robots correspondent exactement à ce que nous voulons d’eux. Il est toujours possible de les réinitialiser à une étape antérieure ou les reconfigurer pour changer leur point de vue et correspondre au nôtre. Les avantages d’un ami sans s’encombrer d’une altérité.
L’égoïsme. L’autre intérêt d’un robot, c’est qu’il n’est pas nécessaire de faire attention à lui. On l’allume lorsqu’on en a besoin, on lui demande (et il fait) ce dont nous avons besoin, puis on l’éteint. Il est toujours disponible et ne demande rien en retour. Les avantages d’un enfant ou d’un conjoint sans devoir s’en occuper.
Globalement, considérer qu’on puisse remplacer des êtres humains par des machines, c’est déjà considérer les êtres humains comme des machines. Et aller jusqu’à considérer ce remplacement salutaire, c’est considérer que les humains sont moins que des machines. C’est une vision bien négative de nos concitoyens et notre espèce. La misanthropie, par définition.
Et après ?
Certains me répondront que leur but est de créer une nouvelle intelligence consciente et discuter avec elle pour découvrir une altérité. Je leur répondrai que la Terre héberge déjà une population de plus de 8 milliards d’altérités8. Si le but est de rencontrer des intelligences, il suffit de sortir de chez soi et parler à des inconnus.
D’autres me diront qu’ils le font pour la recherche scientifique, pour répondre à leur curiosité et faire avancer nos connaissances. Mais pourquoi faire ? Je veux dire ; il est évident qu’on doit pouvoir créer une autre forme d’intelligence, on ne sait juste pas comment s’y prendre (en dehors de la reproduction puis l’éducation9). Quel intérêt à le faire concrètement sur des machines si ce n’est dans un des buts précédents ?
Autant les algorithmes corrects ou statistiques sont des outils qui peuvent avoir des impacts positifs sur nos vies. Autant j’ai beau chercher, je ne vois aucun cas d’usage de ces IA conversationnelles qui ne soit pas anti-social par nature.
Shellquine
Arsouyes.org par le 22/04/2025 à 09:00:00 - Favoriser (lu/non lu)
Des Quines pour traduire de vieux articles
Arsouyes.org par le 22/04/2025 à 09:00:00 - Favoriser (lu/non lu)
C’est les vacances scolaires depuis une semaine (Zone C). Les enfants ont pu récupérer de la période et nous avons commencé à apprécier ce temps off et en profitons avant la reprise la semaine prochaine.
Ce n’est sûrement pas le code assembleur le plus utile que vous lirez dans votre vie, mais nous avons produit un Quine en shellcode ; un Shellquine 1. En 38 octets, ce bout de code binaire va s’afficher lui-même sur la sortie standard puis, bonus, invoquer un shell.
Et parce qu’on trouvait dommage que certains articles ne soient disponibles qu’en français, on a fini de traduire ceux pour lesquels on pense que ça en vaut la peine. Un peu de sécurité avec un compte AD Restreint2 et le classique sur les injections SQL3. Et une petite série sur la géolocalisation via les adresses IP ; le principe4, une implémentation avec PHP et SQLite5 et comment produire ses propres fichiers aux formats standards du domaine6 (et éviter ainsi de payer un abonnement inutile).
Pour les anglophones, si vous tombez sur un article non traduit qui vous intéresse, faites-nous signe.
Shellquine
Arsouyes.org par le 22/04/2025 à 09:00:00 - Favoriser (lu/non lu)
Divulgâchage : Les shellcodes peuvent faire plein de choses utiles mais peuvent-ils se reproduire ? La Théorie dit oui et on vous explique comment le faire en 38 octets.
Il y a peu, je suis tombé sur un article intéressant de David Madore sur son site perso où il explique ce que sont les Quines (des programmes auto-reproducteurs), comment en construire (en prenant l’exemple du C) et des variations sur ce thème de la cyber-reproduction.
Le sujet n’est pas récent (on en parle depuis 1940) et des exemples ont été publiés un peu partout (depuis 1960) et dans tous les langages de programmation qui se respectent. Une compétition y fait rage pour produire les Quines les plus courts possibles. Le record absolu est tenu par le Quine suivant1 :
Sauvegardez ce contenu dans un fichier (e.g.
quine.txt) et vous pouvez ensuite l’exécuter en tant que
script PHP (mais aussi Python, Bash, Perl, …) pour confirmer qu’il écrit
bien, sur la sortie standard, son propre code source. Voici les
commandes pour le vérifier chez vous (sous GNU/Linux) :
$ echo -n "" > quine.php
$ php quine.txt > result.txt
$ diff quine.php result.txt
$ echo $?
0
Mais je m’égare, le but n’est pas de produire un Quine encore plus petit que ce record universel mais de compléter la grande famille des Quines car nous n’en avons pas trouvés en shellcodes. En assembleur oui, et même des tas, mais pas de version qu’on puisse injecter dans un programme.
Quine binaire
L’intérêt des shellcodes, c’est que ce sont des codes qui sont écrits directement en binaire. En suivant ce principe, le code source d’un shellcode et son code binaire ne font qu’un. Un Quine à la mode shellcode va donc s’imprimer lui même.
L’idée n’est pas si extravagante que ça et on trouve ce genre de Quine dans beaucoup d’autres langages interprétés2. L’exemple suivant utilise PHP pour que le programme s’affiche lui-même :
<?php readfile(__FILE__) ;Ne reste donc qu’à écrire l’équivalent en binaire… Et comme ce n’est pas la chose la plus intuitive du monde3, on va commencer par l’écrire en assembleur (annoté par du C). Voici donc ce que ça pourrait donner :
write:
mov $0x01, %rax # write(
mov $0x01, %rdi # stdout,
lea write(%rip), %rsi # shellcode,
mov $len, %rdx # sizeof(shellcode)
syscall # ) ;
exit:
mov $0x3c, %rax # exit(
mov $0x00, %rdi # 0
syscall # ) ;
len = . - writePour paraphraser ce code, le premier bloc est un appel système à
write() pour écrire, sur la sortie standard, la zone
mémoire qui débute à l’adresse du shellcode (relativement à
l’adresse de la prochaine instruction) et fait le même nombre d’octet
que lui (cette taille est calculée par gas). Le deuxième bloc
est l’appel système exit() pour terminer l’exécution du
programme proprement.
La traduction de ces instructions en binaire est expliquée dans notre livre (i.e. SYSCALL en page 17, MOV en page 35 et LEA (relativement à RIP) en page 57). Voici le résultat où le code assembleur est annoté par sa traduction en hexadécimal :
write:
mov $0x01, %rax # 48 c7 c0 01 00 00 00
mov $0x01, %rdi # 48 c7 c7 01 00 00 00
lea write(%rip), %rsi # 48 8d 35 eb ff ff ff
mov $0x2e, %rdx # 48 c7 c2 2e 00 00 00
syscall # 0f 05
exit:
mov $0x3c, %rax # 48 c7 c0 3c 00 00 00
mov $0x00, %rdi # 48 c7 c7 00 00 00 00
syscall # 0f 05On peut alors convertir ce fichier en shellcode binaire via
deux commandes (i.e. sed puis ssd),
ou utiliser notre makefile
qui automatise tout ça :
$ make quine-binary.bin
sed -n "s/.*# *//p" quine-binary.s > quine-binary.hex
xxd -r -p quine-binary.hex > quine-binary.bin
rm quine-binary.hex
C’est le fichier quine-binary.bin qui constitue le Quine
à la mode des shellcodes. C’est un programme écrit en binaire
qui, une fois injecté dans un autre programme, produit son propre code.
Voici l’enchaînement de commandes pour le vérifier.
$ ./loader quine-binary.bin > out.bin
$ diff quine-binary.bin out.bin
$ echo $?
0
Ce premier Quine fonctionne mais il est un peu long. 46 octets ! C’est juste énorme pour le peu que ça fait. On doit pouvoir faire mieux.
Commençons par remarquer que 5 instructions MOV utilisent des valeurs de 4 octets (32 bits), dont les 3 octets de poids fort sont à zéro. C’est un gaspillage de 15 octets qu’on va maintenant économiser.
Pour ça, nous remplaçons les 4 premières instructions par des couples d’instructions PUSH/POP (p. 352 de notre livre) et la dernière par un XOR (p. 351 de notre livre). Voici ce que donne cette première optimisation (les couples d’instructions sont sur la même ligne pour garder cette idée qu’elles ne constituent qu’une action) :
write:
push $0x01 ; pop %rax # 6a 01 58
push $0x01 ; pop %rdi # 6a 01 5f
lea write(%rip), %rsi # 48 8d 35 f3 ff ff ff
push $0x1a ; pop %rdx # 6a 1a 5a
syscall # 0f 05
exit:
push $0x3c ; pop %rax # 6a 3c 58
xor %rdi, %rdi # 48 31 ff
syscall # 0f 05Notez la troisième instruction PUSH qui n’empile plus 0x2e (la taille du précédent shellcode) mais 0x1a (la taille de celui-ci). De même l’instruction LEA n’utilise plus la même adresse relative puisque la portion du shellcode qui se trouve au début est plus courte (13 octets au lieu de 21).
Poursuivons avec le XOR (qui a remplacé un MOV)… Il sert à fournir le code de retour du programme ; ici 0 pour dire que tout s’est bien passé. Si on supprime cette instruction, c’est la valeur déjà présente dans RDI qui sera utilisée. C’est à dire 1 (placé là par le deuxième POP). Sémantiquement, cette optimisation dit au système que le programme a eu un problème, mais personne n’y fera attention de toutes façons… C’est donc trois nouveaux octets d’économisés.
write:
push $0x01 ; pop %rax # 6a 01 58
push $0x01 ; pop %rdi # 6a 01 5f
lea write(%rip), %rsi # 48 8d 35 f3 ff ff ff
push $0x17 ; pop %rdx # 6a 17 5a
syscall # 0f 05
exit:
push $0x3c ; pop %rax # 6a 3c 58
syscall # 0f 05Pour la suite, on va utiliser des hypothèses sur l’environnement. Les optimisations précédentes restent compatibles avec des injections dans n’importe quel autre programme. Les suivantes partent du principe qu’on injecte dans notre loader (cf. page 27).
Un des grands problèmes avec les shellcodes, c’est de savoir où il est chargé dans la mémoire. Il y a plusieurs méthodes pour y arriver et ce shellcode utilise l’adressage relatif à RIP. Les autres techniques habituelles fonctionneraient mais elles utilisent un peu trop d’octets. Nous allons voir qu’on peut s’en passer lorsqu’on trouve où le processeur a rangé l’adresse du shellcode avant de l’exécuter.
Pour ça, on va regarder le code assembleur du loader produit
par gcc. La sortie suivante est issue de GDB et montre que l’adresse de
la page allouée par mmap() est stockée sur la pile
(emplacement pour la variable buffer) puis copiée sur un
autre emplacement de pile (pour la variable function) puis
copiée dans un registre (RDX) qui sert d’adresse cible à l’appel de
procédure (instruction CALL).
$ gdb loader
[...]
(gdb) disass main
[...]
0x0000000000001202 <+169>: call 0x1030 <mmap@plt>
0x0000000000001207 <+174>: mov %rax,-0x18(%rbp)
[...]
0x0000000000001219 <+192>: mov -0x18(%rbp),%rax
0x000000000000121d <+196>: mov %rax,-0x20(%rbp)
0x0000000000001221 <+200>: mov -0x20(%rbp),%rdx
0x0000000000001225 <+204>: mov $0x0,%eax
0x000000000000122a <+209>: call *%rdx
0x000000000000122c <+211>: leave
0x000000000000122d <+212>: ret
Plutôt que l’instruction LEA qui calcule l’adresse en utilisant 7 octets, nous pourrions utiliser MOV pour copier l’adresse déjà présente de RDX vers RSI en n’utilisant que 3 octets. Et comme on cherche à faire plus court, on va plutôt utiliser un couple PUSH/POP qui n’utilise que 2 octets.
write:
push $0x01 ; pop %rax # 6a 01 58
push $0x01 ; pop %rdi # 6a 01 5f
push %rdx ; pop %rsi # 52 5e
push $0x12 ; pop %rdx # 6a 12 5a
syscall # 0f 05
exit:
push $0x3c ; pop %rax # 6a 3c 58
syscall # 0f 05Si on continue avec la session GDB en se demandant quelles valeurs sont dans les registres, on remarque aussi que RAX et RDI valent zéro au moment où le shellcode va être appelé.
$ gdb loader
[...]
(gdb) b *main+209
(gdb) run quine-binary.bin
(gdb) info registers
rax 0x0 0
[...]
rdi 0x0 0
[...]
Plutôt qu’utiliser des instructions PUSH/POP pour y copier la valeur 1 (avec trois octets), on obtiendrait le même résultat avec INC puisque ajouter 1 à 0 produit 1. Le truc c’est que cette opération ne modifie que le premier bit du registre ; le résultat ne changera donc pas si on utilise les 8 ou 32 bits de poids faibles (ces variantes de l’instruction sont encodée avec un octet de moins).
write:
inc %eax # ff c0
inc %edi # ff c7
push %rdx ; pop %rsi # 52 5e
push $0x10 ; pop %rdx # 6a 10 5a
syscall # 0f 05
exit:
push $0x3c ; pop %rax # 6a 3c 58
syscall # 0f 05Dans la même idée, une fois le premier appel système effectué, on sait que RAX contient le nombre d’octets écrits. Plutôt qu’écraser la valeur par 0x3c, pourquoi ne pas la calculer en lui ajoutant la différence ? On peut se restreindre aux 8 bits de poids faibles en utilisant AL et ça prendra un octet de mois à encoder…
write:
inc %eax # ff c0
inc %edi # ff c7
push %rdx ; pop %rsi # 52 5e
push $0x0f ; pop %rdx # 6a 0f 5a
syscall # 0f 05
exit:
add $0x2d, %al # 04 2d
syscall # 0f 05Pour terminer, on peut aller encore plus loin en remarquant que
l’appel système exit() n’est utile que pour terminer
proprement le programme. On l’utilise pour faire preuve d’une
sorte de respect envers le système et ses utilisateurs mais aucune règle
n’impose de terminer le programme de la sorte…
Que se passerait-il si on ne l’utilisait pas ? Le processeur exécuterait alors les instructions qui suivent dans la mémoire. Dans le cas de notre chargeur de shellcodes, ces octets sont tous à zéro. Pris par couples, ils consistent à demander au processeur d’ajouter zéro dans AL et à passer au suivant. Jusqu’à la fin de la page mémoire allouée pour y copier le shellcode. La page suivante n’étant pas allouée, le processeur lève un défaut de page et le système met fin au programme par une erreur de segmentation.
Mais qui s’en soucie ? Le shellcode a pu s’exécuter et copier son contenu sur la sortie standard avant de planter…
write:
inc %eax # ff c0
inc %edi # ff c7
push %rdx ; pop %rsi # 52 5e
push $0x0b ; pop %rdx # 6a 0b 5a
syscall # 0f 05Ce qui donne un Quine à la mode shellcode de 11 octets ; 35 octets de moins que la version initiale de 46 octets.
ShellQuine
On me souffle dans l’oreillette que le code précédent, bien qu’il s’agisse d’un Quine, n’est pas un shellcode car pour mériter ce qualificatif, il faudrait invoquer un shell et qu’aucune invite de commande n’a été lancée jusqu’à présent…
Oui, c’est vrai. Et nous allons corriger tout ça immédiatement en ajoutant ce que David Madore appelle un intron. Un bout de code qui n’a aucun rôle dans la reproduction du Quine mais qui s’y trouve quand même parce qu’au fond, Eris a le sens de l’humour.
Il ne suffira pas d’ajouter, après le write(), le bout
qui lance un shell avec execve() car la règle est
claire : le Quine doit produire son contenu sur la sortie standard. Si
on lance un shell, la sortie standard des commandes va
s’ajouter à la suite du Quine qui n’en sera donc plus un…
Nous allons donc insérer, entre ces appels systèmes, un appel à
dup2() pour rediriger la sortie standard du shell
(et donc des commandes) vers la sortie d’erreur du Quine. On pourra
ainsi lancer autant de commandes qu’on veut, voir leurs résultats, sans
que ça vienne interférer avec la sortie du Quine.
Le code suivant vous montre les instructions de ce nouveau Quine. Ici
l’assembleur est annoté par sa traduction en hexadécimal pour voir la
quantité d’octets utilisée. Les deux nouveaux blocs (dup2
et execve) sont repris du livre (respectivement pages 148
et 78).
write:
inc %eax # ff c0
inc %edi # ff c7
mov %rdx, %rsi # 48 89 d6
push $0x4b ; pop %rdx # 6a 4b 5a
syscall # 0f 05
dup2:
mov $0x21, %rax # 48 c7 c0 21 00 00 00
mov $0x02, %rdi # 48 c7 c7 02 00 00 00
mov $0x01, %rsi # 48 c7 c6 01 00 00 00
syscall # 0f 05
execve:
mov $0x3b, %rax # 48 c7 c0 3b 00 00 00
lea arg0(%rip), %rdi # 48 8d 3d 12 00 00 00
push $x00000000 # 68 00 00 00 00
push %rdi # 57
mov %rsp, %rsi # 48 89 e6
mov $0, %rdx # 48 c7 c2 00 00 00 00
syscall # 0f 05
arg0:
.string "/bin/sh" # 2f 62 69 6e 2f 73 68 00Cette première version du Quine qui lance un shell fait 74 octets. Pour faire mieux, on va d’abord appliquer les techniques du début de l’article pour remplacer les 6 instructions MOV qui prennent tant de place :
- ADD/SUB pour calculer le numéro du prochain appel
système en fonction de la valeur de retour du précédent
(
writeretourne le nombre d’octets écrits etdup2retourne le numéro du nouveau descripteur, ici 1). - INC/DEC pour calculer la valeur du paramètre à partir de la valeur déjà présente dans le registre,
- PUSH/POP pour produire des petites valeurs dans un registre ou déplacer les valeurs entre registres.
Le code suivant vous montre le résultat une fois ces optimisations réalisées. Notez qu’il faut adapter la taille du shellcode (0x31 octets) et l’adresse relative de arg0 (à 0x0d).
write:
inc %eax # ff c0
inc %edi # ff c7
push %rdx ; pop %rsi # 52 5e
push $0x31 ; pop %rdx # 6a 31 5a
syscall # 0f 05
dup2:
sub $0x10, %al # 2c 10
push %rdi # 57
inc %edi # ff c7
pop %rsi # 5e
syscall # 0f 05
execve:
add $0x3a, %al # 04 3a
lea arg0(%rip), %rdi # 48 8d 3d 0d 00 00 00
push $x00000000 # 68 00 00 00 00
push %rdi # 57
push %rsp ; pop %rsi # 54 5e
push $0x0 ; pop %rdx # 6a 00 5a
syscall # 0f 05
arg0:
.string "/bin/sh" # 2f 62 69 6e 2f 73 68 00Cette seconde version fait 49 octets (on en a donc économisé 25, en moyenne 4 par MOV). C’est pas mal mais on peut faire mieux en appliquant quelques techniques supplémentaires que voici.
Adressage relatif à RIP. Lorsqu’on a besoin de l’adresse d’une donnée dans le shellcode, utiliser RIP comme adresse de base est très pratique (c’est direct et plutôt lisible), mais ça coûte quelques octets. Pour ce Quine, ça utilise 7 octets pour l’instruction et 8 pour la chaîne, soit 15 au total.
Le tableau suivant liste les techniques disponibles (et leur numéro de page dans notre livre) pour obtenir l’adresse de la chaîne arg0 dans le registre RDI et leur coûts respectifs. Certaines empirent la situation (e.g. empiler la donnée ou utiliser le classique JMP/CALL/POP) et d’autres l’améliorent. Dans notre cas, c’est en utilisant SYSCALL puis une instruction LEA par rapport à RCX que nous utiliserons le moins d’octets.
| Technique | Coût |
|---|---|
| Empiler la chaîne (p. 54) | 13 |
| Adresse relative à RIP (p. 58) | 15 |
| CALL par dessus la chaîne (p. 62) | 14 |
| JMP / CALL / POP (p. 64) | 16 |
| CALL .+5 / POP / ADD (p. 69) | 16 |
| SYSCALL puis relatif à RCX (p. 78) | 12 |
(In)Utilité de argv. Lors de l’appel système
execve(), le deuxième paramètre (argv) est
sensé contenir l’adresse du tableau des paramètres (eux-même des
adresses vers les chaînes de caractères correspondantes). Mais, comme
l’explique l’extrait de la page de manuel suivant, le noyau Linux
accepte qu’au lieu de passer un pointeur vers un tableau vide, nous
passions un pointeur NULL.
Sous Linux, argv et envp peuvent être NULL, ce qui a le même effet que d’indiquer ces paramètres comme un pointeur vers une liste contenant un pointeur NULL unique. Ne vous servez pas de cette caractéristique ! Elle n’est ni standard ni portable : sur la plupart des systèmes UNIX, faire cela causera une erreur.
man execve, traduction de Christophe Blaess, Alain Portal, Julien Cristau et l’équipe francophone de traduction de Debian.
Comme la documentation nous le suggère, nous allons donc nous servir de cette caractéristique et économiser la construction de argv sur la pile en mettant ce paramètre à zéro. Via un XOR (3 octets en 64 bits) mais puisque les 32 bits de poids fort de RSI sont déjà à zéro, nous le ferons en 32 bits, en n’utilisant donc que deux octets.
Mettre RDX à zéro. La méthode classique, pour mettre un registre à zéro, consiste à utiliser l’instruction XOR entre ce registre et lui-même ; ce qui prend 3 octets. Mais pour RDX, nous pouvons utiliser une autre instruction ; CLTD4 qui étend le bit de signe de RAX dans RDX. Puisque RAX contient une valeur positive, son bit de signe est à zéro et RDX vaudra donc zéro.
La version 64 bits utiliser l’opcode 0x99 précédé du préfixe REX.W. Ce qui fait deux octets au lieux des trois habituels. Mais dans notre cas, on remarque que RAX et RDX contiennent déjà des valeurs qui tiennent sur moins de 32 bits (RAX contient le numéro de l’appel système et RDX contient 1). On peut donc se passer du préfixe REX.W, faire l’opération sur les 32 bits de poids faible (c’est donc le bit de signe de EAX qui sera étendu dans EDX) et obtenir le même résultat ; mais avec un seul octet cette fois.
Le code suivant correspond à cette nouvelle étape d’optimisation. Notez que les tailles et adresses relatives doivent encore être adaptées puisque le code a rétréci.
write:
inc %eax # ff c0
inc %edi # ff c7
push %rdx ; pop %rsi # 52 5e
push $0x26 ; pop %rdx # 6a 26 5a
syscall # 0f 05
dup2:
sub $0x05, %al # 2c 05
push %rdi # 57
inc %edi # ff c7
pop %rsi # 5e
syscall # 0f 05
execve:
add $0x3a, %al # 04 3a
lea 0x0b(%rcx), %rdi # 48 8d 79 0b
xor %esi, %esi # 31 f6
cltd # 99
syscall # 0f 05
arg0:
.string "/bin/sh" # 2f 62 69 6e 2f 73 68 00Cette version utilise 38 octets. Soit 11 de moins que la version intermédiaire et 36 de moins que la version initiale.
Et après
Comme souvent, ce shellcode n’a aucune utilité d’usage propre. J’ai du mal à voir un contexte ou vous ayez besoin d’injecter un shellcode qui affiche son code sur la sortie standard. Sauf pour s’amuser, apprendre et se faire plaisir. Et c’est peut être pour ça qu’écrire ce genre de shellcode est de l’Art.
Mais il suffirait de pas grand chose pour transformer ce shellcode pour qu’il s’injecte lui-même dans d’autres processus ou d’autres machines à travers le réseau. Les copies s’exécutant de même, il se répandrait comme un virus…
Des Quines pour traduire de vieux articles
Arsouyes.org par le 22/04/2025 à 09:00:00 - Favoriser (lu/non lu)
C’est les vacances scolaires depuis une semaine (Zone C). Les enfants ont pu récupérer de la période et nous avons commencé à apprécier ce temps off et en profitons avant la reprise la semaine prochaine.
Ce n’est sûrement pas le code assembleur le plus utile que vous lirez dans votre vie, mais nous avons produit un Quine en shellcode ; un Shellquine 1. En 38 octets, ce bout de code binaire va s’afficher lui-même sur la sortie standard puis, bonus, invoquer un shell.
Et parce qu’on trouvait dommage que certains articles ne soient disponibles qu’en français, on a fini de traduire ceux pour lesquels on pense que ça en vaut la peine. Un peu de sécurité avec un compte AD Restreint2 et le classique sur les injections SQL3. Et une petite série sur la géolocalisation via les adresses IP ; le principe4, une implémentation avec PHP et SQLite5 et comment produire ses propres fichiers aux formats standards du domaine6 (et éviter ainsi de payer un abonnement inutile).
Pour les anglophones, si vous tombez sur un article non traduit qui vous intéresse, faites-nous signe.
Des IA attaquent le twitter d’un geek
Arsouyes.org par le 02/04/2025 à 09:00:00 - Favoriser (lu/non lu)
Suite à notre article1, et la mobilisation conséquente qu’il a provoqué dans le grand Internet, la proposition de loi visant à imposer une redevance sur les interactions humaines à été rejetée 🎉2.
Sans transition, côté presse, l’article3 a un peu plus de deux semaines maintenant, mais François Clément s’était interrogé sur le déni de service de X et plus particulièrement sur la prétention de Musk impliquant l’Ukraine (peu probable, en tout cas pas infalsifiable) et l’intérêt qu’un groupe Russe le revendique (se faire mousser).
Et pour terminer cette petite nouvelle (on a pas toujours plein de
choses à dire), on continue de partager le site d’un autre, cette fois
c’est /home/lord, un voisin Montpelliérain (suggéré par
Selenith sur la liste de diffusion) qui partage ses idées sur le
cyberespace et le reste comme elles lui viennent et ça fait du bien.
L’article qu’on pointe4 raconte le lien entre IRL et AFK et
la vie d’une association comme tant d’autre.
Et histoire d’éviter de devoir parcourir toutes les news pour retrouver les liens, nous avons créé une page qui les regroupe5. Vous pouvez toujours nous envoyer vos suggestions.
Des IA attaquent le twitter d’un geek
Arsouyes.org par le 02/04/2025 à 09:00:00 - Favoriser (lu/non lu)
Suite à notre article1, et la mobilisation conséquente qu’il a provoqué dans le grand Internet, la proposition de loi visant à imposer une redevance sur les interactions humaines à été rejetée 🎉2.
Sans transition, côté presse, l’article3 a un peu plus de deux semaines maintenant, mais François Clément s’était interrogé sur le déni de service de X et plus particulièrement sur la prétention de Musk impliquant l’Ukraine (peu probable, en tout cas pas infalsifiable) et l’intérêt qu’un groupe Russe le revendique (se faire mousser).
Et pour terminer cette petite nouvelle (on a pas toujours plein de
choses à dire), on continue de partager le site d’un autre, cette fois
c’est /home/lord, un voisin Montpelliérain (suggéré par
Selenith sur la liste de diffusion) qui partage ses idées sur le
cyberespace et le reste comme elles lui viennent et ça fait du bien.
L’article qu’on pointe4 raconte le lien entre IRL et AFK et
la vie d’une association comme tant d’autre.
Et histoire d’éviter de devoir parcourir toutes les news pour retrouver les liens, nous avons créé une page qui les regroupe5. Vous pouvez toujours nous envoyer vos suggestions.
Non au AI Protect Act
Arsouyes.org par le 31/03/2025 à 18:00:00 - Favoriser (lu/non lu)
Divulgâchage : Promesse du sommet pour l’action sur l’intelligence artificielle qui s’est tenu à Paris du 6 au 11 novembre, l’Union Européenne s’apprête à voter l’AI Protect Act pour faire face à la crise de l’IA
Depuis quelques années, on constate que le secteur de l’AI générative peine à trouver son modèle économique. Malgré des investissement conséquents, perd chaque année un peu plus d’argent. En cause, l’efficacité des humains qui concurrencent les modèles d’AI. Derrière le voile optimiste de la communication, les experts du domaines avouent, en off, que la crise est là et les emplois du secteur son menacés.
Pour éviter la catastrophe, l’AI Protect Act propose un ensemble de mesures systémiques et de réorientation de synergies en attaquant le problème à sa source : les humains qui consultent des contenus générés par d’autres humains.
Agence pour l’Intelligence Artificielle
Initialement voulu comme une interdiction ferme de publication des contenu générés sans assistance artificielle (terme remplaçant “humain” dans le règlement) le projet a été dénoncé initialement par le Parti Pirate car portant atteinte, selon-eux, au droit fondamental de la liberté d’expression.
Malgré le soutiens des Verts au parlement qui s’opposent à toute tentative d’artificialisation au nom de la sauvegarde de la biodiversité, c’est finalement les républicains qui ont apporté la solution au blocage institutionnel en proposant une redevance dont une partie serait investie dans la recherche en datacenter durables.
Le projet actuel, qui devrait être voté sans grand changement d’après des sources proches du dossier, propose la création d’une nouvelle agence européenne pour l’Intelligence Artificielle. Ayant pouvoir d’enquête et de décisions administratives, elle aura, à termes, la charge de la collecte et la redistribution des redevances. En attendant sa création définitive, la collecte sera d’abord organisée et gérée par des agences nationales; l’ARCOM pour la France.
Le texte prévoit que la redevance soit due et répartie entre les producteurs et les consommateurs des contenus générés sans assistance. La répartition sera fixée par décret fixé par l’agence (et individuellement par les agences nationales en attendant) et des amendes dissuasives sont prévues pour les humains se faisant passer pour des IA.
L’ARCOM a déjà annoncé la création du label “French Ai Generated” à destination des entreprises génératrices de contenus (agence de publicité, maisons d’édition, presse). Après un audit indépendant et l’étude du dossier par l’agence, ces entreprises bénéficierons d’un régime de déclarations simplifiées et leur inscription dans un annuaire national permettant aux citoyens de trouver facilement les sources d’informations assistées.
Les réseaux sociaux
Les géants du secteur ont annoncé leur volonté de respecter cette nouvelle réglementation et travailler à des nouvelles fonctionnalités innovantes pour leurs utilisateurs.
Linkedin a déjà annoncé que ses utilisateurs humains avec un compte standard ne verront et ne seront vu que par des IA et autres robots et, pour les nostalgiques, la création d’un abonnement Premium Authentic qui ne disposera pas de cette limitation.
Suite à la fusion de xAI et X (anciennement twitter), Elon Musk a annoncé que tous les contenus publiés par les abonnés gratuits seront maintenant reformulés par IA générative afin de “s’exonérer de l’impérialisme européen woke”. Les abonnés premium pourrons, eux, choisir entre plusieurs reformulations.
Diamétralement opposé, Mark Zuckerberg considère que l’IA a vocation à assister les utilisateurs dans leur quotidien en remplaçant le mur des publications de vos amis par une revue de synthèse de l’actualité du réseau, assisté par IA, tenant compte de vos préférences.
En off, un cadre de méta témoigne anonymement : “il n’y a de toutes façon plus de contenus humain depuis longtemps”.
Hébergeurs indépendants
Tout l’indieweb s’est insurgé contre cette mesure “prise par des bureaucrates bruxellois en dépit de l’avis des experts techniques”. On sait combien déterminer la part d’humains dans les statistiques d’affluence sur leurs site est compliqué, l’enjeu est de taille car elle servira d’assiette à la redevance dont ils devront s’acquitter dorénavant.
De leur côté, Cloudflare et Google ont annoncé avec enthousiasme la modification de leurs captcha respectifs pour correspondre au nouveau contexte. En effet, il est de plus en plus difficile de trouver des tâches faisables uniquement par des humains car les IA sont de plus en plus performantes à se faire passer pour des humains.
Les deux entreprises devraient donc proposer sous peu un nouveau captcha inversé permettant d’identifier les robots en demandant la résolution de problème trop difficiles pour les humains (e.g. trouver Charlie).
Cette course à l’armement entre les détecteurs et les humains promet d’être passionnante car un hacker moldave ayant eu accès à ces captchas propose un module Firefox qui les détecte et utilise une IA pour les résoudre. Les experts que nous avons consultés font le parallèle avec le contrôle de l’âge devant les sites pornographiques et prédisent que ces solutions techniques ne peuvent pas fonctionner chez les hébergeurs.
Fournisseurs d’accès
Volet complémentaire dans la collecte de la redevance, les FAIs devraient être mis à contribution et sont d’un avis partagés. Certains hurlent à l’atteinte à la neutralité du Net (qui a bon dos), d’autres y voient une occasion d’innovations au service de leurs abonnés.
D’après nos sources, Bouygues et SFR devraient intégrer une journalisation des contenus consultés leur permettant une facturation détaillée en fin de mois. Free étudie les possibilités d’un forfait tout compris.
De son côté, Orange, en partenariat avec l’ARCOM, proposera une mise à jour de son outil de filtrage labellisé Hadopi disponible depuis 2009 pour intégrer une liste blanche des sites labellisés French AI Generated et ainsi proposer à ses abonnés une navigation en toute sécurité.
Au delà des fournisseurs, c’est tout le secteur de la tech qui est en ébullition et nous avons eu vent d’un projet conjoint entre Microsoft et le ministère de la culture pour proposer, nativement dans Windows 11 et Edge, une fonctionnalité similaire de filtrage permettant une exonération de taxe pour les citoyens.
Une pétition en ligne
Même si le texte ne devrait pas être remanié en profondeur d’ici son vote au parlement, les forces réactionnaires du web continuent d’espérer pouvoir inverser la tendance. La Quadrature du Net et Framasoft ont lancé une pétition demandant le retrait pur et simple du projet.
Non au AI Protect Act
Arsouyes.org par le 31/03/2025 à 18:00:00 - Favoriser (lu/non lu)
Non au AI Protect Act
Arsouyes.org par le 31/03/2025 à 18:00:00 - Favoriser (lu/non lu)
Divulgâchage : Promesse du sommet pour l’action sur l’intelligence artificielle qui s’est tenu à Paris du 6 au 11 novembre, l’Union Européenne s’apprête à voter l’AI Protect Act pour faire face à la crise de l’IA
Depuis quelques années, on constate que le secteur de l’AI générative peine à trouver son modèle économique. Malgré des investissement conséquents, perd chaque année un peu plus d’argent. En cause, l’efficacité des humains qui concurrencent les modèles d’AI. Derrière le voile optimiste de la communication, les experts du domaines avouent, en off, que la crise est là et les emplois du secteur son menacés.
Pour éviter la catastrophe, l’AI Protect Act propose un ensemble de mesures systémiques et de réorientation de synergies en attaquant le problème à sa source : les humains qui consultent des contenus générés par d’autres humains.
Agence pour l’Intelligence Artificielle
Initialement voulu comme une interdiction ferme de publication des contenu générés sans assistance artificielle (terme remplaçant “humain” dans le règlement) le projet a été dénoncé initialement par le Parti Pirate car portant atteinte, selon-eux, au droit fondamental de la liberté d’expression.
Malgré le soutiens des Verts au parlement qui s’opposent à toute tentative d’artificialisation au nom de la sauvegarde de la biodiversité, c’est finalement les républicains qui ont apporté la solution au blocage institutionnel en proposant une redevance dont une partie serait investie dans la recherche en datacenter durables.
Le projet actuel, qui devrait être voté sans grand changement d’après des sources proches du dossier, propose la création d’une nouvelle agence européenne pour l’Intelligence Artificielle. Ayant pouvoir d’enquête et de décisions administratives, elle aura, à termes, la charge de la collecte et la redistribution des redevances. En attendant sa création définitive, la collecte sera d’abord organisée et gérée par des agences nationales; l’ARCOM pour la France.
Le texte prévoit que la redevance soit due et répartie entre les producteurs et les consommateurs des contenus générés sans assistance. La répartition sera fixée par décret fixé par l’agence (et individuellement par les agences nationales en attendant) et des amendes dissuasives sont prévues pour les humains se faisant passer pour des IA.
L’ARCOM a déjà annoncé la création du label “French Ai Generated” à destination des entreprises génératrices de contenus (agence de publicité, maisons d’édition, presse). Après un audit indépendant et l’étude du dossier par l’agence, ces entreprises bénéficierons d’un régime de déclarations simplifiées et leur inscription dans un annuaire national permettant aux citoyens de trouver facilement les sources d’informations assistées.
Les réseaux sociaux
Les géants du secteur ont annoncé leur volonté de respecter cette nouvelle réglementation et travailler à des nouvelles fonctionnalités innovantes pour leurs utilisateurs.
Linkedin a déjà annoncé que ses utilisateurs humains avec un compte standard ne verront et ne seront vu que par des IA et autres robots et, pour les nostalgiques, la création d’un abonnement Premium Authentic qui ne disposera pas de cette limitation.
Suite à la fusion de xAI et X (anciennement twitter), Elon Musk a annoncé que tous les contenus publiés par les abonnés gratuits seront maintenant reformulés par IA générative afin de “s’exonérer de l’impérialisme européen woke”. Les abonnés premium pourrons, eux, choisir entre plusieurs reformulations.
Diamétralement opposé, Mark Zuckerberg considère que l’IA a vocation à assister les utilisateurs dans leur quotidien en remplaçant le mur des publications de vos amis par une revue de synthèse de l’actualité du réseau, assisté par IA, tenant compte de vos préférences.
En off, un cadre de méta témoigne anonymement : “il n’y a de toutes façon plus de contenus humain depuis longtemps”.
Hébergeurs indépendants
Tout l’indieweb s’est insurgé contre cette mesure “prise par des bureaucrates bruxellois en dépit de l’avis des experts techniques”. On sait combien déterminer la part d’humains dans les statistiques d’affluence sur leurs site est compliqué, l’enjeu est de taille car elle servira d’assiette à la redevance dont ils devront s’acquitter dorénavant.
De leur côté, Cloudflare et Google ont annoncé avec enthousiasme la modification de leurs captcha respectifs pour correspondre au nouveau contexte. En effet, il est de plus en plus difficile de trouver des tâches faisables uniquement par des humains car les IA sont de plus en plus performantes à se faire passer pour des humains.
Les deux entreprises devraient donc proposer sous peu un nouveau captcha inversé permettant d’identifier les robots en demandant la résolution de problème trop difficiles pour les humains (e.g. trouver Charlie).
Cette course à l’armement entre les détecteurs et les humains promet d’être passionnante car un hacker moldave ayant eu accès à ces captchas propose un module Firefox qui les détecte et utilise une IA pour les résoudre. Les experts que nous avons consultés font le parallèle avec le contrôle de l’âge devant les sites pornographiques et prédisent que ces solutions techniques ne peuvent pas fonctionner chez les hébergeurs.
Fournisseurs d’accès
Volet complémentaire dans la collecte de la redevance, les FAIs devraient être mis à contribution et sont d’un avis partagés. Certains hurlent à l’atteinte à la neutralité du Net (qui a bon dos), d’autres y voient une occasion d’innovations au service de leurs abonnés.
D’après nos sources, Bouygues et SFR devraient intégrer une journalisation des contenus consultés leur permettant une facturation détaillée en fin de mois. Free étudie les possibilités d’un forfait tout compris.
De son côté, Orange, en partenariat avec l’ARCOM, proposera une mise à jour de son outil de filtrage labellisé Hadopi disponible depuis 2009 pour intégrer une liste blanche des sites labellisés French AI Generated et ainsi proposer à ses abonnés une navigation en toute sécurité.
Au delà des fournisseurs, c’est tout le secteur de la tech qui est en ébullition et nous avons eu vent d’un projet conjoint entre Microsoft et le ministère de la culture pour proposer, nativement dans Windows 11 et Edge, une fonctionnalité similaire de filtrage permettant une exonération de taxe pour les citoyens.
Une pétition en ligne
Même si le texte ne devrait pas être remanié en profondeur d’ici son vote au parlement, les forces réactionnaires du web continuent d’espérer pouvoir inverser la tendance. La Quadrature du Net et Framasoft ont lancé une pétition demandant le retrait pur et simple du projet.
Des stagiaires collectent des images de tartiflettes
Arsouyes.org par le 05/03/2025 à 09:00:00 - Favoriser (lu/non lu)
Parfois, on regarde la liste de nos anciens articles et on se demande si on ne devrait pas en supprimer quelques uns. Ce n’est pas tant un problème de place que ça prend sur nos disques mais plutôt une histoire de réduire le bruit qu’ils génèrent dans le cyberespace. Et même si ce ne sont que des petites gouttes d’eau dans l’océan alimenté par les réseaux sociaux et les IA génératives, nous voulons, comme le colibri, faire notre part.
C’était le cas de l’article d’archéologie expérimentale1 pour lequel nous nous demandions sincèrement qui pouvait bien avoir besoin d’installer une Debian 1.3 de nos jours… Jusqu’à ce qu’un stagiaire en archéologie du numérique nous contacte car, en suivant le dit tutoriel, il avait rencontré une Erreur Fatale lors du partitionnement… Après avoir cherché et trouvé des solutions, nous avons corrigé l’article initial et documenté cette aventure dans un nouvel article2.
Sans faire référence à nos articles, des journalistes continuent à nous contacter pour avoir quelques éclairages d’experts sur des situations quotidiennes et dangereusement banales.
Delphine Bauer, pour son enquête sur la collecte de donnée effectuée par la région Île de France3 nous a demandé les causes (collectionnite et zèle dans une société de surveillance), les risques (détournement institutionnel et fuites) et la légalité (ça n’est pas légal) de ces pratiques.
Fiona Bonassin, pour un article du 20 minutes4, c’est intéressée aux SLOPS (des images de mauvaise qualité générées par IA) en se demandant pourquoi ça marche (ça confirme des croyances), les risques (désinformation, radicalisation, arnaques) et comment s’en prémunir (ne pas placer sa confiance n’importe où).
Depuis le temps, la liste de nos intervention s’allonge5 et nous nous demandions si nous ne devrions pas la nettoyer aussi pour n’en garder que quelques exemples intéressants. Puis nous avons eu vent de fausses interventions d’experts sur les réseaux sociaux (générées par IA à partir de contenu réels). Et nous nous sommes dit que cette liste permettait de les détecter. Si ce que vous voyez, lisez ou entendez n’est pas dans notre liste, c’est que nous ne sommes pas au courant.
Mais ces détournements ne sont qu’une part infime du bruit généré par les réseaux sociaux puis amplifié par les IA génératives et qu’on évoquait au début de cette news. Les contenus authentiques, intéressants et conséquents sont devenus presque inaudibles.
Alors avant de vous laisser reprendre le cours normal de vos vies, on voulait vous faire découvrir le site de mart-e, le blog d’un geek comme on les aimes qui y partage ses réflexions sur le monde, la vie, et parfois sur la tartiflette. Le lien qu’on vous propose pointe sur un article qu’on trouve représentatif6 de l’ensemble.
On s’est dit qu’en partageant ce genre de trouvailles de temps en temps, on augmenterait un petit peut le ratio signal/bruit. Nous n’avons pas la notoriété pour que ça résolve le problème, mais tel le colibri, on aura fait notre part. De votre côté, n’hésitez pas à nous partager vos trouvailles.
Des stagiaires collectent des images de tartiflettes
Arsouyes.org par le 05/03/2025 à 09:00:00 - Favoriser (lu/non lu)
Parfois, on regarde la liste de nos anciens articles et on se demande si on ne devrait pas en supprimer quelques uns. Ce n’est pas tant un problème de place que ça prend sur nos disques mais plutôt une histoire de réduire le bruit qu’ils génèrent dans le cyberespace. Et même si ce ne sont que des petites gouttes d’eau dans l’océan alimenté par les réseaux sociaux et les IA génératives, nous voulons, comme le colibri, faire notre part.
C’était le cas de l’article d’archéologie expérimentale1 pour lequel nous nous demandions sincèrement qui pouvait bien avoir besoin d’installer une Debian 1.3 de nos jours… Jusqu’à ce qu’un stagiaire en archéologie du numérique nous contacte car, en suivant le dit tutoriel, il avait rencontré une Erreur Fatale lors du partitionnement… Après avoir cherché et trouvé des solutions, nous avons corrigé l’article initial et documenté cette aventure dans un nouvel article2.
Sans faire référence à nos articles, des journalistes continuent à nous contacter pour avoir quelques éclairages d’experts sur des situations quotidiennes et dangereusement banales.
Delphine Bauer, pour son enquête sur la collecte de donnée effectuée par la région Île de France3 nous a demandé les causes (collectionnite et zèle dans une société de surveillance), les risques (détournement institutionnel et fuites) et la légalité (ça n’est pas légal) de ces pratiques.
Fiona Bonassin, pour un article du 20 minutes4, c’est intéressée aux SLOPS (des images de mauvaise qualité générées par IA) en se demandant pourquoi ça marche (ça confirme des croyances), les risques (désinformation, radicalisation, arnaques) et comment s’en prémunir (ne pas placer sa confiance n’importe où).
Depuis le temps, la liste de nos intervention s’allonge5 et nous nous demandions si nous ne devrions pas la nettoyer aussi pour n’en garder que quelques exemples intéressants. Puis nous avons eu vent de fausses interventions d’experts sur les réseaux sociaux (générées par IA à partir de contenu réels). Et nous nous sommes dit que cette liste permettait de les détecter. Si ce que vous voyez, lisez ou entendez n’est pas dans notre liste, c’est que nous ne sommes pas au courant.
Mais ces détournements ne sont qu’une part infime du bruit généré par les réseaux sociaux puis amplifié par les IA génératives et qu’on évoquait au début de cette news. Les contenus authentiques, intéressants et conséquents sont devenus presque inaudibles.
Alors avant de vous laisser reprendre le cours normal de vos vies, on voulait vous faire découvrir le site de mart-e, le blog d’un geek comme on les aimes qui y partage ses réflexions sur le monde, la vie, et parfois sur la tartiflette. Le lien qu’on vous propose pointe sur un article qu’on trouve représentatif6 de l’ensemble.
On s’est dit qu’en partageant ce genre de trouvailles de temps en temps, on augmenterait un petit peut le ratio signal/bruit. Nous n’avons pas la notoriété pour que ça résolve le problème, mais tel le colibri, on aura fait notre part. De votre côté, n’hésitez pas à nous partager vos trouvailles.
Problème de géométrie (Debian 1.3 sur VirtualBox ≥ 7.1.2)
Arsouyes.org par le 04/03/2025 à 16:30:00 - Favoriser (lu/non lu)
Divulgâchage : Comme toujours avec les tutoriels, il arrive un moment où une mise à jour casse tout. Il faut alors chercher d’où vient le problème et comment le corriger.
Il y a quelques jours, nous avons reçus le courriel d’un stagiaire en archéologie du numérique qui étudie les liens entre usages et technologies du passé (c.à.d. des années 90). Il n’arrivait pas à installer une Debian 1.3 dans une VM VirtualBox. Il avait suivi notre tutoriel pas à pas et rencontrait une erreur fatale dans l’étape de partitionnement ; le système indiquant être incapable de lire la géométrie du disque dur. Comment se fait-ce ?
TL;DR: La solution est à la fin de cette page.
Nous avons donc commencé par reproduire la situation. Sous Windows 10 (22h02) avec VirtualBox 7.1.6, nous effectuons les premières étapes du tutoriel sans problème jusqu’au partitionnement et là, c’est le drame…

Nous sommes plutôt sûrs de notre tutoriel car nous les testons toujours mais une erreur est peut être passée inaperçue dans celui-là… Alors on reprend une configuration d’origine (VirtualBox 6.0) et cette fois, tout passe sans aucun problème ; le système s’installe et fonctionne.
On aurait put s’arrêter là en répondant, comme l’aurait fait un service de support informatique : ça vient pas de chez nous. Après tout, ce n’est pas notre problème. Mais on est judokas ; Jita Kyoei. Après avoir répondu à notre lecteur, on a écrit cet article.
Recherches initiales côté VirtualBox
Au moment où on découvre le problème, inutile de chercher sur le net pour une solution ; nous ne sommes pas assez nombreux pour avoir rencontré cette erreur, pour l’avoir résolue et encore moins nombreux pour l’avoir documentée. Il va falloir chercher par nous même.
Et comme toujours, il y a plusieurs solutions potentielles. On sait d’avance que seules certaines marcherons mais pour savoir lesquelles, il faut les essayer. Voici une petite liste de choses que tbowan a tenté :
- Changer le format du disque. Si ça se trouve, c’est le format VDI qui n’est plus géré pareil qu’avant. Il y a eu un bogue à propos de géométrie il y a quelques temps (cf. #2251), peut être qu’en changeant de format de disque ça passera mieux…
- Changer la taille du disque. Les coordonnées Cylindre/Tête/Secteur permettent d’adresser jusqu’à 8Go (ou 7.8Gio), essayons avec un disque plus petit… (et plusieurs formats).
- Changer la géométrie du disque. L’outil
vbox-imget sa commandegeometrypermet de lire et d’écrire la géométrie des disques virtuels. On constate qu’elle vaut 0/0/0 pour les disques d’au moins 8Go, peut être qu’en écrivant une valeur conforme, ou une valeur plus petite… - Changer le type de contrôleur IDE. Le tutoriel utilise PIIX4 mais un des 10 autres pourrait ne pas avoir le problème spécifique…
- Changer le type de carte mère. Comme elle fait le lien entre les périphériques, peut être que ça vient de là ?
- Changer l’OS hôte. Et si plutôt qu’un Windows 10 on utilisait une Ubuntu 22.04 ou une Debian 12 ?
Comme vous vous en doutez, aucune de ces solutions n’a fonctionné. C’est normal et ça explique pourquoi il est toujours plus long de trouver une solution que de la mettre en œuvre (serait-ce un problème NP-complet ?).
En parallèle, Aryliin a cherché quelle version introduit le problème. Il y en a 53 publiées entre la 6.0 et la 7.1.6. Installations après installations, elle trouve finalement que c’est la 7.1.2 (publiée le 26 septembre 2024) qui est la première à ne plus supporter l’installation de Debian 1.3.
Le changelog ne mentionne rien concernant l’IDE ou la gestion des disques et pour trouver l’origine du problème, il faudrait donc chercher dans le code source… sauf qu’à un moment, il faut aussi savoir dire stop et passer à autre chose.
Recherches côté Debian
Plutôt que continuer à creuser côté Virtualbox, on s’est alors
tournés vers Debian 1.3 et son processus d’installation. Et plus
particulièrement cfdisk, l’outil qu’il utilise pour le
partitionnement et qui affiche le message. Ça ne corrigera pas l’erreur
mais au moins ça résoudra le problème.
Pour commencer, si vous tapez “man cfdisk” dans un moteur de
recherche, vous pourriez tomber sur des pages de manuel (e.g.
man-linux-magique.net
ou linux.die.net) qui
mentionnent cette géométrie et stipulent que cfdisk regarde
d’abord la table de partition, puis demande au noyau, puis utilise des
valeurs par défaut (255 têtes, 63 secteurs et calcule le nombre de
cylindre d’après la taille). Sauf si vous lui fournissez des valeurs en
ligne de commande (options courtes -c, -h et
-s).
Mais sur une version plus récente, les choses sont différentes ;
cfdisk ne gère plus ces options pour stipuler le nombre de
cylindres, de têtes et de secteurs. Et pour cause, il ne gère plus du
tout ce mode d’adressage :
Depuis la version 2.25, cfdisk […] ne fournit plus de fonctionnalité pour l’adressage CTS (cylindre tête secteur).
Karel Zak, traduction par Vincent Renardias et Jean-Luc Coulon (paquet
manpages-fr-extra).
On peut pousser la curiosité en allant le vérifier dans le code
source (dont le dépôt git est disponible en ligne ici)
et, effectivement, avant la
version 2.25-rc1 (juin 2014), ou plus précisément le
commit 8c3a5a440 (mars 2014), la fonction
decide_on_geometry() se chargeait de déterminer le nombre
de cylindres, de têtes et de secteurs. Voici son code :
static void
decide_on_geometry(void) {
heads = (user_heads ? user_heads :
pt_heads ? pt_heads :
kern_heads ? kern_heads : 255);
sectors = (user_sectors ? user_sectors :
pt_sectors ? pt_sectors :
kern_sectors ? kern_sectors : 63);
cylinder_size = heads*sectors;
cylinders = actual_size/cylinder_size;
if (user_cylinders > 0)
cylinders = user_cylinders;
if (cylinder_size * cylinders > actual_size)
print_warning(_("You specified more cylinders than fit on disk"));
}Mais était-ce le cas sur notre Debian 1.3 ? Cette fonction et son système de plans B sont apparus dans la version 2.9v (décembre 2006) et plus particulièrement lors du commit 7eda085c4. Il n’était donc pas présent à l’époque.
La version qu’on trouve sur la Debian 1.3 (e.g. via ce
dépôt github) est plus sommaire. cfdisk interroge le
noyau et utilise les valeurs retournées si d’autres n’étaient pas déjà
fournies en ligne de commande. La fonction qui s’en charge,
fill_p_info() est un peu longue. Voici les extraits qui
nous intéressent :
#define BAD_GEOMETRY "Cannot read disk drive geometry"
/* ... */
void fill_p_info(void)
{
/* ... */
if (!ioctl(fd, HDIO_GETGEO, &geometry)) {
if (!heads)
heads = geometry.heads;
if (!sectors)
sectors = geometry.sectors;
if (!cylinders)
cylinders = geometry.cylinders;
}
if (!heads || !sectors || !cylinders)
fatal(BAD_GEOMETRY);
/* ... */
}Lors de la rédaction de notre tutoriel avec VirtualBox 6.0, le noyau
Linux arrivait à interroger le matériel pour trouver le nombre de
cylindres, de têtes et de secteurs et cfdisk pouvait
utiliser ces valeurs pour partitionner le disque.
La mise à jour de VirtualBox 7.1.2 a donc introduit un changement de
comportement du matériel virtuel qui empêche Linux de trouver la
géométrie du disque. cfdisk se retrouve avec des valeurs
nulles et, ne sachant pas comment poursuivre, nous affiche un message
d’erreur.
Heureusement pour nous, cette version historique de
cfdisk accepte de prendre des options pour spécifier la
géométrie. Ne reste donc plus qu’à trouver un moyen de passer ces
options lors de l’installation de Debian 1.3.
Et ça tombe bien, l’installateur fourni, à chaque étape, la
possibilité d’exécuter une invite de commande temporaire. Lors du
partitionnement, nous utilisons cette possibilité pour lancer
cfdisk en ligne de commande. En quittant l’invite de
commande, nous revenons à l’installeur et pouvons poursuivre avec les
autres étapes.
On vérifie que ça marche (c’est le cas) et on répond rapidement au stagiaire qui nous valide que ça a résolu de son côté aussi. On peut commencer à rédiger un article tranquillement.
Tentatives finales sur Virtualbox
Pendant qu’on rédigeait, nous avons été recontacté par le stagiaire qui, à force d’autres tentatives, avait fini par trouver une solution qui marche avec un disque de 1Go (ce qui nous étonne puisque nous avons fait ce test).
Puisqu’il nous envoie gentiment son OVA, nous pouvons tester (elle marche) et, paramètre après paramètre, changer les nôtres et tester pour voir lequel fait la différence…
- Nombre de CPU : de 2 on passe à 1,
- Activation de l’IO ACPI : on la désactive,
- RAM : on passe de 2048 Mo à 16 Mo,
- Branchement du CD-ROM : d’esclave primaire, on le passe en maître secondaire.
Jusque là, ça ne marche pas. Jusqu’à ce qu’on arrive sur le contrôleur SATA. Il n’est pas nécessaire et pas utilisé puisqu’aucun disque ou lecteur n’est branché dessus mais nos VM en ont un (par défaut) et la sienne n’en a pas.
On supprime ce contrôleur inutile, et là, ça marche 🎉 On remet les
autres paramètres à nos valeurs (processeurs, IO ACPI, RAM et CD-ROM) et
ça marche. On teste alors avec d’autres tailles de disques et ça passe à
chaque fois (mais avec un disque de 20 Go, cfdisk n’en
verra que 8 car c’est le maximum avec ce type de géométrie
cylindre/tête/secteur). C’est bien la présence du contrôleur SATA qui
pose problème.
Par contre, pourquoi ce changement avec Virtualbox 7.1.2 ? mystère.
Résolution
Nous avons donc deux solutions indépendantes pour pouvoir installer une Debian 1.3 dans un Virtualbox ≥ 7.1.2.
Côté Virtualbox
Une fois la machine virtuelle créée, aller dans les paramètres, puis dans ceux du stockage, cliquer sur le contrôleur SATA et le supprimer (icone en bas de la liste avec la croix rouge).
Côté Debian
Pour installer Debian 1.3, au moment du partitionnement, il faut
choisir Execute a Shell (en bas de la liste) et une fois
dans cette invite de commande, lancer la commande cfdisk
avec les paramètres de géométrie de votre disque. Voici un exemple pour
un disque de 8Go :
cfdisk -c 1024 -h 255 -s 63

Le partitionnement se fait comme d’habitude et une fois qu’on a écrit
les partitions et quitté cfdisk, il faut quitter l’invite
de commande (avec la commande exit). L’installeur reprend
alors la main et on peut poursuivre le tutoriel.
Et après ?
Après avoir trouvé la solution, nous nous sommes demandé comment s’en seraient sorties ces IA génératives révolutionnaires qui vont sauver le monde…
Après leur avoir dit que nous suivions tel tutoriel, qu’il s’agissait d’installer une Debian 1.3 dans un VirtualBox, et donné le message d’erreur, voici les solutions qu’elles nous ont proposé :
- Configurer les disques en IDE. Genre c’est pas déjà ce qu’on a fait ?
- Utiliser une machine virtuelle. Genre c’est pas déjà ce qu’on vient de faire ?
- Utiliser des disques IDE. Heu, on vient de dire que c’est déjà le cas…
- Installer une distribution plus récente. On rate un peu l’objectif d’archéologie expérimentale si on met une Debian 13…
- Plutôt que SATA, utiliser de l’IDE. Est-ce que ces IA lisent nos réponses ?
- Passer l’installeur en mode expert. Ce mode n’existe pas, installer GNU/Linux en 97, c’est déjà une mode d’expert.
- Brancher le disque en IDE. Je crois qu’on a compris l’ID(É)E…
On a pu, parfois, comparer ces IA avec des stagiaires qui savent rien
faire. Et bien nous prouvons aujourd’hui, par l’exemple, qu’elles valent
même pas un stagiaire. Puisque le stagiaire, lui, a trouvé une solution
(contacter les arsouyes supprimer le contrôleur SATA).
La conclusion de cet article est simple : si vous voulez sauver le monde, recrutez des stagiaires.
Problème de géométrie (Debian 1.3 sur VirtualBox ≥ 7.1.2)
Arsouyes.org par le 04/03/2025 à 16:30:00 - Favoriser (lu/non lu)
Porno Anti Gaspi
Arsouyes.org par le 29/01/2025 à 10:00:00 - Favoriser (lu/non lu)
Il y a presque vingt ans, alors que je surveillais une salle machine en accès libre à l’Université (des Sciences et Technologies) de Lille, je me rend compte que l’imprimante (à aiguille) fait un boucan d’enfer. Et pour cause, l’un des étudiants venu travailler sur son TP en soirée a lancé une impression. Serai-ce son code source, des notes, un bout de cours ou de la documentation ? Non, c’était du porno (en ascii 7 bits vu l’imprimante).
Deux ans plus tard, je surveille le même genre de salle à l’Université (Josephe Fourrier) de Grenoble. Cette fois, plus d’imprimante à aiguille mais je découvre un moyen rapide et sans discussion pour vider les salles à l’heure de fermeture : me rendre nonchalamment au fond (d’où on voit les écrans)… car les étudiants s’empressent d’éteindre pour ne pas que je voie ce qu’ils regardent… vous avez deviné, du porno (en gif animés).
Grâce aux efforts acharnés de nos armées d’ingénieurs et chercheurs en informatiques, la technologie a évolué et s’est démocratisée. Depuis la 5G, on peut même regarder du porno HD sur un téléphone tout en prenant le métro.

Avec le nombre croissant d’enfants équipés de téléphone 5G (parce qu’il faut de la data pour savoir où ils sont en temps réel [1]), vous imaginez les risques s’ils venaient à prendre le métro !?
Puisqu’on ne veut pas imposer un contrôle de l’âge à l’entrée des transports en commun, la France a préféré faire reposer cette responsabilités aux sites pornographiques. Enfin, aux sites hébergés en France et hors UE (sûrement parce qu’ailleurs en UE, ils n’ont pas de métro…).
Les journalistes se sont donc demandé comment ces contrôles pouvait marcher et s’ils étaient vraiment efficace. Et certains nous ont demandé notre avis (Raphaël Lardeur pour Actu.fr [2] et France Live [3] ; Ameline Lavechin pour RMC [4] et son JT [5]). Divulgâchage : ça va faire plop.
- https://actu.fr/societe/les-sites-pornos-devront-interdire-l-acces-aux-mineurs-des-samedi-mais-est-ce-vraiment-possible_62095748.html
- https://www.francelive.fr/article/france-live-avec-agence/pornhub-youporn-xhamster-les-sites-x-vraiment-inaccessibles-aux-mineurs-une-usine-a-gaz-8773834/
- https://rmc.bfmtv.com/actualites/tech/sites-pornographiques-nouveau-mode-de-verification-pour-proteger-les-mineurs_VN-202501130142.html
- https://rmc.bfmtv.com/actualites/tech/les-sites-porno-sont-maintenant-obliges-de-verifier-l-age-des-utilisateurs-en-theorie_AV-202501130159.html
En face de ces gaspillages d’énergie inutiles du gouvernement, des groupes indépendants ont décidé de faire justice eux-mêmes. Cherchant un sujet qui fasse l’unanimité, ils s’attaquent aux pédophiles. Littéralement, ou plutôt physiquement ; en leur tendant des guet-apens.
Journaliste au Parisien, Christel Brigaudeau s’est intéressée à la Ligue Anti Pedo ([6] et en audio [7]) dont trois meneurs ont été arrêtés mi-novembre et nous a demandé si c’était récent (non, ça revient régulièrement), le rôle des réseaux sociaux (ce sont des catalyseurs) et l’impact sur les enquêtes (ça détruit les preuves)
- https://www.leparisien.fr/faits-divers/chatiments-adrenaline-et-argent-facile-plongee-dans-lunivers-de-la-ligue-anti-pedo-12-01-2025-6KNAHUAAJNBN5JYT7ZXWPT34JU.php
- https://podcasts.leparisien.fr/le-parisien-code-source/202501211644-ligue-anti-pedo-enquete-sur-ces-pseudo-justiciers-de-tiktok
Tout ce gaspillage alors que les solutions sont si simples et à portée de main : réintégrons, dans le programme de l’éducation nationale, l’art noble du tricot. Ça détournera les jeunes de leurs pulsions agressives et, surtout, ils auront de quoi s’occuper dans le métro.
Porno Anti Gaspi
Arsouyes.org par le 29/01/2025 à 10:00:00 - Favoriser (lu/non lu)
Il y a presque vingt ans, alors que je surveillais une salle machine en accès libre à l’Université (des Sciences et Technologies) de Lille, je me rend compte que l’imprimante (à aiguille) fait un boucan d’enfer. Et pour cause, l’un des étudiants venu travailler sur son TP en soirée a lancé une impression. Serai-ce son code source, des notes, un bout de cours ou de la documentation ? Non, c’était du porno (en ascii 7 bits vu l’imprimante).
Deux ans plus tard, je surveille le même genre de salle à l’Université (Josephe Fourrier) de Grenoble. Cette fois, plus d’imprimante à aiguille mais je découvre un moyen rapide et sans discussion pour vider les salles à l’heure de fermeture : me rendre nonchalamment au fond (d’où on voit les écrans)… car les étudiants s’empressent d’éteindre pour ne pas que je voie ce qu’ils regardent… vous avez deviné, du porno (en gif animés).
Grâce aux efforts acharnés de nos armées d’ingénieurs et chercheurs en informatiques, la technologie a évolué et s’est démocratisée. Depuis la 5G, on peut même regarder du porno HD sur un téléphone tout en prenant le métro.

Avec le nombre croissant d’enfants équipés de téléphone 5G (parce qu’il faut de la data pour savoir où ils sont en temps réel [1]), vous imaginez les risques s’ils venaient à prendre le métro !?
Puisqu’on ne veut pas imposer un contrôle de l’âge à l’entrée des transports en commun, la France a préféré faire reposer cette responsabilités aux sites pornographiques. Enfin, aux sites hébergés en France et hors UE (sûrement parce qu’ailleurs en UE, ils n’ont pas de métro…).
Les journalistes se sont donc demandé comment ces contrôles pouvait marcher et s’ils étaient vraiment efficace. Et certains nous ont demandé notre avis (Raphaël Lardeur pour Actu.fr [2] et France Live [3] ; Ameline Lavechin pour RMC [4] et son JT [5]). Divulgâchage : ça va faire plop.
- https://actu.fr/societe/les-sites-pornos-devront-interdire-l-acces-aux-mineurs-des-samedi-mais-est-ce-vraiment-possible_62095748.html
- https://www.francelive.fr/article/france-live-avec-agence/pornhub-youporn-xhamster-les-sites-x-vraiment-inaccessibles-aux-mineurs-une-usine-a-gaz-8773834/
- https://rmc.bfmtv.com/actualites/tech/sites-pornographiques-nouveau-mode-de-verification-pour-proteger-les-mineurs_VN-202501130142.html
- https://rmc.bfmtv.com/actualites/tech/les-sites-porno-sont-maintenant-obliges-de-verifier-l-age-des-utilisateurs-en-theorie_AV-202501130159.html
En face de ces gaspillages d’énergie inutiles du gouvernement, des groupes indépendants ont décidé de faire justice eux-mêmes. Cherchant un sujet qui fasse l’unanimité, ils s’attaquent aux pédophiles. Littéralement, ou plutôt physiquement ; en leur tendant des guet-apens.
Journaliste au Parisien, Christel Brigaudeau s’est intéressée à la Ligue Anti Pedo ([6] et en audio [7]) dont trois meneurs ont été arrêtés mi-novembre et nous a demandé si c’était récent (non, ça revient régulièrement), le rôle des réseaux sociaux (ce sont des catalyseurs) et l’impact sur les enquêtes (ça détruit les preuves)
- https://www.leparisien.fr/faits-divers/chatiments-adrenaline-et-argent-facile-plongee-dans-lunivers-de-la-ligue-anti-pedo-12-01-2025-6KNAHUAAJNBN5JYT7ZXWPT34JU.php
- https://podcasts.leparisien.fr/le-parisien-code-source/202501211644-ligue-anti-pedo-enquete-sur-ces-pseudo-justiciers-de-tiktok
Tout ce gaspillage alors que les solutions sont si simples et à portée de main : réintégrons, dans le programme de l’éducation nationale, l’art noble du tricot. Ça détournera les jeunes de leurs pulsions agressives et, surtout, ils auront de quoi s’occuper dans le métro.
Virements bancaires, Mairie et cours administrative
Arsouyes.org par le 09/01/2025 à 11:30:00 - Favoriser (lu/non lu)
On avait initialement prévu deux semaines de repos après un début d’année scolaire chargé et un début d’année civile qui s’annonce de même. On avait oublié que certaines actualités saisonnières allaient nous rattraper…
La première concerne le piratage de certaines mairies la veille du nouvel an. Maëlane LOAËC (Le Parisien [1]) et Tom IMLER (RMC) se sont demandés ce qu’il se passait techniquement (un déni de service des sites webs du à de trop nombreuses requêtes), si c’était grave (pas vraiment, ce ne sont que les portails de communication) et ce qu’on pouvait y faire (redonder si c’est important, patienter sinon, donc patienter).
L’autre concerne la gratuité des virements bancaires depuis le nouvel an. Mathieu RIO (Télématin [2]) s’est demandé si ça allait augmenter le risque de fraudes (oui, parce que ça augmente l’impulsivité et qu’une fois le virement fait, on ne peut plus récupérer l’argent sans exécution d’un jugement judiciaire).
La dernière est une bonne nouvelle pour les arsouyes (et, modestement, le monde entier en général), notre candidature pour intégrer la liste des experts auprès de la cours administrative d’appel de Toulouse a été acceptée[3]. En plus des particuliers et des entreprises, nous pouvons maintenant intervenir dans les litiges avec les services de l’État.
Surtout, ça signifie qu’en plus d’être inscrits dans toutes les catégories informatiques, nous le sommes dans tous les ordres juridictionels. Plus simplement : qu’importe la situation litigieuse, on peut intervenir 🎉️.
Tout comme les pompiers, nos clients sont heureux de faire appel à nous (mais préfèraient ne pas avoir à le faire). Contrairement aux pompiers, nous ne vendons pas de calendriers pendant les fêtes mais vendons des livres toute l’année (si c’est pas un CTA tout pourri, je sais pas ce que c’est).
Virements bancaires, Mairie et cours administrative
Arsouyes.org par le 09/01/2025 à 11:30:00 - Favoriser (lu/non lu)
On avait initialement prévu deux semaines de repos après un début d’année scolaire chargé et un début d’année civile qui s’annonce de même. On avait oublié que certaines actualités saisonnières allaient nous rattraper…
La première concerne le piratage de certaines mairies la veille du nouvel an. Maëlane LOAËC (Le Parisien [1]) et Tom IMLER (RMC) se sont demandés ce qu’il se passait techniquement (un déni de service des sites webs du à de trop nombreuses requêtes), si c’était grave (pas vraiment, ce ne sont que les portails de communication) et ce qu’on pouvait y faire (redonder si c’est important, patienter sinon, donc patienter).
L’autre concerne la gratuité des virements bancaires depuis le nouvel an. Mathieu RIO (Télématin [2]) s’est demandé si ça allait augmenter le risque de fraudes (oui, parce que ça augmente l’impulsivité et qu’une fois le virement fait, on ne peut plus récupérer l’argent sans exécution d’un jugement judiciaire).
La dernière est une bonne nouvelle pour les arsouyes (et, modestement, le monde entier en général), notre candidature pour intégrer la liste des experts auprès de la cours administrative d’appel de Toulouse a été acceptée[3]. En plus des particuliers et des entreprises, nous pouvons maintenant intervenir dans les litiges avec les services de l’État.
Surtout, ça signifie qu’en plus d’être inscrits dans toutes les catégories informatiques, nous le sommes dans tous les ordres juridictionels. Plus simplement : qu’importe la situation litigieuse, on peut intervenir 🎉️.
Tout comme les pompiers, nos clients sont heureux de faire appel à nous (mais préfèraient ne pas avoir à le faire). Contrairement aux pompiers, nous ne vendons pas de calendriers pendant les fêtes mais vendons des livres toute l’année (si c’est pas un CTA tout pourri, je sais pas ce que c’est).
Merci d'exploiter les communs
Arsouyes.org par le 16/12/2024 à 16:00:00 - Favoriser (lu/non lu)
Merci d’exploiter les communs
Arsouyes.org par le 16/12/2024 à 16:00:00 - Favoriser (lu/non lu)
En matière de publication sur le net, j’applique habituellement une règle simple : rien de négatif. Parce qu’Internet est une caisse de résonance qui amplifie tout, et surtout le négatif. Mais aujourd’hui, je vai faire une petite exception avec un sentiment qui domine ces derniers jours, Tristesse.
On vous en avait déjà parlé dans une précédente newsletter [1], France Identité a été victime d’une usurpation d’identité via un courriel de phishing émanant de leur propre domaine. Les deux explications sont a) le serveur de courriel des victime est (très) mal configuré ou b) une faille quelque part a été exploitée.
L’interview que j’avais faite pour Le Parisien a fait un petit tour dans les rédactions puisque des extraits ont été réutilisés par Clubic [2], TF1 [3], Juriguide [4] et Cahiers Libres [5].
- https://www.clubic.com/actualite-541556-si-vous-recevez-cet-e-mail-de-france-identite-n-y-repondez-surtout-pas.html
- https://www.tf1info.fr/high-tech/france-identite-alerte-sur-une-campagne-de-phishing-utilisant-l-une-de-ses-adresses-mails-2330385.html
- https://www.juriguide.com/2024/10/30/alerte-france-identite-nouvelle-campagne-phishing-mail-ne-repondez-surtout-pas/
- https://cahierslibres.fr/alerte-phishing-en-france-ne-repondez-pas-a-ces-courriels-ils-pourraient-compromettre-votre-identite/6562/
Aucun de ces journalistes n’a pris la peine de me contacter. Ce n’était bien sûr ni obligatoire ni nécessaire et ils ont tout à fait le droit de reprendre ces citations (art. L122-5 du CPI, alinéa 3°b) mais ça me rend triste de voir les liens sociaux se déliter. Un simple petit courriel “Bonjour, nous avons repris vos propos dans cet article [lien ici], merci” ne coûte rien et fait tellement de bien…
Peut être qu’à force de médiatiser nos relations à travers des interfaces informatiques impersonnelles (i.e. places de marchés virtuelles comme Amazon ou Leboncoin), nous oublions comment nous parler, comment être en relation ? C’est dommage car parler à des inconnus contribue à notre bonheur [6] (en tout cas bien plus que d’acheter des babioles en soldes).
Un peu comme ces rôlistes qui organisent nos soirées enquêtes. Certains ont la gentillesse de nous écrire un mot gentil (merci à eux), mais beaucoup ne prennent pas cette peine. Et d’autres vont jusqu’à facturer la participation (e.g. 25€ [7] ou 30€ [8]) en utilisant nos PDF diffusé en CC BY-NC-SA (indice : NC veut dire Non Commercial)…
- https://www.gdfl.be/convention-2024-les-aventuriers-de-la-cite-ardente-tome-10/
- https://allevents.in/mobile/amp-event.php?event_id=200023086544155
On ne parle pas de grosses sommes (entre 200 € et 300 € pour les organisateurs) mais comparez au prix des versions imprimées (25€ l’exemplaire [9]) et vous pouvez mesurez l’économie ainsi réalisée pour ne pas dire merci aux auteurs.
C’est pour ça que nous avions arrêté d’écrire et diffuser des scénarios de soirées enquête. Même si les joueurs sont toujours content d’y jouer, et les organisateurs ravis de trouver des scénarios clé en main, autant d’efforts (20 jours ETP par scénario) pour finir exploités, ça décourage.
On parle souvent des communs et à quel point ce projet de société est noble et beau. C’est souvent oublier que derrière chaque œuvre libre, se cache un bénévole dans le Nebraska [10]. Et que sans contrepartie équilibrée, ce projet est un triangle [11].
Et c’est encore pire avec les IA génératives. Les œuvres librement
accessibles (et pas forcément libres d’ailleurs) sont systématiquement
pillées pour enrichir des contrefaçons. Vendues à des
clients complices. Sans aucune rétribution aux auteurs. Pas
même un merci.
Certains se plaignent de la baisse de qualité des contenus du cyberespace mais supportent-ils les créateurs ? Le PDF de notre livre a été téléchargé 7 000 fois en novembre, 21 364 fois lors de sa sortie et près de 50 000 fois au total depuis mi septembre. Le seul contenu plus téléchargé en 2024, c’est le flux RSS (366000 fois). Combien ont acheté la version papier ? 6 versions basiques et 1 version communautaire (et on les remercie chaleureusement).
Je comprend que tout le monde ne soit pas intéressé par un livre qui explique comment écrire des shellcodes (même si c’est surtout un prétexte pour expliquer des principes du système bas niveau), mais nous avons largement plus de 7 visiteurs intéressés par ce sujet vu le nombre de reprise de nos shellcodes et articles ailleurs sur le net (dans des cours, write up et autres vidéos) et les réponses que nous avions obtenues dans un sondage en 2020 (120 personnes s’étaient dites intéressées).
Tout ça nous confirme dans notre choix de publier l’ebook en Creative Commons au fur et à mesure des ventes de l’édition communautaire et de proposer une version basique pour ceux qui veulent juste nous remercier. Ça prendra le temps que ça prendra.
Merci d’exploiter les communs
Arsouyes.org par le 16/12/2024 à 16:00:00 - Favoriser (lu/non lu)
En matière de publication sur le net, j’applique habituellement une règle simple : rien de négatif. Parce qu’Internet est une caisse de résonance qui amplifie tout, et surtout le négatif. Mais aujourd’hui, je vai faire une petite exception avec un sentiment qui domine ces derniers jours, Tristesse.
On vous en avait déjà parlé dans une précédente newsletter [1], France Identité a été victime d’une usurpation d’identité via un courriel de phishing émanant de leur propre domaine. Les deux explications sont a) le serveur de courriel des victime est (très) mal configuré ou b) une faille quelque part a été exploitée.
L’interview que j’avais faite pour Le Parisien a fait un petit tour dans les rédactions puisque des extraits ont été réutilisés par Clubic [2], TF1 [3], Juriguide [4] et Cahiers Libres [5].
- https://www.clubic.com/actualite-541556-si-vous-recevez-cet-e-mail-de-france-identite-n-y-repondez-surtout-pas.html
- https://www.tf1info.fr/high-tech/france-identite-alerte-sur-une-campagne-de-phishing-utilisant-l-une-de-ses-adresses-mails-2330385.html
- https://www.juriguide.com/2024/10/30/alerte-france-identite-nouvelle-campagne-phishing-mail-ne-repondez-surtout-pas/
- https://cahierslibres.fr/alerte-phishing-en-france-ne-repondez-pas-a-ces-courriels-ils-pourraient-compromettre-votre-identite/6562/
Aucun de ces journalistes n’a pris la peine de me contacter. Ce n’était bien sûr ni obligatoire ni nécessaire et ils ont tout à fait le droit de reprendre ces citations (art. L122-5 du CPI, alinéa 3°b) mais ça me rend triste de voir les liens sociaux se déliter. Un simple petit courriel “Bonjour, nous avons repris vos propos dans cet article [lien ici], merci” ne coûte rien et fait tellement de bien…
Peut être qu’à force de médiatiser nos relations à travers des interfaces informatiques impersonnelles (i.e. places de marchés virtuelles comme Amazon ou Leboncoin), nous oublions comment nous parler, comment être en relation ? C’est dommage car parler à des inconnus contribue à notre bonheur [6] (en tout cas bien plus que d’acheter des babioles en soldes).
Un peu comme ces rôlistes qui organisent nos soirées enquêtes. Certains ont la gentillesse de nous écrire un mot gentil (merci à eux), mais beaucoup ne prennent pas cette peine. Et d’autres vont jusqu’à facturer la participation (e.g. 25€ [7] ou 30€ [8]) en utilisant nos PDF diffusé en CC BY-NC-SA (indice : NC veut dire Non Commercial)…
- https://www.gdfl.be/convention-2024-les-aventuriers-de-la-cite-ardente-tome-10/
- https://allevents.in/mobile/amp-event.php?event_id=200023086544155
On ne parle pas de grosses sommes (entre 200 € et 300 € pour les organisateurs) mais comparez au prix des versions imprimées (25€ l’exemplaire [9]) et vous pouvez mesurez l’économie ainsi réalisée pour ne pas dire merci aux auteurs.
C’est pour ça que nous avions arrêté d’écrire et diffuser des scénarios de soirées enquête. Même si les joueurs sont toujours content d’y jouer, et les organisateurs ravis de trouver des scénarios clé en main, autant d’efforts (20 jours ETP par scénario) pour finir exploités, ça décourage.
On parle souvent des communs et à quel point ce projet de société est noble et beau. C’est souvent oublier que derrière chaque œuvre libre, se cache un bénévole dans le Nebraska [10]. Et que sans contrepartie équilibrée, ce projet est un triangle [11].
Et c’est encore pire avec les IA génératives. Les œuvres librement
accessibles (et pas forcément libres d’ailleurs) sont systématiquement
pillées pour enrichir des contrefaçons. Vendues à des
clients complices. Sans aucune rétribution aux auteurs. Pas
même un merci.
Certains se plaignent de la baisse de qualité des contenus du cyberespace mais supportent-ils les créateurs ? Le PDF de notre livre a été téléchargé 7 000 fois en novembre, 21 364 fois lors de sa sortie et près de 50 000 fois au total depuis mi septembre. Le seul contenu plus téléchargé en 2024, c’est le flux RSS (366000 fois). Combien ont acheté la version papier ? 6 versions basiques et 1 version communautaire (et on les remercie chaleureusement).
Je comprend que tout le monde ne soit pas intéressé par un livre qui explique comment écrire des shellcodes (même si c’est surtout un prétexte pour expliquer des principes du système bas niveau), mais nous avons largement plus de 7 visiteurs intéressés par ce sujet vu le nombre de reprise de nos shellcodes et articles ailleurs sur le net (dans des cours, write up et autres vidéos) et les réponses que nous avions obtenues dans un sondage en 2020 (120 personnes s’étaient dites intéressées).
Tout ça nous confirme dans notre choix de publier l’ebook en Creative Commons au fur et à mesure des ventes de l’édition communautaire et de proposer une version basique pour ceux qui veulent juste nous remercier. Ça prendra le temps que ça prendra.
Un serveur en assembleur pirate des images d’IA
Arsouyes.org par le 21/11/2024 à 11:00:00 - Favoriser (lu/non lu)
Alors que nous surfions sur le Grand Internet, nous sommes tombés sur un article intéressant d’Akanoa [1] qui cherchait à réduire la taille de l’exécutable d’un mini serveur HTTP. Son ultime code en assembleur X86 gère IPv4 en seulement 376 octets.
Comme on est le nez dans l’assembleur depuis un moment, on s’est demandé si on pouvait poursuivre l’aventure avec des technologies futuristes (x86-64 et IPv6). Divulgâchge : on a réussi à tout faire rentrer dans 224 octets [2].
Sans transition, Claire-Line Nass d’AFP Factuel s’est demandé pourquoi des gens utilisent des IA pour publier des (fausses) photos de créations incroyables sur les réseaux sociaux… [3, 4]. Pourquoi l’IA ? parce qu’elle est plus efficace que nous pour créer du bullshit. Pourquoi publier ces contenus ? on peut citer les robots qui se font passer pour humains (et seront vendus à des communicants), ceux qui vendrons des arnaques à leurs nouveaux amis (cagnottes factices ou faux magasins), l’augmentation du trafic vers des pages (facebook ou web).
- https://factuel.afp.com/doc.afp.com.36M843A
- https://fr.news.yahoo.com/attention-%C3%A0-images-g%C3%A9n%C3%A9r%C3%A9es-ia-164439066.html
De leur côté, TF1 [5] et Libération [6] sont revenu sur les derniers piratages avec fuite de données personnelles. Comme toujours, on n’a pas les détails techniques de l’attaque mais on peut raisonnablement supposer du phishing pour usurper un compte utilisateur ayant accès aux données. Elles seront ensuite revendues pour enrichir les profils des prochaines victimes. En gros : du phishing pour faire plus de phishing…
- https://www.tf1.fr/tf1/jt-13h/videos/cartes-de-fidelite-piratees-quels-risques-pour-les-clients-35660321.html
- https://www.liberation.fr/economie/economie-numerique/pourquoi-autant-dentreprises-francaises-ont-ete-victimes-de-cyberattaques-depuis-le-debut-de-lannee-20241120_RFWFN4IKHRHSNDB56UBEHPIQ7E/
Un peu comme ces jeux et applications sur téléphones qui ne sont en fait des chevaux de Troyes créés pour nous montrer de la publicité pour d’autres jeux et applications. Alors ça nous a donné une super idée : viendez faire la publicité pour vos livres dans notre ebook…