Chronique de l’IA #3

Tandis que les scénaristes et les acteurs faisaient grève outre-Atlantique, le feuilleton de l'IA a continué comme jamais, nous assurant une distraction quotidienne à défaut de nouvelles séries de science-fiction.
Chronique de l'IA #3
Comme le lecteur pourra le constater, ces derniers mois ont apporté leur lot d'innovations techniques, mais aussi réglementaires. Plus que jamais, l'informatique devient un univers compliqué, où il est n'est plus seulement nécessaire de maîtriser la technique ; il faut de plus maîtriser les règles qui en contraignent l'emploi : celles relatives à la protection des données personnelles, à la sécurité, aux impacts environnementaux, et donc désormais aussi à l'intelligence artificielle.
NB : Ce billet a été rédigé mi-décembre par un humain et non une boîte de conserve, et sera publié dans Programmez! #261 de janvier 2024.
Continuer la lecture de "Chronique de l’IA #3"
Chronique de l’IA #3

Chronique de l’IA #2

Tout un été a passé depuis la dernière chronique de l'IA, mais sans trêve estivale ! En effet, l'actualité du domaine n'a qu'à peine marqué le pas, si bien qu'il faut de nouveau faire des choix déchirants pour retenir ce qu'il convient de mentionner sans fatiguer le lecteur.
Toutefois, puisque votre serviteur y a consacré un temps, il n'en réservera pas moins quelques lignes finales pour vous présenter une sélection draconienne de ressources si, comme lui, loin de vous contenter de regarder le DL se déployer partout, vous souhaitez comprendre un peu comment ça marche...
NB : Ce billet a été rédigé début octobre par un humain et non une boîte de conserve, et une version publiée dans Programmez! #260 de novembre 2023.
Continuer la lecture de "Chronique de l’IA #2"
Chronique de l’IA #2

Chronique de l’IA #1

Si un sujet occupe bien le devant de l'actualité technique, voire de l'actualité tout court, ce sont les progrès accomplis dans l'univers de l'IA, constellation ML, système DL, planète LLM notamment.
Difficile de s'y retrouver pour qui y pose le pied après à un premier contact avec ChatGPT. C'est que ladite planète est en ébullition ; le paysage y change du jour au lendemain. Dès lors, se refaire le film ne pourrait-il pas permettre de se donner quelques points de repère ? Cette petite chronique de temps récents tâchera de s'y employer.
NB : Ce billet a été rédigé en juin par un humain et non une boîte de conserve, et publié dans Programmez! #258 de juillet 2023.
Continuer la lecture de "Chronique de l’IA #1"
Chronique de l’IA #1

Contourner la protection « debugger » des sites de streaming

Certains sites de streaming trouvent malin d'interdire l'accès au débogueur de Firefox. Qui entreprend de l'activer se trouve confronté à un point d'arrêt sur exécution de l'instruction debugger, point d'arrêt qu'il est visiblement impossible de désactiver. Par exemple :
La protection "Mise en pause par l'instruction debugger" ("Paused on debugger statement" d'un site de streaming
Dans ces conditions, impossible d'accéder au moniteur Réseau du débogueur pour visualiser la requête à une playlist dont il serait possible d'utiliser l'URL pour télécharger la vidéo via un outil quelconque, notamment ffmpeg.
Heureusement, il existe une solution très simple pour y parvenir : prendre quelques minutes pour écrire une extension.
Continuer la lecture de "Contourner la protection « debugger » des sites de streaming"
Contourner la protection « debugger » des sites de streaming

Exporter le contenu binaire d’une réponse HTTP depuis Firefox

Lors de l'exploration d'un site, il peut être utile de sauvegarder le contenu d'une réponse à une requête HTTP. Le débogueur de Firefox apparaît alors comme l'outil tout indiqué. De fait, non seulement il se trouve immédiatement à disposition, mais il est de plus véritablement bien conçu. Entre autres, il comprend un moniteur Réseau qui permet de visualiser l'intégralité des requêtes formulées par le navigateur et les réponses reçues en retour.
Toutefois, le contenu de la réponse qu'il s'agit de sauvegarder peut consister non pas en texte, mais en binaire. Dans ces conditions, les fonctionnalités du moniteur Réseau ne sont pas suffisantes. En effet, s'il permet bien de consulter la réponse, il affiche cette dernière sous forme de texte, après donc une conversion des octets de la réponse qu'il est impossible de renverser.
Pas de panique, il existe des moyens pour s'en sortir !
Continuer la lecture de "Exporter le contenu binaire d’une réponse HTTP depuis Firefox"
Exporter le contenu binaire d’une réponse HTTP depuis Firefox

Mon aventure avec ChatGPT

A moins d'être benêt comme certains, l'utilisateur de ChatGPT comprend vite qu'il faut prendre le machin pour ce qu'il est, une machine qui génère du texte, et non pour ce que certains le vendent, une entité avec qui il serait possible de papoter. Seulement voilà : un machin qui génère du texte, c'est amusant, mais pour quoi en faire ? Et dans le cas présent, quoi en faire dans le domaine de la programmation ?
Question à son tour amusante, car dès lors, c'est un renversement de perspective qui s'opère. En effet, le produit d'Open AI n'apparaît pas comme un outil, que par définition il n'est intéressant d'utiliser qu'à condition de savoir à quoi il sert. A l'inverse, il apparaît comme un machin dont il est intéressant de chercher à faire un outil en l'utilisant pour trouver à quoi il sert. Le fait que le fonctionnement de ChatGPT soit si imprévisible qu'il est volontiers qualifié de boite noire vient rajouter du sel à l'exercice, car s'il a donc son petit caractère, on sent bien que cela ne va pas être simple de dompter le bestiau.
ChatGPT, l'I.A. qui a toujours raison
Bref, ChatGPT, on ne sait pas à quoi ça sert, et encore moins comment ça fonctionne, mais pour le développeur, c'est justement là que réside le fun. C'est que vu ainsi, utiliser ChatGPT permet de revivre une expérience similaire à celle de l'apprentissage de la programmation : on peut visiblement demander plein de choses amusantes à faire à la machine, et pour savoir ce qu'il est exactement possible en la matière, rien de mieux que de procéder d'emblée à des expérimentations ; par la suite, il sera toujours temps de tenter de rentrer dans les détails pour comprendre le pourquoi du comment, mais ce n'est pas un prérequis pour s'y mettre.
Partant, pourquoi ne pas chercher à l'utiliser pour créer un jeu ? Mon aventure avec ChatGPT relèvera donc un peu de la mise en abime : ce sera l'aventure de mon (jeu d')aventure avec ChatGPT, avant la dernière version qui repose sur GPT-4.
Continuer la lecture de "Mon aventure avec ChatGPT"
Mon aventure avec ChatGPT

ChatGPT est incontournable

Open AI
En consacrant quelques heures à peine à ChatGPT pour en tester les possibilités dans deux domaines qui n'ont strictement rien à voir (l'informatique avec la génération de code, la sociologie avec la génération d'une analyse des réponses à un questionnaire), j'ai été fasciné par les résultats qu'il est possible d'en tirer.
Sans doute, il faut exercer sa vigilance sur ces résultats. Mais que de temps gagné pour du moins disposer d'une solide base de travail ! C'est tout particulièrement vrai pour ce qui concerne le code, comme le montre ici, dans de multiples cas, le toujours très pédagogue Mosh Hamedani, ou encore ici, dans le cas d'une application, le non moins pédagogue Nick White.
Mise à jour du 22/02/2023 : Petite précision apportée sur ma référence à la citation de The King's Speech pour échapper à la confusion du moment, nombre d'utilisateurs de ChatGPT, mais plus encore de Bing, ayant sombré dans l'anthropomorphisme, et condamnant ces outils à ce titre.
Mise à jour du 15/02/2023 : L'exemple de mon jeu d'aventure peut induire en erreur, parce que ChatGPT a généré un programme entier. Je précise qu'il ne faut pas s'attendre à ce que l'outil fasse ainsi tout à votre place. Je reviendrai sur ce sujet en poussant plus loin cet exemple dans un prochain article. En attendant, n'oubliez pas de tester ChatGPT !
Continuer la lecture de "ChatGPT est incontournable"
ChatGPT est incontournable

Le monde interlope du hacking

Après avoir acquis un bon socle de connaissances techniques en matière d'exploitation des failles diverses et variées en se classant dans le Top 100 de Root Me, pourquoi ne pas continuer cette exploration de l'univers du hacking par une série de lectures sur ceux qui le peuplent, à commencer par ceux qui sont présentés ou qui se présentent comme des hackers ? Après tout, il est toujours bon d'en savoir sur là où l'on met les pieds.
Quelques recherches sur le Ouèbe permettent d'identifier rapidement nombre de livres, d'articles, de podcasts et autres vidéos recommandés pour acquérir quelques repères, et même une vraie connaissance de ce monde-là. Reste à faire le tri pour savoir à quoi il convient de consacrer un temps précieux... La sélection suivante résulte de ces lectures, écoutes et visionnages durant deux mois d'été. Elle sera enrichie au fil des découvertes faites par la suite.
Livres sur le hacking
S'agissant d'une sélection, je me contente de préciser sur quoi porte la source que je recommande, sans préciser pourquoi je la recommande : si elle a été sélectionnée, c'est qu'elle est recommandée ! Et qu'on ne se méprenne pas, aucune de ces sources n'est exclusive d'une autre. Autrement dit, il faut les lire, écouter et regarder toutes !
Mise à jour du 02/03/2023 : Lecture faite de Sandworm: A New Era of Cyberwar and the Hunt for the Kremlin's Most Dangerous Hackers et Tracers in the Dark: The Global Hunt for the Crime Lords of Cryptocurrency d'Andy Greenberg - un journaliste, mais un vrai, donc pas français -, dont je n'ai pas encore fait ici la revue, je recommanderais plutôt la lecture de ces deux excellents ouvrages que celui de Nicole Perlroth, qui m'avait bien plu avant que je ne les découvre, mais qui m'apparaît rétrospectivement comme trop emprunter au premier ainsi qu'à l'ouvrage de Fred Kaplan, dont j'ai fait ici la revue, sans apporter grand-chose de nouveau...
Mise à jour du 07/09/2022 : Ajout d'une présentation de Dark Territory: The Secret History of Cyber War par Fred Kaplan (2016).
Continuer la lecture de "Le monde interlope du hacking"
Le monde interlope du hacking

La blockchain de Bitcoin, version hardcode

Ce n'est pas que ce soit très réjouissant quand on connaît la vanité de la spéculation et le désastre écologique qu'il entraîne, mais il faut bien s'intéresser à Bitcoin, ne serait-ce que pour comprendre en quoi consiste concrètement le concept de blockchain dont on nous rebat les oreilles matins et soirs.
Les structures de la blockchain de Bitcoin
Tout le problème pour le développeur, c'est de savoir par quel bout le prendre. C'est que si l'on parle ici de Bitcoin, et non du Bitcoin, c'est bien parce qu'une particularité de la chose, c'est d'être un système avant d'être une cryptomonnaie, que l'on pressent un peu du genre un peu l'oeuf qui fait la poule qui fait l'oeuf, qui plus est. Dès lors, quel est le bon point d'entrée dans ce dernier ?
On trouve pléthore de présentation de Bitcoin sur le Web comme en librairie. Le problème, c'est que leur lecture laisse assez inévitablement le développeur sur le sentiment qu'il n'est pas allé au fond des choses. En fait, pour bien comprendre de quoi il en retourne, l'animal sent bien qu'il faudrait qu'il plonge sa truffe dans les entrailles, manière de dire qu'il faudrait tout simplement prendre un bloc sous sa forme la plus brute, et le disséquer pour comprendre comment il a été produit et inscrit dans la blockchain.
Telle est la démarche adoptée ici. Il s'agit de programmer en Python de quoi désérialiser un bloc existant et valider une transaction qu'il contient. Dans un premier temps, le bloc choisi est le premier bloc, dit "Genesis", car le bon sens impose de partir de celui-là pour comprendre en quoi un bloc consiste. Dans un second temps, le bloc choisi est le 170, car c'est le premier qui contient une transaction véritable - au sens d'un transfert de BTC -, si bien que le bon sens impose de le choisir pour valider une transaction.
Il n'est donc pas question de couvrir le minage, et donc la résolution élégante du problème des généraux byzantins à laquelle est parvenue Satoshi Nakamoto qui constitue la principale innovation de Bitcoin. Encore une fois, l'objectif de cet article reste bien modeste : ce n'est pas de faire comprendre le système Bitcoin, mais de faire comprendre la blockchain de Bitcoin, de la manière la plus efficiente possible pour un développeur.
Continuer la lecture de "La blockchain de Bitcoin, version hardcode"
La blockchain de Bitcoin, version hardcode

Chaîner les promesses en JavaScript

Comme cela a été expliqué dans cet article, l'intérêt des promesses en JavaScript, c'est de permettre au développeur de pratiquer l'asycnhronisme sans tomber dans le "callback hell".
Pour autant, cela suppose de bien comprendre le fonctionnement de ce mécanisme alternatif, tout particulièrement cet aspect essentiel qu'est l'enchaînement, ou le chaînage, de promesses.
Pratique du chaînage de promesses en JavaScript
En cette matière, un examen trop superficiel du mécanisme peut conduire à s'en faire une idée fausse, et de là mal pratiquer le chaînage de promesses via .then () et .catch ().
Pour vous permettre d'honorer vos promesses, voici quelques éclaircissements pratiques...
Continuer la lecture de "Chaîner les promesses en JavaScript"
Chaîner les promesses en JavaScript