Arsouyes.org
Voir les Non lu | Plus vieux en premierCe 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)S, P) :- greets(S), person(P).
message(/2. #show message
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 = "..." ;
= . - hello
sizeofhello
/* ... */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 () {
= { name : "world" } ;
w 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)
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)
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)
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)
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)
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)
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ÎNE
est […] 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 month
might 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
(int argc, char **argv)
main {
/* ... */
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)
= true;
discarded_datestr = optarg;
datestr break;
/* ... */
}
}
/* ... */
= parse_datetime2 (&when, datestr, nullptr,
valid_date ,
parse_datetime_flags, tzstring);
tz/* ... */
}
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
(struct timespec *result, char const *p,
parse_datetime_body struct timespec const *now, unsigned int flags,
, char const *tzstring)
timezone_t tzdefault{
/* ... */
/* 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)
(_("warning: when adding relative months/years, "
dbg_fputs "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))
(_("error: %s:%d\n"), __FILE__, __LINE__);
dbg_printf goto fail;
}
.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;
tm= mktime_z (tz, &tm);
Start /* ... */
}
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(struct tm *tp,
__mktime_internal struct tm *(*convert) (const __time64_t *, struct tm *),
*offset)
mktime_offset_t {
/* ... */
/* 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 ;
("%04d%02d\n",
printf/ 12 + 1900,
months % 12 + 1) ;
months 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)
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)
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.txt
4. 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)
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 # ) ;
= . - write len
Pour 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 05
On 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 05
Notez 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 05
Pour 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 05
Si 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 05
Dans 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:
$0x2d, %al # 04 2d
add syscall # 0f 05
Pour 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 05
Ce 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 00
Cette 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
(
write
retourne le nombre d’octets écrits etdup2
retourne 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:
$0x3a, %al # 04 3a
add 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 00
Cette 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:
$0x3a, %al # 04 3a
add 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 00
Cette 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 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)
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-img
et sa commandegeometry
permet 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
(void) {
decide_on_geometry= (user_heads ? user_heads :
heads ? pt_heads :
pt_heads ? kern_heads : 255);
kern_heads = (user_sectors ? user_sectors :
sectors ? pt_sectors :
pt_sectors ? kern_sectors : 63);
kern_sectors = heads*sectors;
cylinder_size = actual_size/cylinder_size;
cylinders if (user_cylinders > 0)
= user_cylinders;
cylinders
if (cylinder_size * cylinders > actual_size)
(_("You specified more cylinders than fit on disk"));
print_warning}
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)
= geometry.heads;
heads if (!sectors)
= geometry.sectors;
sectors if (!cylinders)
= geometry.cylinders;
cylinders }
if (!heads || !sectors || !cylinders)
(BAD_GEOMETRY);
fatal
/* ... */
}
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.
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)
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…
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…
Serveur HTTP minimaliste, x86-64 et IPv6
Arsouyes.org par le 21/11/2024 à 10:30:00 - Favoriser (lu/non lu)
Divulgâchage : 224 octets pour faire un mini-serveur HTTP ? C’est tout à fait possible mais il faudra tout optimiser de partout…
Il y a quelques jours, je suis tombé sur un article intéressant d’Akanoa qui se demandait comment coder un serveur HTTP de moins de 20 Ko. Rien à voir avec le sloweb ; Akanoa déploie une application et a besoin qu’un programme tiers réponde un code 200 en HTTP pour que l’hébergeur considère que tout s’est bien passé.
Après moult péripéties où il explore les possibilités de langages
obscures, il fini par trouver la Lumière dans un code assembleur (x86)
qui répond en HTTP (en IPv4). Le binaire assemblé et lié fait
initialement 5Ko mais avec deux options passées à ld
(--omagic
et --strip-all
), il réduit
l’enveloppe à 376 octets et clôt son périple au pays de l’optimisation
des binaires.
Alors forcément, je n’ai pas pu m’empêcher de me demander ce que ça donnerait avec des technologies futuristes ; une architecture x86-64 et un réseau IPv6… Puis je me suis aussi demandé si on ne pouvait pas faire mieux que ld pour produire un binaire…
Divulgâchage : on peut faire mieux.
Premier code
Avant de chercher à tout optimiser aux petits oignons, on va d’abord écrire un premier code fonctionnel qui servira de référence. Le code qu’on vous propose ici est on ne peut plus classique et reprend les portions que nous avons publié dans Les shellcodes volume 1 :
- Un premier morceau qui gère le réseau et attend les connexions en TCP (cf. « bind shell », page 155),
- Un deuxième morceau qui envoie la réponse HTTP au correspondant (cf. « Envoyer 42 en UDP », page 123),
- Une boucle pour répondre à toutes les connexions entrantes (une étiquette et un saut).
Quitte à reprendre des morceaux, on aurait bien sûr pu compléter la réponse HTTP par l’envoi du contenu d’un fichier (cf. « Envoyer un fichier en UDP », page 135) et ainsi proposer un véritable serveur HTTP, mais ce n’est pas ce que cherche à faire Akanoa (il veut juste répondre un code 200) et ça aurait donc rallongé le binaire inutilement.
Pour ceux qui n’aiment pas lire l’assembleur directement, voici le traditionnel diagramme de flot correspondant à ce qu’on veut écrire. Les rectangles correspondent aux appels systèmes et leur enchaînement est traduit par des flèches pleines. Les parallélogrammes correspondent aux données et leur production et utilisation sont traduites par des flèches grises pointillées.

Pour rester au plus simple, les descripteurs de sockets seront placés
dans des registres et les données statiques (adresse d’écoute et réponse
HTTP) seront placées à la suite du code. Vu qu’on écrit un binaire et
pas un shellcode, on aurait pu placer ces données statiques dans une
section spécifique (i.e. la section .data
) mais
comme on veut optimiser la taille du fichier, on va rester sur le style
shellcode et ainsi économiser une section.
Attention : Contrairement à l’article d’Akanoa qui utilise NASM, nous préférons utiliser gas et c’est donc la traditionnelle syntaxe AT&T que nous utilisons dans les codes qui suivent. Notez aussi les trois premières lignes qui permettent de produire un binaire (et pas uniquement un shellcode).
.section .text
.globl _start
_start:
socket:
mov $0x29, %rax # socket(
mov $10, %rdi # AF_INET6,
mov $0x01, %rsi # SOCK_STREAM,
mov $0x00, %rdx # 0
syscall # ) ;
mov %rax, %r15
bind:
mov $49, %rax # bind(
mov %r15, %rdi # sockfd,
lea addr(%rip), %rsi # *addr,
mov $addrlen, %rdx # addrlen
syscall # ) ;
listen:
mov $50, %rax # listen(
mov %r15, %rdi # sockfd,
mov $1, %rsi # backlog = 1
syscall # ) ;
loop:
accept:
mov $43, %rax # accept(
mov %r15, %rdi # sockfd,
mov $0x0, %rsi # *addr=0,
mov $0x0, %rdx # *addrlen=0
syscall # ) ;
mov %rax, %r14
sendto:
mov $44, %rax # sendto(
mov %r14, %rdi # sockfd,
lea msg(%rip), %rsi # buf,
mov $msglen, %rdx # len,
mov $0, %r10 # flags,
mov $0, %r8 # dest_addr,
mov $0, %r9 # addrlen
syscall # ) ;
close:
mov $3, %rax # close(
mov %r14, %rdi # fd
syscall # ) ;
jmp loop
addr:
.byte 0x0a, 0x00 # sin6_family = AF_INET6
.byte 0x90, 0x1f # sin6_port = 8080
.byte 0, 0, 0, 0 # flowinfo
.byte 0, 0, 0, 0, 0, 0, 0, 0 # sin6_addr 1/2 = IN6ADDR_ANY_INIT
.byte 0, 0, 0, 0, 0, 0, 0, 0 # sin6_addr 2/2
.byte 0, 0, 0, 0 # sin6_scope_id
= . - addr
addrlen msg:
.ascii "HTTP/1.0 200 OK\r\n"
.ascii "Content-length: 2\r\n"
.ascii "\r\n"
.ascii "Ok"
= . - msg msglen
L’assemblage du fichier par gas ne pose pas de problème puisque nous
sommes dans le cas par défaut (x86-64). De même pour ld
puisque nous n’avons pas d’appel à des bibliothèques (le code ne fait
que des appels systèmes).
$ as http.s -o http.o
$ ld http.o -o http
Et puisque c’est la taille qui compte, on va maintenant la mesurer…
$ size -G http
text data bss total filename
236 0 0 236 http
$ du -b http
5200 http
$ du -h http
8,0K http
Pour paraphraser les trois commandes précédentes… Cette première version se traduit en 236 octets d’instructions et données. Le fichier exécutable nécessite 5200 octets car il ajoute des informations d’en-têtes diverses. Et le système en utilise en réalité 8192 puisque le disque est alloué en pages atomiques de 4Kio.
Comme Akanoa, on va maintenant demander à ld de produire un binaire plus minimaliste en supprimant de l’inutile et mesurer l’économie ainsi réalisée.
$ ld http.o -o http --omagic --strip-all
ld: attention: http a un segment LOAD avec les permissions RWX
$ du -b http
568 http
On a presque divisé la taille du fichier par 10 ce qui est plutôt pas mal. Notez que côté espace disque, ça occupe maintenant une seule page de 4096 octets mais on ne pourras pas faire moins. Les optimisations suivantes sont donc artistiques ; belles parce qu’inutiles.
Le tableau suivant résume les tailles (en octets) de la version 32 bits (& IPv4) et notre première version 64 bits (& IPv6). On prend plus de place, mais ce n’est pas vraiment une surprise.
32 bits & IPv4 | 64 bits & IPv6 | |
---|---|---|
Par défaut | 4756 | 5200 |
omagic & strip-all | 376 | 568 |
Instructions & données | 142 | 236 |
Optimisations du code
Maintenant qu’on a une base fonctionnelle, on va pouvoir s’amuser à modifier le code pour réduire la taille du binaire. Certaines optimisations sont générales et peuvent se faire dans n’importe quel code, d’autres sont plus spécifiques à notre cas particulier.
Supprimer les MOV inutiles
Par soucis pédagogique (ou de maintenance), nous avons utilisé une instruction MOV pour placer la valeur de chacun des paramètres des appels systèmes dans leurs registres respectifs. Certaines de ces instructions sont en fait inutiles car la valeur est déjà présente dans le registre cible (ou presque).
Zéro déjà présent
Lorsqu’un programme démarre, lorsque l’instruction de son point d’entrée est exécutée par le processeur, tous les registres sont à zéro (sauf RIP, RSP et autres registres spécifiques). On n’y pense pas avec les shellcodes car le programme hôte a déjà fait des opérations avant que le shellcode ne prenne la main. Mais puisque nous développons ici un programme, pouvons utiliser cette propriété pour optimiser notre code.
Lorsque aucune opération n’a modifié la valeur du registre avant qu’on veuille le mettre à zéro, l’opération est inutile et on peut donc l’enlever. Voici les MOV concernés dans noter programme :
- Dans le bloc
socket
, à destination de RDX - Dans le bloc
sendto
, à destination de R8, R9 et R10.
Supprimer ces 4 instructions nous permet d’économiser 28 octets (7 / instruction).
Valeur déjà présente
De même, il est inutile de placer une valeur lorsqu’elle est déjà présente dans un registre (parce qu’elle y a été placée et n’a pas été modifiée depuis). Voici les MOV concernés :
- Dans le bloc
listen()
, l’identifiant de socket a déjà été placé dans RDI lors de l’appel système précédent (bind()
), - Dans le bloc
close()
, l’identifiant de socket du correspondant a été placé dans RDI lors de l’appel système précédent (sendto()
).
Supprimer ces deux instructions nous permet d’économiser 14 octets de plus.
Valeur présente ailleurs
Parfois, la valeur qu’on veut placer dans le registre n’y est pas encore mais elle existe ailleurs ; dans un autre registre, dans la pile ou en mémoire. Voici les instructions concernées :
Dans le bloc socket()
, mettre 1 dans RSI peut être
obtenu via la valeur de argc
placée au sommet de pile par
le système (car notre programme est lancé sans argument autre que son
nom). Remplacer ce mov
par un pop
nous fait
économiser 6 octets :
mov $0x01, %rsi # 48 c7 c6 01 00 00 00
pop %rsi # 5e
Dans le bloc accept()
, la mise à zéro des registres RSI
et RDX pourrait être obtenue via RBP qui, comme tous les registres qui
n’ont pas été modifié depuis le début, est à zéro. Nous pourrions aussi
remplacer cette instruction par un xor
mais elle n’est pas
plus économique. Dans ces deux cas, nous économisons 4 octets par
instruction :
mov $0x0, %r10 # 49 c7 c2 00 00 00 00
mov %rbp, %r10 # 49 89 ea
xor %r10, %r10 # 4d 31 d2
Valeur inutile
Dans certains cas, nous devons placer une valeur dans un registre mais cette valeur importe relativement peu. Tant qu’on reste dans des bornes acceptables, qu’importe la valeur, le programme répondra à nos attentes.
C’est le cas du deuxième paramètre de l’appel système
listen(2)
. Il spécifie la taille de la file d’attente pour
les requêtes entrantes. Tant que cette valeur est relativement
petite le noyau pourra s’en dépatouiller. Or, le registre
correspondant (RSI), contient à ce moment l’adresse de la structure
définissant l’adresse d’écoute (addr
) qui, même si elle est
grande, ne l’est pas trop.
En supprimant cette instruction, on économise encore 7 octets.
Remplacer des MOV
Maintenant que nous avons supprimé les instructions MOV inutiles, voyons comment optimiser celles qui restent.
8 bits de valeurs, passer par la pile
Lorsqu’on écrit un shellcode, on utilise cette technique pour supprimer les octets nuls dans le binaire produit lorsque la valeur à déplacer est petite (cf. « Cachez ces zéros », page 345). Mais il se trouve qu’elle a aussi le bon goût de réduire la taille des instructions…
Concrètement, plutôt qu’utiliser une instruction de 7 octets pour déplacer notre petite valeur, on va le faire en deux instruction via la pile :
- Un « PUSH imm8 » car la valeur empilée est alors étendue sur 64 bits (en recopiant le bit de signe) ;
- Un « POP r64 » qui dépile cette valeur à destination d’un registre.
Le code suivant montre ce que donne cette technique sur le premier
mov
du code dans l’appel à socket(2)
. Notez
que, contrairement à la tradition qui veut que chaque instruction soit
seule sur sa ligne, nous les avons regroupées par deux (séparées par un
point-virgule) pour mieux rendre la notion de groupes d’instructions qui
en remplacent une.
mov $0x29, %rax # 48 c7 c0 29 00 00 00
push $0x29 ; pop %rax # 6a 29 58
Notez ensuite une petite subtilité de gas. Cet assembleur fonctionne en une seule passe ; si vos variables sont utilisées avant d’être définies, il les considère comme nécessitant 32 bits lorsqu’il écrit l’instruction puis viendra modifier la valeur une fois qu’il la connaîtra. Qu’importe qu’elle utilise en réalité 8 bits ou 16 bits, il ne reviendra pas en arrière pour modifier son instruction.
Par exemple, voici trois variantes de l’instruction qui place la
taille de l’adresse dans le troisième paramètre de l’appel système
bind(2)
. La première est celle non optimisée, la seconde
est optimisée mais conserve une valeur de 32 bits (la variable
$addrlen
est définie après), la troisième utilise la valeur
sans passer par une variable. La traduction en hexadécimal en
commentaire vous montre comment ces instructions sont traduites par
gas.
mov $addrlen , %rdx # 48 c7 c2 1c 00 00 00
push $addrlen ; pop %rdx # 68 1c 00 00 00 5a
push $28 ; pop %rdx # 6a 1c 5a
Sur l’ensemble du code, on économise 4 octets pour chacun des MOV qui ciblent les 8 premiers registres, et 3 octets pour les 3 MOV qui ciblent les 8 derniers registres (R8 à R15) car ils nécessitent un préfixe REX.
32 bits de registres, en 32 bits
Lorsque les 32 bits de poids fort du registre de destination ont déjà la bonne valeur, il est inutile de déplacer les 64 bits du registre ; les 32 de poids faibles sont suffisants.
C’est le cas dans le block accept()
où nous copions RBP
vers les registres RDI et RDX. Leurs 32 bits de poids forts sont déjà à
zéro (RSI contient l’adresse de addr
qui tient sur 32 bits,
et RDI contient addrlen
, soit 28). Nous pouvons donc
remplacer ces instructions 64 bits en 32 bits et conserver le même
résultat :
mov %rbx, %rdi # 48 89 df
mov %ebx, %edi # 89 df
La copie dans R15 (en destination après l’appel à
socket()
puis en source pour les appels à
bind()
, et
listen()
accept()
) est un cas particulier. Ce registre faisant
partie des nouveaux, nous devons systématiquement utiliser le préfixe
REX pour l’identifier. Même si nous faisons une opération sur 32 bits,
le préfixe changera mais restera obligatoire. Nous allons donc remplacer
ce registre R15 par un autre qui n’est pas utilisé dans notre code ; RBX
(et donc EBX en 32 bits).
Voici les variantes et leur traduction en hexadécimal.
mov %rax, %r15 # 49 89 c7
mov %eax, %r15d # 41 89 c7
mov %rax, %rbx # 48 89 c3
mov %eax, %ebx # 89 c3
bind:
/* ... */
mov %r15, %rdi # 4c 89 ff
mov %ebx, %edi # 89 df
Nous économisons ainsi 1 octet par instruction, soit 3 au total ici puisque nous avons une écriture et deux lectures. Nous verrons dans la section suivante comment en gagner 2 de plus.
Entre registres, par la pile
La copie dans R14 a le même problème ; nous ne pouvons pas garder
R14. Par contre, vu que nous n’avons qu’une écriture (après
accept()
) et une lecture (dans sendto()
), nous
pouvons passer facilement par la pile en remplaçant l’écriture par un
push
et la lecture par un pop
.
accept:
/* ... */
mov %rax, %r14 # 49 89 c6
push %rax # 50
sendto:
/* ... */
mov %r14, %rdi # 4c 89 f7
pop %rdi # 5f
Nous économisons ici 2 octets par instruction, soit 4 au total.
Nous pouvons maintenant utiliser cette technique pour gagner 2 octets dans la manipulation de l’identifiant de la première socket (stockée initialement dans R15 puis dans RBX).
Pour commencer, nous remplaçons l’écriture par un push
et la première lecture (dans l’appel à bind()
) par un
pop
. L’appel à listen()
utilise aussi cet
identifiant mais il est dans le même registre et nous n’avons rien à
faire. Voici à qui ressemblent ces trois blocs à ce stade des
optimisations.
socket:
push $0x29 ; pop %rax # socket(
push $10 ; pop %rdi # AF_INET6,
pop %rsi # SOCK_STREAM,
# 0
syscall # ) ;
push %rax
bind:
push $49 ; pop %rax # bind(
pop %rdi # sockfd,
lea addr(%rip), %rsi # *addr,
push $28 ; pop %rdx # addrlen
syscall # ) ;
listen:
push $50 ; pop %rax # listen(
# sockfd,
# backlog = 1
syscall # ) ;
L’appel à accept()
nécessite plus d’attention. S’il
était seul, nous n’aurions rien à écrire puisque la valeur est déjà là
(depuis l’appel à bind()
), mais nous sommes ici dans le
corps de la boucle principale. Lors de la deuxième itération, c’est
l’identifiant de la socket utilisée pour écrire le message (et
ensuite fermée) qui sera dans ce registre.
Nous devons donc récupérer la valeur de la première socket à chaque itération (à un moment où elle est sur le sommet de la pile). Et donc la placer au sommet de pile à chaque itération (à un moment où elle est dans un registre).
Le code suivant vous montre notre solution. La socket est sauvegardée juste après l’appel système et restaurée juste avant le saut vers l’itération suivante. Chaque itération commence donc avec la valeur de cette socket dans le bon registre (c’est un invariant de boucle). Voici cette partie du code à ce stade de nos optimisations.
loop:
accept:
push $43 ; pop %rax # accept(
# sockfd,
mov %ebp, %esi # *addr=0,
mov %ebp, %edx # *addrlen=0
syscall # ) ;
push %rdi
push %rax
sendto:
push $44 ; pop %rax # sendto(
pop %rdi # sockfd,
lea msg(%rip), %rsi # buf,
push $0x28 ; pop %rdx # len,
# flags,
# dest_addr,
# addrlen
syscall # ) ;
close:
push $3 ; pop %rax # close(
# fd
syscall # ) ;
pop %rdi
jmp loop
Nous utilisons ainsi 4 octets pour manipuler cet identifiant de
socket contre 6 avec trois mov
utilisant EBX (ou 9
initialement avec R15). Ce n’est pas beaucoup, mais vu le peu d’octets
qu’ils reste, ça fait une différence.
Remplacer RIP par RCX dans LEA
Le code contient deux instructions LEA pour charger une adresse dans un registre. Parce que c’est bien pratique, cette adresse est calculée par rapport à RIP (c’est à dire par rapport à la prochaine instruction). Voici ces instructions et leur traduction en hexadécimal (à ce stade des optimisations) :
lea addr(%rip), %rsi # 48 8d 35 55 00 00 00
/* ... */
lea msg(%rip), %rsi # 48 8d 35 0d 00 00 00
Comme vous pouvez le voir, les adresses relatives tiennent facilement sur 8 bits mais l’instruction en utilise 32. Et ce n’est pas la faute de gas qui utilise 32 bits partout mais une limitation de l’architecture ; l’adressage relatif à RIP a été ajouté sous forme d’exception dans l’octet ModR/M et seules les adresses de 32 bits sont prévues.
Dans un shellcode traditionnel, nous pourrions utiliser la
technique du jmp/call/pop
(page 64 pour la version 64 bits
et page 96 pour la version 32 bits). Comme le montre le code suivant où
nous avons implémenté la technique, nous ajoutons 8 octets et n’en
économisons que 7, ce qui n’est pas rentable.
_start:
jmp data # eb 3c
start:
pop %rbx # 5b
/* bind() ... */
lea 0x28(%rbx), %rsi # 48 8d 73 28
/* sendto() ... */
mov %rbx, %rsi # 48 89 de
/* ... */
data:
call start # e8 bf ff ff ff
msg:
/* ... */
On pourrait alors se tourner vers la technique du
call $+5
(page 70). Comme le montre le code suivant, elle
n’est pas rentable non plus car nous ajoutons 6 octets pour n’en
économiser que 6…
_start:
call start # e8 00 00 00 00
start:
pop %rbx # 5b
/* bind() ... */
lea 0x65(%rbx), %rsi # 48 8d 73 65
/* sendto() ... */
lea 0x3d(%rbx), %rsi # 48 8d 73 3d
/* ... */
Le problème des techniques précédentes, c’est que nous gaspillons trop d’instructions pour obtenir une adresse dans un registre. Pouvons nous économiser cette phase ?
La réponse est oui, en exploitant les appels systèmes (page 73). Car
lors de chaque instruction syscall
, le processeur copie
l’adresse de la prochaine instruction dans RCX. Ça permet au noyau de
revenir là où il a été appelé. Ça veut aussi dire que, dans noter code,
RCX contient en permanence l’adresse de l’instruction qui suit le
dernier syscall
exécuté.
Tout ce qu’il nous faut, c’est calculer l’adresse relative de la
donnée et cette instruction après un syscall
. Vous pourriez
le faire à la main mais voici comment procéder avec l’aide de
objdump
. Commencez par écrire les instructions LEA avec une
adresse relative factice (i.e. 0xff
), assemblez le
code avec as
puis inspectez-le avec objdump
comme suit (les passages inutiles sont caviardés) :
$ as -o http-01.o http-01.s
$ objdump -d http-01.o
[...]
0000000000000000 <_start>:
[...]
7: 0f 05 syscall
9: 50 push %rax
000000000000000a <bind>:
[...]
e: 48 8d 71 ff lea 0xff(%rcx),%rsi
[...]
000000000000003c <addr>:
[...]
Dans l’appel à bind()
, l’instruction lea
a
besoin de connaître la distance entre l’adresse réseau (en
0x3c
) et l’instruction qui suit le précédent
syscall
(le push
en 0x09
). Elle
vaut donc 0x3c - 0x09 = 0x33.
Un calcul similaire permet d’obtenir l’adresse relative du message
(en 0x58
) par rapport à l’adresse suivant le dernier
syscall
(le push %rdi
du block
accept()
, en 0x25
) et d’obtenir 0x33 (c’est
une coïncidence).
On économise alors 3 octets par instruction lea
sans
besoin d’ajout d’instructions supplémentaires.
Code final
Voici le code une fois toutes ces optimisations faites :
.section .text
.globl _start
_start:
socket:
push $0x29 ; pop %rax # socket(
push $10 ; pop %rdi # AF_INET6,
pop %rsi # SOCK_STREAM,
# 0
syscall # ) ;
push %rax
bind:
push $49 ; pop %rax # bind(
pop %rdi # sockfd,
lea 0x33(%rcx), %rsi # *addr,
push $28 ; pop %rdx # addrlen
syscall # ) ;
listen:
push $50 ; pop %rax # listen(
# sockfd,
# backlog = 1
syscall # ) ;
loop:
accept:
push $43 ; pop %rax # accept(
# sockfd,
mov %ebp, %esi # *addr=0,
mov %ebp, %edx # *addrlen=0
syscall # ) ;
push %rdi
push %rax
sendto:
push $44 ; pop %rax # sendto(
pop %rdi # sockfd,
lea 0x33(%rcx), %rsi # buf,
push $0x28 ; pop %rdx # len,
# flags,
# dest_addr,
# addrlen
syscall # ) ;
close:
push $3 ; pop %rax # close(
# fd
syscall # ) ;
pop %rdi
jmp loop
addr:
.byte 0x0a, 0x00 # sin6_family = AF_INET6
.byte 0x1f, 0x90 # sin6_port = 8080
.byte 0, 0, 0, 0 # flowinfo
.byte 0, 0, 0, 0, 0, 0, 0, 0 # sin6_addr 1/2 = IN6ADDR_ANY_INIT
.byte 0, 0, 0, 0, 0, 0, 0, 0 # sin6_addr 2/2
.byte 0, 0, 0, 0 # sin6_scope_id
msg:
.ascii "HTTP/1.0 200 OK\r\n"
.ascii "Content-length: 2\r\n"
.ascii "\r\n"
.ascii "Ok"
Le tableau suivant reprend les tailles précédentes et ajoute une colonne avec notre version optimisée. Nous avons fait mieux pour les instructions et leurs données, mais le programme complet reste plus grand que la version 32 bits…
32 bits & IPv4 | 64 bits & IPv6 | Optim. Code | |
---|---|---|---|
Par défaut | 4756 | 5200 | 5088 |
omagic & strip-all | 376 | 568 | 464 |
Instructions & données | 142 | 236 | 128 |
Optimiser l’exécutable
Les en-têtes du fichier
Puisque c’est la taille du binaire qui compte, et pas celle des instructions et leurs données, on va maintenant s’attaquer à réduire la taille du fichier ELF. Un peu comme ce que ld a fait lorsqu’on lui a passé les deux options, mais à la main, et en bien plus drastique…
L’idée est de créer l’en-tête ELF Minimale qui ne comprendra donc qu’une en-tête de fichier suivie d’une en-tête de [section de] programme. La création n’est pas très compliquée, il suffit de suivre la documentation officielle…
En-tête ELF
Cette première partie de 64 octets (soit 0x40 en hexadécimal) contient des champs permettant d’identifier le fichier comme étant un fichier ELF 64 bits exécutable et autres détails pratiques pour le système. Entre autre : trouver où sont les prochains en-têtes de sections.
Voici son contenu où nous avons mis, en commentaire, le nom du champ officiel suivi d’une description ou de la valeur (suivant lequel est le plus intéressant d’après nous).
# https://refspecs.linuxbase.org/elf/gabi4+/ch4.eheader.html
.byte 0x7f, 'E',
Les bretons envoient des livres à France Identité
Arsouyes.org par le 31/10/2024 à 09:00:00 - Favoriser (lu/non lu)
Cette année encore, l’UBS [1] nous a fait l’honneur de nous (ré)inviter pour trois jours d’enseignements dans leur master CyberUS qui réuni une quarantaine d’étudiants venus des quatre coins du monde.
Les PDF des présentations sont en ligne [2] pour ceux que ça intéresse mais ils ne rendent pas justice aux nombreux échanges sur tous les sujets annexes que nous avons eu avec les étudiants. Il n’y a pas à dire, mais les cours sont vraiment plus intéressants et agréables lorsque les étudiants sont présents…
Hasard du calendrier, Le Parisien a eu besoin d’Aryliin pendant une de ses interventions et c’est donc Tbowan qui a pris sa place. Dans son article [3], Maëlane Loaëc est revenue sur la campagne de phishing qui cible France Identité en se demandant comment les escrocs avaient été capable d’usurper une adresse mail officielle… Divulgâchage : soit les serveurs mails des victimes ne vérifient rien (ce qui est de plus en plus rare), soit ils ont détourné un (web)service de France Identité à leur avantage.
Autre hasard du calendrier, les livres nous ont été livrés juste avant notre départ et nous avons pu les envoyer par la poste. Ça parait simple dit comme ça mais en vrai, notre bureau était fermé (horaires habituels) et nous nous sommes rendus à celui de la ville voisine, qui était en réparation jusqu’à mi novembre. Nous avons alors poussé vers le bureau ouvert le plus proche pour y arriver 5 minutes après sa fermeture et avons du poursuivre vers le suivant… Heureusement, ce quatrième était ouvert mais vu l’heure, les colis ne sont physiquement partis que le lendemain… pour arriver quelques jours plus tard chez tous nos généreux lecteurs 🎉️.
Et comme nous avons commandé à l’imprimeur un peu plus de livres que commandé sur la boutique, les prochaines commandes seront expédiées plus rapidement que les premières (merci à nos premiers lecteurs pour leur patience). Si vous voulez en profiter, on a prolongé la promo (-10%) pendant une semaine supplémentaire…
Si l’idée de libérer le PDF du livre vous plaît, n’hésitez pas à participer. Y compris en parlant du livre et du projet autour de vous car nos tentatives pour trouver des sponsors font pour l’instant chou blanc (les entreprises contactées n’ont pas donné suite, on doit mal les cibler ou mal nous y prendre).
Les bretons envoient des livres à France Identité
Arsouyes.org par le 31/10/2024 à 09:00:00 - Favoriser (lu/non lu)
Cette année encore, l’UBS [1] nous a fait l’honneur de nous (ré)inviter pour trois jours d’enseignements dans leur master CyberUS qui réuni une quarantaine d’étudiants venus des quatre coins du monde.
Les PDF des présentations sont en ligne [2] pour ceux que ça intéresse mais ils ne rendent pas justice aux nombreux échanges sur tous les sujets annexes que nous avons eu avec les étudiants. Il n’y a pas à dire, mais les cours sont vraiment plus intéressants et agréables lorsque les étudiants sont présents…
Hasard du calendrier, Le Parisien a eu besoin d’Aryliin pendant une de ses interventions et c’est donc Tbowan qui a pris sa place. Dans son article [3], Maëlane Loaëc est revenue sur la campagne de phishing qui cible France Identité en se demandant comment les escrocs avaient été capable d’usurper une adresse mail officielle… Divulgâchage : soit les serveurs mails des victimes ne vérifient rien (ce qui est de plus en plus rare), soit ils ont détourné un (web)service de France Identité à leur avantage.
Autre hasard du calendrier, les livres nous ont été livrés juste avant notre départ et nous avons pu les envoyer par la poste. Ça parait simple dit comme ça mais en vrai, notre bureau était fermé (horaires habituels) et nous nous sommes rendus à celui de la ville voisine, qui était en réparation jusqu’à mi novembre. Nous avons alors poussé vers le bureau ouvert le plus proche pour y arriver 5 minutes après sa fermeture et avons du poursuivre vers le suivant… Heureusement, ce quatrième était ouvert mais vu l’heure, les colis ne sont physiquement partis que le lendemain… pour arriver quelques jours plus tard chez tous nos généreux lecteurs 🎉️.
Et comme nous avons commandé à l’imprimeur un peu plus de livres que commandé sur la boutique, les prochaines commandes seront expédiées plus rapidement que les premières (merci à nos premiers lecteurs pour leur patience). Si vous voulez en profiter, on a prolongé la promo (-10%) pendant une semaine supplémentaire…
Si l’idée de libérer le PDF du livre vous plaît, n’hésitez pas à participer. Y compris en parlant du livre et du projet autour de vous car nos tentatives pour trouver des sponsors font pour l’instant chou blanc (les entreprises contactées n’ont pas donné suite, on doit mal les cibler ou mal nous y prendre).
Des shellcodes pour interdire des vidéos truquées sur telegram avec des fils
Arsouyes.org par le 27/09/2024 à 19:30:00 - Favoriser (lu/non lu)
C’est l’automne, il fait moins chaud mais encore assez pour les moustiques. Du coup, on s’est mis au tricot. (On fait les transitions qu’on peut). C’est super le tricot, c’est comme la méditation Zen, en pleine conscience de son ouvrage et on peut faire soi-même plein de trucs super utiles. Des écharpes (point mousse ou jersey), des bonnets, et même, des couvertures de livres (pour pas qu’ils refroidissent ?).

Et ça tombe bien, parce qu’on vient de recevoir nos premières impressions du livres (si c’est pas une super transition !!!). Bon, on va la renvoyer vers la BNF pour le dépôt légal, mais ça veut dire qu’on a passé commande des exemplaires en vente sur notre boutique 🎉️.
Notre premier sponsor a permis de libérer une première page de l’ebook. Page numérotée 1, c’est la 21ème du livre (les précédentes sont dans l’avant-propos) et elle ouvre la première partie « GNU/Linux ». L’information libérée n’est pas énorme mais c’est un premier pas.
En attendant de vous envoyer les versions imprimées (et la libération de la version électronique), on a écrit un article sur le makefile que nous avons utilisé tout au long de l’écriture et qui nous a bien aidé pour assembler, injecter et tester nos shellcodes.
La publication du livre avait éclipsé toutes les autres news mais nous continuons d’intervenir dans la presse (surtout aryliin).
Deep Fakes & Fishing. Dans le 20h de TF1, Mathilde Guénégan est revenue sur l’arnaque dont a été victime une femme persuadée d’avoir affaire avec Florent Pagny qui, une fois informé, a alerté publiquement contre ces pratiques. Comme toujours avec Internet, si vous voulez y croire, c’est plus sûrement faux.
Cryptographie & réseaux sociaux. Dans le journal d’arte, J. Bekrich est revenu sur la garde à vue du patron de Telegram en se demandant ce qui lui était reproché. En gros, un manque de coopération avec nos forces de l’ordre. (La vidéo n’est plus en ligne).
Sécurité filaire. Pour Libération, J. Torres s’est demandé pourquoi Kamala Harris fuyait les écouteurs sans fils (divulgâchage : pour réduire les risques d’écoute) et si nous devions faire pareil (divulgâchage : pas forcément).
Censure en ligne. Pour La Croix, Valentin Baudin s’est demandé comment les États mettaient en oeuvre les blocages de services en ligne et comment les contourner (Divulgâchage : du DNS).
Sur ce, il me reste 2 augmentations avant l’arrondi de l’épaule de la dernière manche, ensuite le col et je pourrai bâtir le pull…
Amusez-vous bien
Des shellcodes pour interdire des vidéos truquées sur telegram avec des fils
Arsouyes.org par le 27/09/2024 à 19:30:00 - Favoriser (lu/non lu)
C’est l’automne, il fait moins chaud mais encore assez pour les moustiques. Du coup, on s’est mis au tricot. (On fait les transitions qu’on peut). C’est super le tricot, c’est comme la méditation Zen, en pleine conscience de son ouvrage et on peut faire soi-même plein de trucs super utiles. Des écharpes (point mousse ou jersey), des bonnets, et même, des couvertures de livres (pour pas qu’ils refroidissent ?).

Et ça tombe bien, parce qu’on vient de recevoir nos premières impressions du livres (si c’est pas une super transition !!!). Bon, on va la renvoyer vers la BNF pour le dépôt légal, mais ça veut dire qu’on a passé commande des exemplaires en vente sur notre boutique 🎉️.
Notre premier sponsor a permis de libérer une première page de l’ebook. Page numérotée 1, c’est la 21ème du livre (les précédentes sont dans l’avant-propos) et elle ouvre la première partie « GNU/Linux ». L’information libérée n’est pas énorme mais c’est un premier pas.
En attendant de vous envoyer les versions imprimées (et la libération de la version électronique), on a écrit un article sur le makefile que nous avons utilisé tout au long de l’écriture et qui nous a bien aidé pour assembler, injecter et tester nos shellcodes.
La publication du livre avait éclipsé toutes les autres news mais nous continuons d’intervenir dans la presse (surtout aryliin).
Deep Fakes & Fishing. Dans le 20h de TF1, Mathilde Guénégan est revenue sur l’arnaque dont a été victime une femme persuadée d’avoir affaire avec Florent Pagny qui, une fois informé, a alerté publiquement contre ces pratiques. Comme toujours avec Internet, si vous voulez y croire, c’est plus sûrement faux.
Cryptographie & réseaux sociaux. Dans le journal d’arte, J. Bekrich est revenu sur la garde à vue du patron de Telegram en se demandant ce qui lui était reproché. En gros, un manque de coopération avec nos forces de l’ordre. (La vidéo n’est plus en ligne).
Sécurité filaire. Pour Libération, J. Torres s’est demandé pourquoi Kamala Harris fuyait les écouteurs sans fils (divulgâchage : pour réduire les risques d’écoute) et si nous devions faire pareil (divulgâchage : pas forcément).
Censure en ligne. Pour La Croix, Valentin Baudin s’est demandé comment les États mettaient en oeuvre les blocages de services en ligne et comment les contourner (Divulgâchage : du DNS).
Sur ce, il me reste 2 augmentations avant l’arrondi de l’épaule de la dernière manche, ensuite le col et je pourrai bâtir le pull…
Amusez-vous bien
Un makefile pour produire des shellcodes
Arsouyes.org par le 27/09/2024 à 11:00:00 - Favoriser (lu/non lu)
Divulgâchage : Plutôt que de se souvenir (et réécrire) les commandes nécessaires pour assembler et injecter les shellcode, pourquoi pas déléguer tout ça à un makefile ?
Pendant l’écriture du livre sur les shellcodes, nous en avons écrit beaucoup, dont plein de variantes différentes pour voir lesquelles seraient les plus pédagogiques et, bien sûr, nous avons du tester tout ça très régulièrement pour vérifier qu’ils fonctionnent effectivement comme prévu.
Le livre contient la démarche à suivre pour passer du code source des shellcodes à leur version injectable avec quelques commandes. Elles sont relativement simples mais c’est toujours plus agréable lorsque les tâches répétitives sont automatisées.
Et puisque le livre utilisait les outils de compilation classiques,
nous disposions de make
et sa capacité à produire des
fichiers pourvu qu’on lui fournisse les recettes à appliquer. Et comme
on a trouvé le résultat bien pratique bien pratique, on va voulu le
partager avec vous.
Pour commencer, on vous conseil de créer une première recette dans
votre fichier makefile
pour la cible all
comme
suit :
all:
Comme ça, vous savez qu’en lançant make sans argument, c’est cette cible qui sera construite. Si vous voulez qu’elle fasse quelque chose, vous pouvez lui ajouter une recette ou des dépendances ici ou plus loin dans le fichier.
Exemple de shellcode
Il y a plein de façons d’écrire des shellcodes. Certains auteurs vous les fournissent sous formes de chaînes de caractères (où ils sont exprimés en hexadécimal) et d’autres le font en assembleur (syntaxe Intel ou AT&T).
Dans notre livre, nous avons choisi de les écrire en assembleur (syntaxe AT&T) et d’afficher leur traduction hexadécimale en vis à vis (en commentaire). C’est plus pratique pour en parler et comprendre leur traduction en binaire.
Ce n’est sûrement pas le plus impressionnant de tous, mais voici ce
que ça donne avec arthurdent.s
, un shellcode qui
se termine avec un code d’erreur 42 (cf. page 44).
ArthurDent:
movabs $0x3c, %rax # 48 B8 3C 00 00 00 00 00 00 00
movabs $0x2a, %rdi # 48 BF 2a 00 00 00 00 00 00 00
syscall # 0F 05
Produire le fichier injectable
Via l’hexadécimal
L’avantage de mettre la traduction hexadécimal en commentaire, et
d’utiliser le caractère dièse pour ça, c’est qu’on peut extraire
l’hexadécimal automatiquement avec une règle sed
(cf. page 21) qu’on peut inscrire dans une recette générique
comme suit :
%.hex: %.s
's/.*#//p' $< > $@ sed -n
Cette règle dit qu’à partir de n’importe quel fichier se terminant
par .s
(nos codes assembleurs), on peut produire un même
fichier mais d’extension .hex
en utilisant la commande Bash
sur la ligne suivante.
Cette règle utilise deux variables automatiques de make :
$<
qui désigne la première dépendance de la règle (ici le fichier.s
),$@
qui désigne la cible (ici le fichier.hex
).
Une fois le code hexadécimal extrait du fichier, on peut le convertir
en binaire avec xxd
et, encore une fois, la recette s’écrit
simplement.
%.bin: %.hex
$< > $@ xxd -r -p
Avec ces deux règles, nous pouvons convertir simplement n’importe quel fichier source de nos shellcodes en fichier binaire injectable. Voici un exemple pour le shellcode d’exemple :
$ make arthurdent.bin
sed -n 's/.*#//p' arthurdent.s > arthurdent.hex
xxd -r -p arthurdent.hex > arthurdent.bin
rm arthurdent.hex
Lorsque nous avons demandé à make de produire le fichier, il s’est
débrouillé tout seul pour trouver et exécuter les recettes nécessaires
(sed
puis xxd
). Et comme il s’agit de règles
génériques, il supprime même les fichiers temporaires.
Via l’assembleur
Les deux recettes précédentes nécessitent qu’on ait fourni la traduction en hexadécimal mais comme on n’a pas toujours envie de faire ce travail, voici les deux recettes suivantes pour produire le shellcode directement à partir du code assembleur (cf. page 24).
%.o: %.s
$@ $^
as -o
%.raw: %.o
$< $@ objdump -j .text -O binary
La première recette produit un fichier objet contenant le code assemblé par gas et la seconde extrait le code des instructions pour produire un fichier injectable.
Nettoyer
Pour éviter de polluer le répertoire de travail avec tous ces
fichiers produits par nos recettes, nous ajoutons une recette de
nettoyage, traditionnellement appelée clean
comme
suit :
clean:
rm -f *.o *.raw *.hex *.bin
.PHONY: clean
Les deux premières lignes définissent la recette (supprimer les
fichiers d’après leurs extensions). La dernière ligne est un peu
spéciale, elle dit à make de considérer la cible comme n’étant pas un
fichier mais un simple mot clé (sans cette ligne, si vous créez un
fichier clean
plus récent que vos shellcodes, make
n’exécutera jamais le nettoyage).
Variante pour Windows
Pour rester au plus simple, le livre proposes d’utiliser WinLibs pour compiler les chargeurs et les shellcodes en gardant les mêmes outils (gcc, gas, objcopy, …). Les recette pour produire les shellcodes via l’assembleur restent compatibles mais celles via l’hexadécimal doivent être remplacées.
La commande PowerShell pour extraire l’hexadécimal (cf. page 196) ne peut pas être écrite directement dans le makefile car make n’aime pas PowerShell (qui le lui rend bien).
Nous l’avons donc écrite dans un fichier de script powershell
grepsed.ps1
en l’adaptant pour qu’il puisse prendre des
paramètre en ligne de commande.
Select-String -Path $args[0] -Pattern "#" `
| foreach-object {([string]$_).split("#")[1] } `
> $args[1]
De cette façon, la recette pour produire le fichier est exprimable avec make : elle lui dit de lancer powershell avec le script précédent.
%.hex: %.s
$< $@ powershell grepsed.ps1
La recette pour produire le fichier injectable à partir de
l’hexadécimal n’est pas compliquée, on remplace xxd
par
certutil.exe
en changeant quelques paramètres.
%.bin: %.hex
$< $@ certutil.exe -decodehex
Injecter automatiquement
Les règles précédentes sont largement suffisantes pour produire les fichiers injectables à partir des codes sources du livre. Mais quitte à en être ici, pourquoi ne pas automatiser aussi l’injection du shellcode ?
Compiler le chargeur
Pour pouvoir injecter le shellcode, il faut disposer d’un chargeur opérationnel. Les règles sont on ne peut plus classiques :
loader: loader.c
gcc -o loader loader.c
cleanall: clean
rm -f loader
.PHONY: cleanall
Exécuter le shellcode
Il nous reste à écrire des règles pour exécuter nos shellcodes en les injectant dans notre chargeur et ces recettes sont un peu particulières :
- Elles ne produiront pas de fichier, nous devrions donc en faire
dépendre
.PHONY
, - Les règles dont dépend
.PHONY
ne peuvent pas être génériques et cette solution ne marche donc pas…
Nous utilisons donc un
truc pour forcer make à exécuter ces recettes, qu’importe si un
fichier correspondant à la cible existe ou pas. Ce truc consiste à créer
une cible qui ne dépend de personne et n’a pas de recette (ici
.FORCE
) et d’en faire dépendre les recettes que nous
voulons forcer.
.FORCE:
%-bin: %.bin loader .FORCE
$<
./loader
%-raw: %.raw loader .FORCE
$< ./loader
Avec ces règles, on peut alors facilement relancer un shellcode lorsqu’on l’a mis à jour (ou lorsqu’on a mis à jours le chargeur) comme suit :
$ make arthurdent-bin
gcc -o loader loader.c
sed -n 's/.*#//p' arthurdent.s > arthurdent.hex
xxd -r -p arthurdent.hex > arthurdent.bin
./loader arthurdent.bin
make: *** [makefile:33 : arthurdent] Erreur 42
rm arthurdent.bin arthurdent.hex
L’erreur 42 en avant dernière règle est le comportement que nous attendions ici. Le shellcode a été exécuté par le chargeur et s’est terminé avec le statu 42. Cette commande ayant été lancée par make, c’est lui qui récupère le code de retour. Comme il est sensé le faire, il l’interprète comme une erreur et nous en informe (et c’est ce qu’on voulait).
Et après ?
Rien ne vous empêche d’adapter et d’étendre ce makefile
.
Personnellement, nous lui avons ajouté ces recettes.
%-gas: %.s .FORCE
$< -al -o /dev/null
as
%-objd: %.o .FORCE
$<
objdump -d
%-strace: % loader .FORCE
$< strace ./loader
Les deux premières affichent l‘assemblage fait par gas (cf. page 22) et le désassemblage fait par objdump (cf. page 23). La troisième n’est pas dans le livre, elle utilise strace pour afficher la liste des appels systèmes faits par le chargeur puis le shellcode (pratique pour les déboguer).
L’Art du Hacking - Les Shellcodes - Volume 1
Arsouyes.org par le 18/09/2024 à 19:30:00 - Favoriser (lu/non lu)
Ça y est, depuis le temps qu’on en parle (décembre 2023 tout de même), le premier volume des Shellcodes est parti à l’impression 🎉️. Merci à Selenith pour sa relecture attentive 😀️.
Édition Communautaire
-
Version reliée en édition limitée pour financer la version électronique. Les livres sont numérotés pour correspondre aux pages de l’ebook sur lesquelles nous ajouterons le nom, l’URL et le logo du sponsor.
Édition Basique
-
Pour tous ceux et celles qui voudraient simplement lire le livre au format papier, version brochée.
Édition électronique
-
Pour lire le contenu avant d’acheter le livre papier. Les pages seront diffusées au rytme des ventes.

L’Art du Hacking - Les Shellcodes - Volume 1
Arsouyes.org par le 18/09/2024 à 19:30:00 - Favoriser (lu/non lu)
Ça y est, depuis le temps qu’on en parle (décembre 2023 tout de même), le premier volume des Shellcodes est parti à l’impression 🎉️. Merci à Selenith pour sa relecture attentive 😀️.

Quintescence des programmes informatiques, les shellcodes sont des blocs de données qui peuvent être injectés dans d’autres programmes pour être exécutés directement par le processeur.
Ce livre est celui que nous aurions aimé pouvoir lire lorsque nous avons débuté notre voyage dans cette région du cyberespace. En nous concentrant sur les shellcodes et leur écriture, nous avon pu prendre le temps de les expliquer en profondeur.
Vous y trouverez les classiques du genres pour GNU/Linux et Windows 10, rénovés et remis aux technologies du jour ; processeur x86-64 et réseaux IPv6. Ainsi que de nombreuses variantes et nouveautés exclusives.
Version Communautaire
Pour soutenir les arsouyes, et la communauté en général, faites le choix de cette édition communautaire qui permettra, à terme, de libérer l’ebook au format creative commons.
Chacun des livres de cette édition limitée est numéroté pour correspondre aux pages de la version électronique. Les 398 livres reliés en circulation correspondent donc aux 398 pages de l’ebook. Une fois le stock épuisé, plus aucun exemplaire ne sera disponible à la vente chez les arsouyes.
Lors de votre achat, pour vous remercier de votre soutien, vous pourrez nous fournir un nom, une URL et un logo que nous ajouterons en bas de votre page qui sera ajoutée à l’ebook. Pour des exemples, voyez la version électronique disponible en bas de cette page.

Acheter l’édition communautaire
Nous libérerons les pages dans l’ordre mais si vous souhaitez sponsoriser une ou plusieurs pages en particulier, contactez-nous.
Version Basique
Pour tous ceux qui voudraient simplement lire le livre au format papier, nous vous proposons une version basique brochée.
Version Électronique
Et pour tous ceux qui voudraient lire le contenu avant d’acheter une version imprimée, nous vous proposons cette version électronique au format PDF.
Le contenu est fourni sous licence creative commons, CC by-nc-nd. Les pages seront diffusées au rythme des ventes de la version communautaire.

Les cyber triangles piquent dans les hôtels
Arsouyes.org par le 02/08/2024 à 16:30:00 - Favoriser (lu/non lu)
Un article sur le site. On avait effleuré le sujet dans notre précédent article sur le contrôle parental en expliquant qu’on ne peut pas sauver des enfants des dangers d’internet en utilisant une application de contrôle et de surveillance.
L’idée est en fait bien plus générale que ça : on ne peut par résoudre les problèmes des autres à leur place. Corollaire, personne ne peut résoudre vos problèmes à votre place. Il y en a qui ont essayé, ils ont eu des problèmes.
Un article dans la presse. Période estivale oblige, de nombreux vacanciers passeront quelques nuits dans des hôtels (ou assimilés). Cécile Moine a effectué une recherche sur les risques informatiques dans ces situations et produit un résumé assez juste (et je ne dis pas ça parce que j’ai été interviewé, bon ça joue forcément…)
Comme toujours, au delà du « comment c’est possible » (question passionnante avouons-le), il faut se demander « qui et pourquoi », car s’il n’y a personne ou aucun intérêt, le risque est forcément réduit.
Les cyber triangles piquent dans les hôtels
Arsouyes.org par le 02/08/2024 à 16:30:00 - Favoriser (lu/non lu)
Un article sur le site. On avait effleuré le sujet dans notre précédent article sur le contrôle parental en expliquant qu’on ne peut pas sauver des enfants des dangers d’internet en utilisant une application de contrôle et de surveillance.
L’idée est en fait bien plus générale que ça : on ne peut par résoudre les problèmes des autres à leur place. Corollaire, personne ne peut résoudre vos problèmes à votre place. Il y en a qui ont essayé, ils ont eu des problèmes.
Un article dans la presse. Période estivale oblige, de nombreux vacanciers passeront quelques nuits dans des hôtels (ou assimilés). Cécile Moine a effectué une recherche sur les risques informatiques dans ces situations et produit un résumé assez juste (et je ne dis pas ça parce que j’ai été interviewé, bon ça joue forcément…)
Comme toujours, au delà du « comment c’est possible » (question passionnante avouons-le), il faut se demander « qui et pourquoi », car s’il n’y a personne ou aucun intérêt, le risque est forcément réduit.
Cyber Karpman
Arsouyes.org par le 02/08/2024 à 11:00:00 - Favoriser (lu/non lu)
Divulgâchage : Grande figure de l’analyse transactionnelle, ce triangle peut se jouer en informatique. Des joueurs passionnés vous feront vivre des parties mémorables.
Aussi appelé triangle dramatique, ce jeu psychologique a été synthétisé par le psychiatre Stephen B. Karpman (duquel il tire son nom) en 1968 à partir des nombreuses variantes de jeux psychologiques identifiés à cette époque (Internet n’existait pas, il fallait bien s’occuper).
Dans ce jeu, les joueurs ont chacun un problème à résoudre. Mais comme ils préfèrent jouer, ils doivent éviter de le résoudre. Pour y arriver, ils vont endosser l’un des trois rôles suivants :
- La Victime : est dans l’incapacité de résoudre son problème. Ce n’est pas sa faute car les freins et blocages sont nombreux et insolubles (quand ils ne sont pas placés là par le persécuteur !). Elle réclame donc de l’aide extérieure.
- Le Sauveur : esquive son problème en s’occupant de celui de la victime. Ce rôle rapporte des Points (de valorisation sociale) et le sauveur a donc intérêt à se maintenir à ce poste le plus longtemps possible (en évitant de résoudre le problème).
- Le Persécuteur : utilise sa colère (et le côté sombre de la Force) pour manipuler la victime en espérant que ça résolve un problème (sans mettre fin au jeu, c’est donc un rôle difficile à tenir).
On peut théoriquement y jouer à trois mais c’est bien plus amusant à deux. Dans cette version, un rôle est donc vacant et va permettre à un joueur de l’occuper (en quittant son rôle précédent). Exemple classique : constatant que, malgré l’assistance d’un sauveur, le problème d’une victime n’avance pas, un des joueurs peut échanger sa place avec le persécuteur et reprocher à son partenaire de jeux son manque d’efficacité.
Ce changement de rôle est source de malaise pour le partenaire qui ne s’y attendait pas (et fait ainsi gagner des points bonus). Heureusement, il peut tenter de revenir au score en échangeant lui aussi son rôle avec celui laissé vacant. La partie se poursuit par une danse où chacun engrange des points au fil des rôles occupés et des changements. On a vu des joueurs professionnels particulièrement adroits effectuer des double-flip, changeant deux fois de rôles en une seule phrase.
Pour les championnats les plus prestigieux, les joueurs s’octroient des pauses régulières pour se reposer (certaines parties durent depuis plusieurs années). La tenue des scores devient un problème et l’aide de commissaires est alors sollicitée ; un prétexte pour introduire de nouveau joueurs dans l’arène et multiplier les parties.
Et comme vous allez le voir, ce jeu a été adapté à l’informatique et vous permettra de passer de grands moments ludiques avec vos amis, vos collègues et tous les cyber-joueurs qui s’y sont converti et n’attendent que vous pour une petite partie.
En sécurité informatique
S’il y a bien un domaine qui abuse du triangle, c’est bien la sécurité informatique. Prenez cette histoire de chapeaux et ses whites hats qui vous sauvent des black hats, ajoutez-y ces grey hats qui avouent alterner les rôles et vous avez tout dit…
Paradoxalement, les black hats jouent très mal au triangle. Ils endossent volontiers le rôle de persécuteur lors de leurs attaques informatiques. Mais une fois l’exploit réalisé, ils ont atteint leur objectif, résolu leur problème et mis fin à la partie. Sans marquer de points. Ce qui les obligent à trouver de nouveau partenaires de jeu.
Dans la même idée, les cyber-criminels y jouent aussi mal. Leur cryptage des fichiers par ransomware les places en persécuteur, force leurs victimes à trouver un sauveur. Si la rançon est payée, c’est eux et sinon c’est un prestataire qui endossera ce rôle mais dans les deux cas, leur partie est finie et ils doivent trouver un nouveau joueur.
Les premiers vrais joueurs se rencontrent chez les bug hunters. Le principe n’a l’air de rien : on leur a promis une récompense s’ils trouvaient une faille. Mais c’est du vent marketing car le client veut juste dire que sa sécurité est importante, sans y consacrer de ressources. Lorsqu’ils cherchent une faille, les bug hunters sont de fait des persécuteurs. Ils se présenteront comme sauveurs lorsqu’ils en trouveront une mais ça ne résout pas le problème de la victime qui va danser en prenant le rôle du persécuteur laissé vacant ; la faille est hors périmètre, a déjà été notifiée par un autre, ou son score CVSS est bien trop bas pour mériter une récompense. Le bug hunter devient alors une victime… D’où l’apparition des plateformes en ligne qui tiennent lieu de commissaire.
Mais les meilleurs équipes se trouvent chez les whites hats qui ont compris que pour gagner, il fallait régulièrement changer de rôle. Imitant les équipes de football américain, on y distingue deux escouades :
- La red team qui attaque. Ses pentesters et auditeurs ont pour but de trouver les failles dans la défense du client pour bien lui faire comprendre qu’il n’est pas au niveau et n’arrivera jamais à résoudre son problème de sécurité par lui-même.
- La blue team qui défend. Ses analystes et consultants prennent en main la sécurité du client à sa place à grand renforts d’outils intrusifs coûteux et autres contraintes organisationnelles. Car les points de valorisation sociales sont ici convertibles en euros.
L’art commercial consiste alors à alterner les escouades à bon escient. La red team effectue quelques piqûres de rappels régulières pour renforcer la dépendance du client à la blue team. Ça marche à moyen termes mais sur le long termes ça pose des problèmes.
Sur la durée, il arrivera que la blue team fasse une boulette. C’est humain, c’est inévitable, et c’est arrivé à crowdstrike qui a déployé un bogue chez ses clients ; et fait planter les systèmes qu’elle était sensé protéger. Le sauveur s’est transformé en persécuteur.
Mais il arrivera aussi qu’une véritable attaque réussisse. Après tout, un pirate n’a besoin d’avoir de la chance qu’une seule fois alors que la blue team doit en avoir à chaque fois. L’industriel ne peut pas admettre avoir échoué à sa mission et va donc proposer que sa red team effectue un audit pour déterminer les causes (lire : les responsabilités chez la victime) et axes d’amélioration (lire : opportunités de sauvetage commercial). Encore une fois, le sauveur se transforme en persécuteur.
Enfin, face aux échecs répétés, l’industriel peut perdre la confiance de son client qui va se tourner vers la concurrence. Celle-ci proposera alors un nouvel audit ayant pour but d’inventorier l’existant (lire : les défaillances de la précédente blue team). La victime se transforme en persécuteur (de l’industriel/sauveur qui, malgré lui, prend une position de victime). Cette distribution bizarre ne dure pas longtemps, le client reprend sa position de victime, le concurrent installe une nouvelle blue team pour le sauver et l’ancienne se trouve un nouveau client à sauver.
La solution est évidement d’internaliser la gestion de la sécurité mais il y a des pièges. Confier cette tâche à un RSSI (Responsable de la Sécurité des Systèmes d’Information) ne fait qu’internaliser le triangle. On confie alors le problème à un sauveur en considérant le reste de l’entreprise comme une victime. Et le jeu reprend de plus belles.
Le piège est identique avec la souveraineté numérique. L’idée de départ, reprendre le contrôle de son infrastructure, est trop souvent dévoyées pour remplacer des acteurs étrangers par des nationaux. Mais la nationalité des acteurs ne change rien à la forme de la relation qui reste un triangle.
La clé pour s’en sortir : chacun doit assurer sa propre sécurité.
En expertises civiles
Sans rien envier aux professionnels de la sécurité, on trouve aussi de très bons joueurs dans l’industrie informatique de manière générale. Un client a un problème informatique et a trouvé un prestataire pour s’en charger.
On a une bonne base pour jouer et il suffit d’un coup de pouce du destin pour démarrer la danse. Une sauvegarde qui échoue, un réseau ou une application qui marche pas ou encore un client qui ne paye pas. Des avocats ont appelé un juge qui nous a confié l’affaire avec pour mission d’y voir plus clair.
Dans beaucoup de cas, les parties cherchent, sincèrement, à (com)prendre leurs responsabilités et ont besoin que nous apportions un regard extérieur pour les y aider. Après avoir discuté avec les parties, étudié les pièces, fait quelques opérations techniques pour vérifier quelques hypothèses, le brouillard se lève suffisamment pour y voir assez clair et trouver un consensus. L’issue est alors le plus souvent amiable, les parties se quittent en relativement bon termes.
Mais dans certains cas, le prestataire devait implicitement sauver le client. Ils ont dansé un certain temps en accumulant les petites erreurs jusqu’à provoquer une avalanche qui a englouti le projet. Les parties en ont perdu le compte des points et nous demandent de rétablir le score.
Initialement, le client explique sa position de victime impuissante qui espérait que le prestataire le sauve. Face à l’insuccès qu’on constate, le client explique alors la faute du prestataire. L’argumentaire consiste principalement à dénigrer systématiquement le prestataire. Cette persécution ayant pour but d’obtenir réparation.
C’est au tour du prestataire de jouer. Il va prendre le rôle de victime laissé vacant par le client. Pour ça, il va d’abord lister les préjudices moraux et financiers subits. Puis, une fois le rôle endossé, expliquer que les problèmes qu’il a rencontré n’étaient pas de son fait. Ce n’est pas sa faute et il n’y est pour rien.
C’est alors au client de répondre. Continuer à dénigrer ne ferait que renforcer la position de victime du prestataire (et donc sa position de persécuteur), il change de stratégie, ou plutôt de rôle et se pose en sauveur. Il va alors lister tous les efforts consentis pour résoudre les problèmes rencontrés par son prestataire. Acomptes, délais, avenants, prêts de personnels,… il fait tout pour sauver le projet et le prestataire.
À ce stade de la partie, les rôles sont inversés. Mais le problème n’est pas résolu et la partie continue. Le client étant en sauveur, il n’a pas intérêt à bouger.
C’est donc le prestataire qui prend l’initiative. En position de victime, rien n’est de sa faute, c’est donc celle du client. Comment ? Il n’a pas respecté ses obligations de coopération. Il n’a pas fourni des équipements ou ressources nécessaires, il n’a pas répondu correctement aux sollicitations du prestataires, il a voulu changer des paramètres du projet, il n’a pas payé les acomptes,… Ce client est donc un très mauvais client.
Tout comme le prestataire l’a fait, le client passe alors en position de victime. Il a effectivement rencontré des problèmes, mais aucun n’est de sa faute. Il n’y pouvait rien si les ressources n’ont pas été disponibles, s’il a fallu du temps pour réunir les informations et corriger les spécifications.
Pour terminer, le prestataire peut alors lister tous les efforts qu’il a fait pour résoudre ces problèmes rencontrés par le client. La mise en place de ses propres ressources, les nombreuses relances et le référentiel documentaire (et contractuel). Il a objectivement tout fait pour sauver le projet et le client.
Et ça continue, encore et encore… Jusqu’à ce qu’on dépose notre rapport.
Attention au piège : Chaque fois qu’une partie prend position en victime d’un persécuteur, elle appelle l’expert à compléter le triangle en sauveur. Le but n’est pas de trouver la Vérité (ou un consensus) mais de recruter un joueur qui vienne danser avec eux.
En shitification
Pour les amateurs du triangle, de nombreuses plateformes ont été mises en ligne pour pouvoir y jouer partout où une connexion internet est disponible (e.g. dans l’auto, dans le salon, dans le chalet, dans les toilettes, dans le bureau,…).
On commence par des utilisateurs qui ont un problème qu’ils ne veulent pas résoudre par eux même et vont chercher un éditeur prêt à les sauver. De son côté, l’éditeur ne veut pas résoudre son problème mais rester en position de sauveur pour gagner des points puis les convertir en euros. Le triangle est donc en place et les joueurs vont pouvoir danser.
Mais quel seront leurs mouvements ?
- L’éditeur peut bombarder ses utilisateurs de messages non sollicités ou restreindre certaines fonctions de l’application (il persécute la victime). L’utilisateur paye alors un abonnement pour éviter ces publicités en espérant résoudre le problème de l’éditeur (le client sauve l’éditeur victime).
- Insatisfait du service fourni, Le client va dénigrer l’éditeur en espérant une réaction de sa part (il le persécute). Ça ne marche que si les utilisateurs sont initialement en position de sauver l’éditeur (i.e. ils payent un abonnement essentiel pour lui) car en laissant la place de sauveur vacante, l’éditeur peut s’y déplacer pour sauver les utilisateurs, victimes d’un choix stratégique de développement.
- Lorsque ça ne marche pas, les utilisateurs insatisfait se tournent vers d’autres applications similaires. Ils aduleront d’abord ce nouveau sauveur (surtout s’il a migré les données) mais finirons inévitablement par en être déçu et la danse reprendra.
Certains parlent d’emmerdification. D’abord les plateformes cherchent à satisfaire leurs utilisateurs. Puis elles s’en détournent pour satisfaire leurs partenaires (i.e. publicitaires ou fournisseurs). Puis s’en détournent pour satisfaire leurs actionnaires. La solution consisterait à rendre ces plateformes neutres et interopérables.
Personnellement, je n’y vois qu’une danse triangulaire : les plateformes prennent alternativement les rôles de sauveur, de persécuteur et de victime. Et la solution proposée n’en changera pas la forme car elle considère l’utilisateur incapable de se passer d’une plateforme pour résoudre son problème.
Prenons l’exemple du fediverse, une plateforme de réseau social qui respecte exactement ces principes de neutralité et d’interopérabilité. Si vous vous y rendez en espérant y être sauvé, vous y reproduirez la même danse. Vous trouverez que votre instance est mal administrée, que les modérateurs sont mauvais, que le logiciel n’est pas si bien conçu et autres défauts, bogues et pannes qui vous feront changer d’instance ou d’application. Et vous en reviendrez déçu.
Si vous avec un problème informatique, résolvez-le vous-même. C’est ce que nous avons fait ; on diffuse via notre propre site, on notifie avec notre flux RSS et on communique avec les courriels. Et on s’en porte que mieux.
En général
Si vous êtes joueurs, vous trouverez plein d’autres occasions de jouer. On ne va pas les lister toutes mais voici une petite liste si vous êtes en manque d’idées.
Installer un logiciel de contrôle parental : Les enfants victimes ont besoin d’un logiciel pour les sauver. Divulgâchage : ça marchera pas.
Installer un ENT à l’école : Les enfants, parents et enseignants ont besoin d’être sauvés par ce logiciel de messagerie tout en un. Conclusion, tout le monde est encore plus stressé.
Utiliser des IA: Nous serions trop occupés (ou incompétents) pour avoir de belles photos ou trouver nos réponses par nous-même. Heureusement, des IA sont là pour nous sauver.
Utiliser des frameworks : Les développeurs et administrateurs ont besoin de ces couches d’abstractions qui cachent les détails sous-jacent . Avantage : on peut toujours empiler des couches, mais ça fait que reporter le problème.
Software Supply Chain : Les entreprises exploitent des logiciels développés par des bénévoles puis s’offusquent des bogues. Bonus : npm et composer permettent d’automatiser la dépendance.
DOH - DNS via HTTP : Pour éviter que je sois victime d’espions et de DNS menteurs, Firefox me sauve en redirigeant toutes mes requêtes à Cloudflare… Du coup ça contourne mon bloqueur de publicité et j’ai du faire une configuration spécifique pour bloquer le DoH…
Et après ?
Cette grille de lecture triangulaire permet de reconnaître beaucoup de situations toxiques. Lorsque vous êtes confrontés à un logiciel, un service client ou un message marketing qui vous met mal à l’aise (ou en colère), il y a de fortes chances pour qu’il s’agisse d’un triangle déguisé. Pour s’en assurer, il suffit de chercher quel rôles sont en présence.
Et lorsque la grille s’applique, la solution est plutôt simple : faire un pas de côté pour quitter la danse, prendre une bonne respiration pour reprendre le contrôle et reconnaître à qui appartient le problème pour pouvoir y réagir efficacement.
Le contrôle parental bogue dans les aéroports
Arsouyes.org par le 20/07/2024 à 22:30:00 - Favoriser (lu/non lu)
C’est l’été et on pensait profiter que les enfants soient chez leurs grands parents pour avancer sur nos projets quand l’arrivée d’eau a eu une fuite… 2cm d’eau dans le garage. C’est pas comme si c’était arrivé il y a pile trois ans…
Une fois le bordel libéré, l’eau évacuée, la fuite réparée, j’ai pu finir cet article qui traîne dans ma tête depuis longtemps. J’avoue que l’actualité s’y prêtait puisque les Contrôles Parentaux doivent être pré-installés sur tous les équipements qui vont sur internet depuis le 13 juillet 2024…
Là où c’est devenu vraiment d’actualité, c’est lorsque Falcon, logiciel de Crowdstrike pour contrôler et surveiller l’usages des ordinateurs windows en entreprise (un contrôle parental de pro, donc), a eu un bogue et remis à la mode le bon vieux BSOD (il nous manquait)…
Je pourrais vous mettre plein de liens vers cet événement mais je vais odieusement préférer celui où aryliin est intervenue pour 20 minutes ;-)
Qu’en retenir ? Lorsque l’autorité décide de tout contrôler et surveiller, ça va dans le mur. Ha oui, et l’eau, ça mouille.
Le contrôle parental bogue dans les aéroports
Arsouyes.org par le 20/07/2024 à 22:30:00 - Favoriser (lu/non lu)
C’est l’été et on pensait profiter que les enfants soient chez leurs grands parents pour avancer sur nos projets quand l’arrivée d’eau a eu une fuite… 2cm d’eau dans le garage. C’est pas comme si c’était arrivé il y a pile trois ans…
Une fois le bordel libéré, l’eau évacuée, la fuite réparée, j’ai pu finir cet article qui traîne dans ma tête depuis longtemps. J’avoue que l’actualité s’y prêtait puisque les Contrôles Parentaux doivent être pré-installés sur tous les équipements qui vont sur internet depuis le 13 juillet 2024…
Là où c’est devenu vraiment d’actualité, c’est lorsque Falcon, logiciel de Crowdstrike pour contrôler et surveiller l’usages des ordinateurs windows en entreprise (un contrôle parental de pro, donc), a eu un bogue et remis à la mode le bon vieux BSOD (il nous manquait)…
Je pourrais vous mettre plein de liens vers cet événement mais je vais odieusement préférer celui où aryliin est intervenue pour 20 minutes ;-)
Qu’en retenir ? Lorsque l’autorité décide de tout contrôler et surveiller, ça va dans le mur. Ha oui, et l’eau, ça mouille.
Contrôle Parental
Arsouyes.org par le 20/07/2024 à 18:00:00 - Favoriser (lu/non lu)
Divulgâchage : Rien que l’aspect Karpmanien de la démarche aurait du suffire à disqualifier l’idée.
Avec nos interventions dans les écoles, nous sommes les premiers à le dire aux enfants : Internet est un endroit pas comme les autres. Avec ses règles et sa faune particulière, on y rencontre des dangers spécifiques qu’il faut pouvoir reconnaître pour s’y balader sans trop de problèmes.
Le problème, justement, c’est que beaucoup de parents n’ont pas appris à reconnaître ces dangers et se retrouvent désarmés face à leurs enfants qui, soudains, veulent un téléphone et aller sur Internet… Avec tout ce qu’on raconte, comment réagir ?
C’est ici que les logiciels de contrôle parental entrent en scène pour proposer la solution magique qui, pour moins d’un euro par jour, fera disparaître toutes vos angoisse. Confiez-leur vos enfants, ils seront en sécurité.
Ce n’était qu’une bonne petite blague marketing, comme celle des VPN, jusqu’à ce que notre cher gouvernement participe en forçant l’installation de ces logiciels sur les équipements mis sur le marché depuis le 13 juillet 2024.
Je ne parlerai pas du problème de distorsion de concurrence que ça induit. Pour les éditeurs propriétaires entre eux, et aussi vis à vis du monde libre. Parce que ça impliquerait que l’idée de base, à savoir installer un contrôle parental, soit bonne.
Quels dangers ?
Puisque le but, c’est de protéger des enfants des dangers d’internet,
encore faut-il savoir de quels dangers on parle… Dans sa plateforme
dédiée pour informer les parents (annoncée par une campagne de
marketing communication de nos ministres), l’État et ses
partenaires listent les deux grands dangers qui menacent la nouvelle
génération :
- Les écrans. Parce que les enfants les utilisent beaucoup et que c’est nouveau. Donc ça inquiète des parents. Donc c’est dangereux. Et surtout parce que ça permet de regarder de la pornographie.
- La pornographie. Parce que c’est mal (mais la majorité sexuelle à 15 ans, c’est bien).
Voilà voilà.
Si l’évidence de l’argumentaire officiel ne vous a pas frappé immédiatement, rappelez-vous que la paresse (ne rien faire devant un écran) et la luxure (le plaisir sexuel pour lui-même) sont des péchés capitaux.
De leurs côté, les éditeurs de ces logiciels ne s’embêtent même pas à justifier leurs fonctionnalités en listant les risques qu’ils sont sensés réduire. Leur argumentaire est d’une simplicité extrémiste : le contrôle et la surveillance, c’est bien.
Quelles solutions ?
On l’a divulgâché, ces logiciels font dans le contrôle et la surveillance des enfants. Pour leur bien.
Limites de temps. Vous réglez le temps maximal d’utilisation par jour (ou semaine) et l’application vous garanti que vos enfants ne puisse pas regarder l’écran au delà. Elle vous fait aussi des tableaux statistiques. Pour les amoureux de l’administration, vos enfants peuvent aussi compléter un formulaire d’octroi de temps que vous pouvez magnanimement accorder (ou refuser).
Bon, ça c’est quand ça marche. Parce que souvent les enfants finissent par trouver des astuces pour bloquer le chronomètre ou planter l’application et obtenir du temps gratuit. Et même si ça marche, ça ne compte pas le bilan de l’ensemble des écrans, les partages entre frères et sœurs ou entre amis (surtout ceux qui n’ont pas de contrôle), l’utilisation du compte de papa ou maman car son schéma est facile,…
Contrôle des applis. Vous réglez des paramètres d’autorisation et votre enfant ne peut installer et utiliser que les applications répondant au critère (en gros : PEGI et c’est à peu près tout).
C’est cette fonctionnalité uniquement que le gouvernement impose à partir du 13 juillet 2024 : ne pas pouvoir installer ou utiliser une application inadaptée à l’âge.
Encore une fois, ça c’est quand ça marche comme prévu. Il y a les détournements, les installations par d’autres canaux (téléchargement d’un APK), les applications déguisées, … Et est-ce qu’on vous a prévenu que les applications nocives (sites pornos et réseaux sociaux) sont en fait des sites internet accessibles via n’importe quel navigateur ? Et que contrôler les application n’a alors plus aucun sens…
Certaines applications proposent donc de contrôler également les sites web consultés. Mais ça ne marche qu’avec les navigateurs compatibles (un ou deux suivant l’application). Ceux dont l’employeur filtre les requêtes web le savent, ça peut pas tout savoir et donc tout bloquer.
D’ailleurs, on vous a dit que les jeunes ne vont pas sur le web pour voir du porno ? Ils en subissent avec les publicités ciblées (présentes dans toutes les applications) lorsque les autres utilisateurs (i.e. les parents) y ont montré un certain intérêt. Ou la reçoive par messagerie privée (i.e. Telegram, Signal, …) en provenance d’amis, ou de canaux spécifiques.
C’est ce genre de chose qui s’est passé pour Squid Game. Les enfants n’ont pas cherché à le regarder. Ce sont leurs amis ou leurs grands frères et grandes sœurs qui leur ont montré. Le contrôle parental n’a rien bloqué.
Surveillance. En plus des statistiques du téléphone, ces applications donnent accès à la messagerie (SMS), à certaines applications (ça dépend d’une appli à l’autre) et à la géolocalisation (avec en option des « barrières » où vous êtes appelés si le téléphone sort d’une zone).
Officiellement, le but est de pouvoir vérifier qu’un adolescent n’ait pas de comportement à risque (et ne fasse pas de mauvaises rencontres). Officieusement ça transforme le téléphone en Panoptique. Vous pouvez surveiller sans qu’ils ne sachent quand vous le faite (certaines applications ont même un mode « furtif »). Le stress induit chez les enfants est sensé renforcer leur respect de vos injonctions. Sans rentrer dans l’éthique de la chose (à chacun son style parental), sachez que ça ne marche que dans les prisons où les résident n’ont aucun espoir d’évasion (et encore).
Si on regarde l’actualité des mauvaises rencontre, on se rend compte que ces outils de surveillance n’ont aucune utilité. Lorsque Lina a été enlevée dans le Bas-Rhin, son téléphone a arrêté de borner (éteint ou cassé, il ne fonctionne plus). Dans une affaire qui nous a été confiée, le pédophile se faisait passer pour un adolescent et communiquait par snaps (ces messages s’effacent automatiquement et ne sont pas surveillés) puis rendait visite aux victimes chez elles lorsque leurs parents étaient absents (au travail).
Dans toutes ces affaires, ces formidables outils technologiques sensés améliorer la sécurité de nos enfants ont fait « pschit ».
Quels effets ?
Non seulement ces applications sont inefficaces, mais elles induisent des effets pervers.
Elles augmentent l’angoisse des parents. Car plus on reçoit d’information, plus notre cerveau en attend et plus il s’angoisse de ne pas en recevoir. Au lieu de réduire les angoisse des parents, ces applications l’augmente.
Mention spéciale pour le « bouton de panique » qui envoie un SOS aux parents ne contenant que la position GPS de l’enfant. Vous voilà informé et rassuré (ironie).
C’est exactement le même principe que pour les doppler fœtal à domicile. L’appareil se fixe au ventre d’une femme enceinte et lui permet d’entendre le cœur du fœtus. Sauf lorsqu’il est mal mis ou se déplace… la future mère peut alors entendre son propre cœur, ou ne rien entendre du tout (et paniquer).
Elles augmentent l’attrait de l’interdit. C’est un corolaire de l’Effet Streyssand. Plus on consacre d’énergie à interdire un contenu, plus on le rend visible et/ou désirable. Les adolescents vont alors déployer des trésors d’ingéniosité pour contourner ces applications et se réfugier dans des applications non surveillées. Ils prennent alors plus de risques (dont les mauvaises rencontres car c’est là que trainent le plus de prédateurs).
Dans de nombreuses situations que nous avons rencontrées, les enfants ont boudés une messagerie sous surveillance des adultes pour privilégier une version qui ne laissait pas de trace. C’est la surveillance des adultes qui nous a empêché de retrouver les preuves sur les portables des victimes.
Elles habituent au contrôle et à la surveillance. Comment voulez-vous que nos jeunes se prennent en main une fois adultes si, depuis tout petit, nous contrôlons et surveillons tout ce qu’ils font ? C’est particulièrement vrai chez les filles, culturellement éduquées à dépendre de leurs pères pour leur informatique et qui dépendront ensuite de leurs conjoints.
Certaines finissent par nous appeler car leur conjoint manipulateur a installé une application de contrôle et surveillance sur leur téléphone et elle ne savent plus comment sortir du piège (si vous êtes dans ce cas, allez sur echap.eu.org).
Mais de manière plus générale, ce genre d’application de contrôle et de surveillance est le graal de tous les régimes totalitaires. Et nous devrions habituer nos enfants à vivre dedans ? Il est peut être temps de reconnaître que conseiller l’installation d’un logiciel de contrôle et de surveillance, c’est faire le jeu des extrêmes.
Le contrôle parental des arsouyes
Comme vous vous en doutez, nous n’avons installé aucune application de contrôle parental à la maison. Ni sur les ordinateurs, ni sur les téléphones. Alors comment faisons-nous ?
Pas d’écran dans les chambres. Au début, on jouais en même temps qu’eux pour les accompagner. Avec le temps, ils gagnent en autonomie petit à petit. On joue plus forcément aux mêmes jeux et parfois, on lit pendant qu’ils jouent. Récemment, ils ont pu jouer (sans internet) pendant qu’on faisait une petite course dans le village. La confiance s’est construite sur la durée.
Limite de temps autonome. Ce sont les enfant qui gèrent leur quota d’écran. Nous avons fixé la valeur (et l’adaptons au besoin) et c’est eux qui choisissent comment ils le fractionnent, qui configurent leur minuterie et ils s’arrêtent lorsqu’elle sonne.
Mais comme ce sont des enfants, ils ne peuvent pas y arriver tout seuls dès le départ. Ils ont besoin de notre aide pour s’y tenir. Il faut prévenir (en leur demandant régulièrement le temps qu’il leur reste pour qu’ils n’aient pas une mauvaise surprise lorsqu’elle sonnera), accompagner (câlin et reformulation lorsque la frustration de s’arrêter est forte, elle est compréhensible) et renforcer les règles (e.g. éteindre au disjoncteur la première fois qu’ils n’ont pas voulu arrêter).
Il faut des efforts au début mais avec le temps ils sont de plus en plus autonomes et apprennent véritablement à gérer, eux-même, leur écrans.
Des anti-pub. Ce sont les seules mesures purement techniques. On a installé pfBlocker pour virer la publicité et les trackers de notre réseau (mais d’autres outils similaires existent, dont DNS66 installé sur tous nos téléphones pour les cas où nous sommes à l’extérieur). Et on complète par ublock origin sur firefox et des clones de youtube pour les androïds (i.e. newpipe). On s’amuse aussi à détecter les placements de produits dans les vidéos qu’on regarde avec les enfants (y compris dans les films).
Ce n’est pas parfait (mais le parent parfait est un mythe) et il manque plein de détails (dont la sensibilisation) mais ça marche.
Et après ?
Les logiciels de contrôle parentaux ne sont pas efficaces et ont des effets pervers qui empirent la situation. En vrai, vous n’en avez pas besoin et pouvez apprendre à vos enfants à s’en sortir sur internet par eux-même : cultiver leur auto-discipline et leur esprit critique.
Ça prend plus de temps qu’installer une application, mais au moins ça marche.
Comme pour toutes les applications, on aurait également pu étudier leur business model. Comment leurs éditeurs gagnent de l’argent ? Mis à part Google et Apple, les autres ont des modèles premium. C’est gratuit pour la base et payant « moins d’un euro par jours » pour la suite complète. Le modèle de financement par la publicité n’a pas de sens puisque ces applications se ventent d’être furtives (entre autre parce qu’elles se vendent aussi aux conjoints manipulateurs).
Le truc, c’est que le gouvernement n’a pas imposé uniquement l’installation d’un contrôle parental, mais également qu’il soit gratuit… Les fonctionnalités imposées sont faibles (pour l’instant) mais ça pose tout de même la question du financement de ces applications. Qui va payer, et surtout, pourquoi…
Et là, je ne peux pas m’empêcher de faire le lien avec la dernière loi d’orientation et de programmation du ministère de la justice (du 20 novembre 2023) qui proposait que des experts installent des mouchards et activent des téléphones à distances pour en extraire les données (mesure finalement censurée par le conseil constitutionnel). Techniquement, on avait du mal à voir comment procéder mais si un contrôle parental est présent par défaut, ça peut résoudre pas mal de problèmes.
La magie des mots
Arsouyes.org par le 06/05/2024 à 11:30:00 - Favoriser (lu/non lu)
Toute technologie suffisamment avancée est indiscernable de la magie.
1973, Arthur C. Clarke
Le propre de la magie, c’est qu’on ne la comprend pas. Le profane est complètement dépendant des professionnels (sorcières, magiciens, informaticiens et autres métiers en “tiens”). Son espérance dans leur compétence et leur honnèteté est un véritable acte de foi. Et comme pour toute religion, il y a des chacals et des fourbes [3]…
Première illustration chez Le Parisien où Inès Chaïeb a demandé à Aryliin son avis sur le dernier rapport de la commission écrans[1] et plus particulièrement sur Mastodon et Bluesky, cité par le rapport parmis les réseaux éthiques car ils sont “ouverts et décentralisés”.
Pour Mastodon, le logiciel de réseau social est libre et décentralisés à travers l’ensemble du fediverse ; chacun peut héberger son propre serveur (Mastodon ou un de snombreux autres compatibles avec activity pub, le protocole normalisé par le W3C). Mais s’il est à ce point mieux que les autres, pourquoi reste-il de niche ? Deux réponses. La première est que Mastodon (et le fédiverse en général) requiert un investissement personnel plus important que les autres plateformes car il faut d’abord comprendre cette histoire de fédération, puis celle d’instance, et enfin en choisir une (ou mieux, mais encore plus coûteux, d’installer la sienne). La seconde est que, comme pour les boites de nuit et les bars, les clients vont là où il y a de l’ambiance et tant qu’il y a moins de monde sur Mastodon, il y a moins de monde sur Mastodon.
Pour Bluesky (le rejeton de Twitter) ce n’est que du flou marketing. Côté open-source, sans rentrer dans les subtilités entre libre et à source ouvert, on note que seul le source du client est mis à disposition et pas celui du serveur (alors que c’est lui qui fait tout le boulot). Et côté décentralisé, même si le protocole (AT) est décrit, il n’est ni clair ni complet (i.e. des parties sont encore en work in progress). Et admettons que vous arriviez malgré tout à développer un serveur compatible, il ne pourra pas se fédérer avec ceux de Bluesky. L’ensemble du réseau Bluesky est donc sous l’autorité unique de Bluesky, dirigé par des anciens de Twitter.
Pour résumer, Bluesky décentralise au niveau technique mais conserve toute son autorité sur le réseau alors que Mastodon décentralise son fonctionnement jusqu’à sa gouvernance, chacun y est maître de son petit coin de cyberespace. On regrette que la commission écrans n’ait pas vu la différence.
Deuxième illustration, et sans vouloir tout transformer en compétition : Selenith nous a battu (et de loin) sur le sujet de la réparation à domicile. Nous avions économisé autour de 150€ en réparant notre imprimante (en improvisant avec un truc qui ressemble) [2], il en a économisé 15000€ avec sa pompe à chaleur (en lisant le manuel et en achentant la pièce détachée officielle) [3].
- https://www.arsouyes.org/articles/2023/2023-11-23_Obsolete_Myth/
- https://selenith.madyweb.net/articles/economiser-15000-euros-pompe-a-chaleur/
Comme nous le résumons souvent lors d’expertises informatiques civiles :
Que ça soit par incompétence ou par malice le résultat reste le même, on peut perdre beaucoup d’argent.
2024, Selenith [3]
La magie des mots
Arsouyes.org par le 06/05/2024 à 11:30:00 - Favoriser (lu/non lu)
Toute technologie suffisamment avancée est indiscernable de la magie.
1973, Arthur C. Clarke
Le propre de la magie, c’est qu’on ne la comprend pas. Le profane est complètement dépendant des professionnels (sorcières, magiciens, informaticiens et autres métiers en “tiens”). Son espérance dans leur compétence et leur honnèteté est un véritable acte de foi. Et comme pour toute religion, il y a des chacals et des fourbes [3]…
Première illustration chez Le Parisien où Inès Chaïeb a demandé à Aryliin son avis sur le dernier rapport de la commission écrans[1] et plus particulièrement sur Mastodon et Bluesky, cité par le rapport parmis les réseaux éthiques car ils sont “ouverts et décentralisés”.
Pour Mastodon, le logiciel de réseau social est libre et décentralisés à travers l’ensemble du fediverse ; chacun peut héberger son propre serveur (Mastodon ou un de snombreux autres compatibles avec activity pub, le protocole normalisé par le W3C). Mais s’il est à ce point mieux que les autres, pourquoi reste-il de niche ? Deux réponses. La première est que Mastodon (et le fédiverse en général) requiert un investissement personnel plus important que les autres plateformes car il faut d’abord comprendre cette histoire de fédération, puis celle d’instance, et enfin en choisir une (ou mieux, mais encore plus coûteux, d’installer la sienne). La seconde est que, comme pour les boites de nuit et les bars, les clients vont là où il y a de l’ambiance et tant qu’il y a moins de monde sur Mastodon, il y a moins de monde sur Mastodon.
Pour Bluesky (le rejeton de Twitter) ce n’est que du flou marketing. Côté open-source, sans rentrer dans les subtilités entre libre et à source ouvert, on note que seul le source du client est mis à disposition et pas celui du serveur (alors que c’est lui qui fait tout le boulot). Et côté décentralisé, même si le protocole (AT) est décrit, il n’est ni clair ni complet (i.e. des parties sont encore en work in progress). Et admettons que vous arriviez malgré tout à développer un serveur compatible, il ne pourra pas se fédérer avec ceux de Bluesky. L’ensemble du réseau Bluesky est donc sous l’autorité unique de Bluesky, dirigé par des anciens de Twitter.
Pour résumer, Bluesky décentralise au niveau technique mais conserve toute son autorité sur le réseau alors que Mastodon décentralise son fonctionnement jusqu’à sa gouvernance, chacun y est maître de son petit coin de cyberespace. On regrette que la commission écrans n’ait pas vu la différence.
Deuxième illustration, et sans vouloir tout transformer en compétition : Selenith nous a battu (et de loin) sur le sujet de la réparation à domicile. Nous avions économisé autour de 150€ en réparant notre imprimante (en improvisant avec un truc qui ressemble) [2], il en a économisé 15000€ avec sa pompe à chaleur (en lisant le manuel et en achentant la pièce détachée officielle) [3].
- https://www.arsouyes.org/articles/2023/2023-11-23_Obsolete_Myth/
- https://selenith.madyweb.net/articles/economiser-15000-euros-pompe-a-chaleur/
Comme nous le résumons souvent lors d’expertises informatiques civiles :
Que ça soit par incompétence ou par malice le résultat reste le même, on peut perdre beaucoup d’argent.
2024, Selenith [3]
Les robots ne savent pas compter
Arsouyes.org par le 29/04/2024 à 12:40:00 - Favoriser (lu/non lu)
Ça faisait un moment qu’on y réfléchissait et on a finalement pris le temps de nettoyer et ranger le [merveilleux] site des arsouyes. Au programme :
- Les news sont reportées sur le site (dans une zone pour elles),
- Les écrits du blog ont été répartis d’un côté dans des articles et de l’autre dans des news (lorsque ce n’étaient pas vraiment des articles),
- On a créé deux newsletters, une pour les francophone, une pour les anglophones,
- On a repris le flux RSS pour qu’il contienne les news (mais il ne contiendra plus les articles) et on a fait une version pour francopones et une pour anglophone.
Intervention sur TF1: Charles Diwo a demandé l’avis d’Aryliin sur les robots domestiques (surtout les aspirateurs). Pour faire simple: changer les mots de passes par défaut et si les vidéos (car oui, les aspirateurs filment votre quotidien) sont envoyée sur le serveur du fabricant, votre vie privée dépend de la sécurité du fabriquant (indice: pour lui, ce n’est qu’un coût).
Si vous vous demandez pourquoi ces robots filment votre intérieur, c’est assez vénal. Avec sa caméra, le robot peut cartographier votre logements et identifier la plupart des objets qui s’y trouvent (et à côté desquels ils se trouvent, et s’ils sont utilisés, et s’ils disparaissent,…). N’importe quel acteur économique (ou publicitaire) pourrait vendre son âme pour ces informations s’ils en avaient encore une.
Et en parlant de manipulation de l’opinion…
France Inter: suite à la publication d’un classement mondial des pays les moins sécurisés (et dans lequel le France est en quatrième position, 🎉️), ils se sont demandé si c’était vraiment le cas et nous les avons rassurés : ce n’est que du vent marketing pour faire peur, réagir et vendre. La seule information ici est qu’on a eu deux grosses fuites cette année (Viamedis et France Travail) mais tout le monde est déjà au courant. Du coup, pas d’article sur le sujet.
On aurait bien écrit un article sur ce genre de classement bidons, mais on aurait raconté la même chose que pour les pires mots de passes[2] : méfiez-vous des entreprises (surtout celles qui vendent des VPN). On notera le flou de vocabulaire entre une fuite (ce qui a été mesuré) et une compromission (ce qui a été suggéré) et l’opacité des sources de données et du protocole. Mention spéciale à nos hackers éthiques qui ont ont trouvé 83,6 milions de dates de naissance[3] (consulté le 26 avril 2024) pour une population de 68 milion de personnes.
Numérique et Éducation Nationale
Arsouyes.org par le 22/04/2024 à 11:32:00 - Favoriser (lu/non lu)
Contrairement au calendrier scolaire qui fait croire que l’Éducation a fait une pause de deux semaines en avril (décalée suivant vos zones), en fait, l’éducation ne s’arrête jamais…
Un autre Déni de Service à l’EN ? Au dernier moment pour poser leurs vœux d’orientation, de nombreux lycéens n’ont pu accéder à parcoursup. Le gouvernement ayant justifié avoir dimensionné les serveurs correctement, l’explication intuitive implique un méchant pirate (russe, forcément). La réalité est un peu plus complexe.
Tout d’abord, parlons mobiles. Nous ne doutons pas de l’intérêt qu’aurait Vladimir Poutine à nuire à la France mais nous avons un peu plus de mal à comprendre en quoi la panne temporaire du service d’orientation post-bac pourrait sérieusement mettre en péril l’avenir de la Nation. Après la panne temporaire du CNED pendant le COVID, il doit forcément s’agir d’un Grand Plan (ineffable).
La réponse est plus pragmatique. ParcoursSup fait partie de ces services qui ont une affluence variable. La solution consensuelle est d’utiliser une infrastructure adaptable en ajoutant et supprimant des serveurs pour répondre à la demande. Mais pour y arriver, il faut y consacrer beaucoup de ressources ; des cerveaux pour concevoir, tester et maintenir un tel système, et des serveurs prêts à l’emploi (qu’on loue donc très cher auprès de fournisseur “de cloud”). À contre-courant du Mythe, l’EN a choisi une solution classique avec une infrastructure fixe, capable de gérer la demande habituelle mais pas les pics d’affluence.
À l’approche de la date butoir, les lycéens ont afflué jusqu’à déborder les capacités du système. Ceux en surnombre n’ont pas pu soumettre leur vœux et sont revenu peu après, empirant la situation mais un débit minimal a été garanti pendant la période et seule une partie des lycéens s’est retrouvée, le lendemain, sans avoir pu soumettre leurs vœux et l’EN leur a accordé un nouveau délais pendant lequel ils ont pu, sans problème, soumettre leurs vœux. Fin de l’histoire.
Les ENTs à la radio. Faces aux fausses alertes dans les collèges et lycées, RCF s’est demandé comment mieux sécuriser ces ENTs pour éviter que ça ne se reproduise. En vrai, face au phishing, c’est comme pour tous les comptes en ligne, ça repose sur les utilisateurs qui doivent rester vigilants. Il faut donc les éduquer aux bonnes pratiques car les solutions technologiques ne font qu’ajouter des problèmes technologiques.
Particularité de pronote (l’ENT des collèges et lycées pour ceux qui n’ont pas d’ados à la maison), rajouter une double authentification est un non sens. D’un côté parce que les ados utilisent l’appli sur téléphone (seule manière d’avoir des notification et éviter de devoir s’y connecter toutes les 10 minutes pour voir si un prof n’a pas rajouté un devoir non prévu), et l’appli ne demande pas de mot de passe. De l’autre parce qu’une fois en classe, il faudrait que les élèves puissent utiliser leur téléphone pour accéder à leurs comptes…
En parlant du numérique en classe… Cyrille (de Restez-curieux.ovh) a publié son avis de professeur sur le déploiement de ces nouvelles technologies dans les écoles ; il faut éduquer au numérique et revenir aux bases. Rien à voir avec les arsouyes donc mais on est globalement d’accord avec lui alors on s’est dit qu’on allait partager le lien avec vous.
De notre côté, nous attendons que les heures de techno supprimées soient converties en heures d’éducation au numérique.
ENT, des faux avis avec ma main
Arsouyes.org par le 04/04/2024 à 11:45:00 - Favoriser (lu/non lu)
En plein dans la lecture de fichiers PDF pour des expertises civiles, on n’a pas produit d’article mais ça n’a pas empêché l’actualité de nous rattraper…
Les ENTs. Une première vague de fausses alertes terroristes avait déjà déferlé sur les ENT en septembre et comme nous l’avions plus ou moins prédit à l’époque, une seconde vague s’est de nouveau abattue 6 mois plus tard. Sauf que cette fois, les petits-malins ont aussi diffusé des vidéos choquantes…
- https://www.lefigaro.fr/conjoncture/ent-suspendues-combien-de-temps-faudra-t-il-pour-ameliorer-la-securite-des-plateformes-scolaires-20240329
- https://www.marianne.net/societe/terrorisme/messageries-suspendues-pourquoi-les-plateformes-ent-sont-si-vulnerables-aux-attaques-de-pirates
- https://www.liberation.fr/societe/education/menaces-terroristes-dans-les-etablissements-scolaires-comment-expliquer-le-piratage-des-ent-20240328_FRPS2XQZY5G3NIWF6P37T6BWA4/
- https://www.nouvelobs.com/societe/20240328.OBS86377/menaces-d-attentat-dans-les-lycees-ce-n-est-pas-tant-les-ent-que-ses-utilisateurs-qui-sont-vulnerables.html
Mais au delà des aspects techniques du “piratage” en lui même (du phishing, c’est pas comme s’ils avaient injecté un shellcode polymorphique dans un zéro day). On salue la décision pleine de bon sens du ministère de supprimer la messagerie des ENT. Preuve s’il y en avait besoin, que le [merveilleux] site des arsouyes influence jusque dans ces hautes sphères du pouvoir puisque notre dernier article [5] concluait par ces termes :
[…] Quand on leur dira que des maîtresses d’école ont besoin de communiquer avec des parents, ils échouerons à l’épreuve en modélisant un ENT mais réussirons en proposant une simple liste de diffusion. Points bonus pour ceux qui se rappelleront qu’un cahier de liaison existe déjà et permet, contrairement à l’informatique, de responsabiliser les enfants.
Si le ministère pouvait passer l’étape suivante et débranche entièrement les ENT (dont pronote), ça ne pourrait que faire du bien à tous les enfants et les personnels de l’Education Nationale.
Les faux avis. La technique est vieille comme le commerce ; si vous voulez vendre un produit, faites appel à un complice qui en dira du bien. Morris en avait fait un album en 1955 ; l’Elixir du Docteur Doxey. Sauf qu’avec les réseaux sociaux et les places de marchés, ça a pris des proportions industrielles…
- https://www.ouest-france.fr/faits-divers/arnaques/e-commerce-quand-les-avis-positifs-laisses-en-echange-de-cadeaux-faussent-la-donne-7ddd0e8c-e5e3-11ee-866f-a23d1e28d709
- https://www.tf1.fr/tf1/jt-20h/videos/abus-ils-ont-vendu-leur-avis-sur-internet-92331570.html
Identifier avec la main. Parmi les moyens d’authentification, la biométrie donne souvent l’impression d’avoir les meilleurs résultats mais le plus gros coût de mise en place (tout bon film de science fiction utilisera, à minima, un scan laser de la rétine). Ingénico (industriel des moyens de paiement) s’est dit, plutôt qu’une carte bancaire, si on reconnaissait la forme de la main, ou plutôt le tracé des vaisseaux sanguins…
Techniquement, la forme de la main a été piratée depuis un bon moment (mais reste utile dans des contextes où ça n’en vaut pas la peine, comme une cantine scolaire). La forme des vaisseaux sanguins l’a aussi été par le CCC en 2019. D’après ce qu’on a compris, ils vérifient maintenant que la main est vivante.
Ce système, comme tout système de reconnaissance biométrique, a des taux de faux négatif (vous n’êtes pas reconnu pour qui vous êtes) et de faux positifs (une authentification frauduleuse). Les techniques par reconnaissance des visages font l’objet d’évaluation par le NIST [9] et lorsqu’on fixe le taux de fraude à 1/1.000.000, on a des échecs d’authentification variables autour de 3/1000. Pour les mains, ingénico n’a pas communiqué sur les taux obtenus mais il faut les comparer à ceux des moyens actuels des paiements par carte bancaire : 3/10.000 de fraude lorsqu’on doit utiliser le code pin, 1/1 pour le sans contact. Donc même si une main n’est pas “aussi fiable que ça”, tant que c’est mieux qu’un code PIN, c’est toujours ça de pris.
Mais le vrai problème avec les méthodes biométriques, celui dont on parle peu dans ces discussions, c’est que si une base de donnée est corrompue, que la donnée d’authentification est cassée puis réutilisée, on ne peut pas changer notre corps aussi facilement qu’on change un mot de passe ou une clé cryptographique après une fuite. Que le CCC arrive à créer une nouvelle fausse main à partir de données présentes dans une base d’authentification (ou une base d’un hôpital), et toutes les personnes concernées devront payer des dizaines de milliers d’euros en chirurgie pour pouvoir continuer à utiliser le système… (On me souffle dans l’oreillette qu’un hématome redistribue les vaisseaux sanguins lors de sa résorption, un bon coup de maillet et quelques semaines d’arrêt maladie devrait pouvoir résoudre le problème).
Garder ses mains dans ses poches pourrait devenir un signe de résistance à l’oppression…
Ne suivez pas vos envies
Arsouyes.org par le 11/03/2024 à 11:30:00 - Favoriser (lu/non lu)
Cette édition fera date car pour la première fois, sous vos yeux ébaubis (j’aime ce mot), nous vous écrivons 10 jours après l’édition précédente et les infos partagent effectivement le même thème (j’avoue, c’est pas fait exprès).
Côté site web. Après une réunion pour organiser une compétition de judo ou le geek que je suis a du expliquer pourquoi, même si ils en avaient envie, il ne fallait pas informatiser la gestion des inscriptions et des poules, je me suis dit que ça pourrait vous intéresser aussi…
Côté presse, deux interventions autour de la fraude informatique.
Aryliin a été interrogée par Tanita Fallet pour Radio France au sujet du phishing et du piratage à destination des plus jeunes. Son conseil numéro 1 en toutes circonstances : si ça vous donne envie d’agir, c’est un red flag (vous êtes sûrement en train d’être manipulé).
Tbowan ne se souvient pas avoir été interrogé mais il apparaît sur le magazine de la Macif par Chut! sur le même sujet mais la citation est tout à fait réaliste (j’ai effectivement dit ces phrases à un journaliste il y a quelques temps). Sans surprise, mon conseil est le même que celui d’Aryliin : si ça vous hérisse, c’est un indisse (je fait les rimes que je veux).
Par contre, je décline toutes responsabilités concernant les VPN. J’ai déjà donné mon avis sur ce sujet…
Et comme toute bonne news-letter se doit de se terminer par un call-to-action : En lisant ce paragraphe, vous allez avoir une envie irrépressible d’acheter le dernier livre d’Aryliin (thriller technologique avec des vrais morceaux d’informatique dedans, entre autre les pages numérotées en hexa). Suivez mon conseil : cédez à cette envie ! (je fait les contradictions que je veux).
Et avant de clore, n’hésitez pas à participer à la discussion, entre autre sur les choix des mots, des rimes et les contradictions. On peut même envisager qu’Aryliin me confisque le clavier (ou pas).
L'informatique n'est pas la solution
Arsouyes.org par le 11/03/2024 à 11:00:00 - Favoriser (lu/non lu)
À propos du Sharenting
Arsouyes.org par le 01/03/2024 à 14:50:00 - Favoriser (lu/non lu)
IAs, ou pas
Arsouyes.org par le 29/01/2024 à 09:13:00 - Favoriser (lu/non lu)
Sans suivre du tout l’avis du vote, on a décidé d’avancer sur notre livre sur les shellcodes [1]. On doit bien avouer qu’écrire un livre, c’est comme un article de blog, mais en beaucoup plus complexe 😉.
Et c’est en se demandant comment une IA s’en serait sortie qu’on a trouvé qu’elles ne sont vraiment pas capables de faire des réponses correctes. Du coup on a documenté nos échange dans un nouvel article [2]. Bilan : si vous voulez être sûr de la réponse, faite appel à un expert sérieux du domaine.
On publiera sûrement un article sur le sharenting mais il faut qu’on le retravaille car le brouillons actuel est beaucoup trop long… (mais pas assez pour un livre).