-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.json
1 lines (1 loc) · 103 KB
/
index.json
1
[{"content":"Trier des images pour les classer en dégradé de couleur, voilà quelque chose qui paraît trivial et sans intérêt au premier abord, et si c\u0026rsquo;était en réalité beaucoup plus difficle et intéressant que ça ? Le code en Python est disponible sur mon Github.\nUn feed Instagram pas comme les autres # Le feed est l\u0026rsquo;ensemble des publications d\u0026rsquo;un compte Instagram, c\u0026rsquo;est là où sont regroupées toutes vos photos, vos réels etc\u0026hellip; C\u0026rsquo;est la partie visible du compte, il doit être le plus attirant possible afin de susciter de l\u0026rsquo;engagement.\nJe discutais avec une amie à propos de mon bot Instagram, @archie_the_aesthete, qui ne trouve pas son public (d\u0026rsquo;ailleurs si vous voulez savoir comment je l\u0026rsquo;ai créé, je vous invite à lire mon article à ce propos : J\u0026rsquo;ai créé un bot Instagram 100% légal et totalement automatisé). Selon elle, le principal défaut de mon bot est qu\u0026rsquo;il n\u0026rsquo;a pas un beau feed. Pour illustrer l\u0026rsquo;importance de ce critère, elle me fait découvrir le compte Insta de @charlie__danger, tout en se demandant comment cette créatrice peut faire pour arriver à un tel résultat. Je vous invite d\u0026rsquo;ailleurs à suivre cette personne sur Youtube si vous aimez l\u0026rsquo;Archéologie et l\u0026rsquo;Histoire.\nUne partie du feed Instagram de Charlie Danger, une créatrice de contenu sur internet. En haut à gauche les photos les plus récentes, en bas à droite les plus anciennes. J\u0026rsquo;émets alors l\u0026rsquo;hypothèse d\u0026rsquo;un algorithme qui classerait les images, tout en imaginant les grandes ligne du programme. Je lui indique alors que cela ne me semble pas compliqué au premier abord (quelle erreur à posteriori !) et que je pourrais même le développer pour elle. Je n\u0026rsquo;imaginais pas tout ce qui se cachait derrière\u0026hellip;\nUne approche bien trop naïve # La première étape est d\u0026rsquo;extraire, pour chaque image, les informations permettant de savoir si elle est plutôt bleue, verte ou jaune. J\u0026rsquo;ai tout d\u0026rsquo;abord pensé à extraire la couleur moyenne de chaque image, je suis tombé sur cette question Stackoverflow : How to find the average colour of an image in Python with OpenCV?. Là-bas, un utilisateur visiblement bien plus callé en imagerie que moi conseille plutôt d\u0026rsquo;utiliser les couleurs dominantes plutôt que la couleur moyenne. Pourquoi ? Car la couleur moyenne ne fait pas resortir les dominantes de couleurs que l\u0026rsquo;humain voit, or, c\u0026rsquo;est justement ce que je recherche ici ; créer de la cohérence pour l\u0026rsquo;oeil humain.\nIl explique et illustre le concept de couleur dominante d\u0026rsquo;une image dont voici une traduction en français (reponse de Tonechas sur le post Stackoverflow, je vous invite à lire sa réponse si le sujet vous intéresse, c\u0026rsquo;est très bien détaillé) :\nUne image de Légo avec une dominante rouge. Voyons comment se présentent ces couleurs pour mieux comprendre les différences entre les deux approches. Dans la partie gauche de la figure ci-dessous est affichée la couleur moyenne. Il apparaît clairement que la couleur moyenne calculée ne décrit pas correctement le contenu en couleur de l'image originale. En fait, il n'y a pas un seul pixel avec cette couleur dans l'image originale. La partie droite de la figure montre les cinq couleurs les plus représentatives triées de haut en bas par ordre décroissant d'importance (fréquence d'apparition). Cette palette met en évidence que la couleur dominante est le rouge, ce qui est cohérent avec le fait que la plus grande région de couleur uniforme dans l'image originale correspond à la pièce de Lego rouge. Résultat du calcul couleur moyenne (gauche) VS couleurs dominantes (droite). Du calcul de \u0026ldquo;K-means clustering\u0026rdquo; # Théorie # Une méthode pour calculer les couleurs dominantes est le K-means clustering, ou K-moyennes en français. Je ne vais pas rentrer dans les détails de cette méthode, déjà car je ne suis pas compétent, mais également car ça n\u0026rsquo;est pas le sujet de l\u0026rsquo;article. Je vous invite à consulter cette page : Wikipédia - k-means clustering si le sujet vous intéresse (la page en anglais est plus complète que celle en français). Car une illustration vaut plus que mille mots, ce gif devrait vous aider à sentir ce que permet de faire le k-mean-clustering.\nLes informations ci-dessous peuvent être imprécises ou fausses. Pour plus d\u0026rsquo;information, consultez Wikipédia - k-means clustering. Cette animation ci-dessous montre qu\u0026rsquo;au fur et à mesure des itérations, nos 3 points noirs se rapprochent de ce qui semble être 3 points moyens de nos 3 sous-ensembles (rouge, jaune et bleu), on appelle ça les centres de cluster, ou centroïdes de cluster. C\u0026rsquo;est ce qu\u0026rsquo;on appelle la convergence des k-moyennes. Ici, on a définit arbitrairement qu\u0026rsquo;il nous fallait découper tous nos points en 3 sous-ensemble, ça aurait pu être 4, 2, 37\u0026hellip; On a aussi définit arbitrairement qu\u0026rsquo;il fallait itérer (faire le calcul) 14 fois, plus on met d\u0026rsquo;itération et plus on se rapproche de la véritable moyenne (mais plus les calculs sont longs). L\u0026rsquo;idée étant de tendre vers k points (ici 3) qui sont au plus proches de tous les autres points du sous-ensemble. Ce faisant, on partitionne nos données en k-ensemble.\nAnimation qui montre la convergence de 3 centroïdes de cluster sur cet ensemble de données au fur et à mesure des itérations (calculs de distance). Ce qu\u0026rsquo;il faut retenir ici, c\u0026rsquo;est que cette méthode nous permet d\u0026rsquo;obtenir les k-premières couleurs dominantes d\u0026rsquo;une image. Pratique avec exemples # J\u0026rsquo;ai choisi de régler mon calcul des k-moyennes de sorte à trouver les 5 couleurs dominantes en 300 itérations (valeur par défaut). Peut-être que ces paramètres ne sont pas optimaux en terme de performance (on verra plus bas que ce sont ces calculs qui ralentissent mon programme), mais pour le moment ils me suffisent à produire un résultat satisfaisant.\nVoici plusieurs exemples pour se convaincre que cette méthode produit des résultats intéressants, sous chaque image vous avez les 5 couleurs dominantes produites à partir de la méthodes des k-means clustering, plus la couleur est dominante, plus le rectangle associé est grand :\n4 exemples de l'extraction des 5 couleurs dominantes d'une image avec la méthode des k-means clustering. Le tri : encore une approche naïve # Maintenant que je suis parvenu à isoler les couleurs dominantes de mes images, il faut les classer pour obtenir un dégradé de couleur. J\u0026rsquo;ai donc créé une structure de donnée qui se présente comme suit :\n{ \u0026#39;image1.jpg\u0026#39;: [ [pourcentage_couleur1, R, G, B], [pourcentage_couleur2, R, G, B], [pourcentage_couleur3, R, G, B], [pourcentage_couleur4, R, G, B], [pourcentage_couleur5, R, G, B] ], \u0026#39;image2.png\u0026#39;:[ [pourcentage_couleur1, R, G, B], [pourcentage_couleur2, R, G, B], [pourcentage_couleur3, R, G, B], [pourcentage_couleur4, R, G, B], [pourcentage_couleur5, R, G, B] ], ... } Chaque image est indexée par son nom et comporte ses données associées. Il reste ensuite à les classer. Ma première apprcoche fut la suivante :\nprendre la première couleur dominante de ma première image dans ma structure parcourir toutes les autres images et trouver celle qui a la couleur dominante la plus proche de mon image courante sauvegarder cette seconde image comme étant la plus proche de ma première supprimer cette image de ma structure de donnée recommencer jusqu\u0026rsquo;à ce qu\u0026rsquo;il n\u0026rsquo;y ait plus d\u0026rsquo;image dans ma structure de donnée Vous avez dit une couleur proche ? # parcourir toutes les autres images et trouver celle qui a la couleur dominante la plus proche de mon image courante Comment faire ça ? Une approche intuitive serait de calculer la distance entre 2 couleurs. Une couleur peut être représentée par 3 entiers : sa composante rouge, verte et bleue, allant de 0 à 255. C\u0026rsquo;est ce qu\u0026rsquo;on appelle le RGB. On peut donc représenter une couleur comme étant un point dans un espace en 3 dimensions. Un bleu foncé aura cette représentation RGB :\nred: 0, green: 18:, blue: 101 ce qui donne cette couleur : A noter qu\u0026rsquo;il existe d\u0026rsquo;autres représentation des couleurs, comme HSL ou CIELAB par exemple. Pour plus d\u0026rsquo;information, je vous invite à consulter cette page Wikipédia : Espace de couleur. Puisqu\u0026rsquo;une couleur est un point, on peut calculer une distance entre deux points. Pour cela rien de plus simple ; soient deux couleurs c1 et c2 avec pour coordonnées respectivement rc1, gc1, bc1 et rc2, gc2, bc2, alors la distance entre ces deux couleurs se calcule comme étant :\ndistance = (r, g, b) distance = (rc2-rc1, gc2-gc1, bc2-bc1) Une distance étant toujours positive, je fais passer mes trois composantes dans la fonction valeur absolue. Pour rappel : valeur_absolue(-3) = 3 et valeur_absolue(5) = 5. Je fais cela pour toutes mes images et je sélectionne l\u0026rsquo;image qui a la distance la plus courte par rapport à l\u0026rsquo;image que je souhaite classer.\nJ\u0026rsquo;ai vite observé que cette méthode de calcul de distance ne fonctionnait pas. Le défaut est qu\u0026rsquo;on ne s\u0026rsquo;intéresse qu\u0026rsquo;à la couleur la plus dominante. Si on calcule la moyenne pondérée (rappelez-vous, on dispose également du pourcentage de chaque couleur dominante) des 5 couleurs dominantes de l\u0026rsquo;image et qu\u0026rsquo;on calcule ensuite la distance, l\u0026rsquo;algorithme sort un tris intéressant :\nComparatif de tris entre la méthode de calcul de distance à partir de la couleur dominante (gauche) et la méthode de la moyenne pondérée des couleurs dominantes (droite). Le tris : pas si simple qu\u0026rsquo;il n\u0026rsquo;y paraît # Le résultat commence à prendre forme mais il y a encore un problème : plus on approche de la fin et moins les images semblent triées. Cela est dû au fait que plus on approche de la fin : plus le choix restant dans les images est limité. Rappelez-vous : on supprime au fur et à mesure les images triées de notre structure de donnée. Pour autant, on ne peut pas laisser les images triées dans notre structure, on tournerait en rond\u0026hellip;\nSecond problème, les images ne sont pas vraiment regroupées par couleurs. Ou plutôt, elles ne sont pas regroupées totalement par couleur. On l\u0026rsquo;observe déjà sur la partie droite de l\u0026rsquo;image précédente : on commence par les bleues, suivent les jaunes, puis de nouveau quelques bleues.\nTroisième problème, et pas des moindres, ce que j\u0026rsquo;appelle des divergences locales. Pour illustrer cette idée : regardons le tris produit ci-dessous sur une population plus importante d\u0026rsquo;images.\nIllustration des \"divergences locales\", entourées en orange. On observe quelques incohérences, j\u0026rsquo;en ai encadré certaines. Mon hypothèse est que cela est dû à une divergence du tris, je m\u0026rsquo;explique. Posons six images : A, B, C, D, E et F. Posons que A, B, C et D soient globalement vertes-bleues, et E bleue-jaune (elle apparaîtra donc verte puisqu\u0026rsquo;on va faire une moyenne) et F jaune. On peut supposer que notre algorithme fasse ce tris :\nA ce moment, on observe bien une divergence à partir de C en direction du vert puis du jaune, avant de retourner au bleu plus foncé qui avait été ignoré. A noter que ce problème est différent que le premier énoncé. En effet, il peut rester suffisement d\u0026rsquo;images après D et une divergence pourra quand même se produire, c\u0026rsquo;est ce qu\u0026rsquo;on observe sur l\u0026rsquo;image avec les encadrés oranges. Cela produira nécessairement une rupture dans notre dégradé alors qu\u0026rsquo;une meilleure solution est possible.\nUn problème sans solution # Alors je me suis creusé la tête pendant longtemps pour trouver une solution à ce problème. Plus je creusais et plus cela me semblait difficile\u0026hellip; J\u0026rsquo;ai tenté une approche par les graphes, une sorte de plus court chemin et je suis arrivé à la conclusion qu\u0026rsquo;il me fallait un ordre total entre toutes les couleurs de mes images. Cela me permettrait d\u0026rsquo;avoir le meilleur tris possible. Pour ceux qui désirent savoir ce qu\u0026rsquo;est un ordre total, je vous invite à lire cette page : Wikipédia - Ordre total.\nJe suis alors tombé sur cet article véritablement passionnant qui répondait en partie à mon problème : The incredibly challenging task of sorting colours. Surprise, il est question d\u0026rsquo;ordre total ! J\u0026rsquo;étais sur la bonne voie\u0026hellip; Mes espoirs ont cependant été vites douchés lorsque j\u0026rsquo;ai lu ces lignes :\nSupposons que vous représentiez des couleurs avec leurs valeurs RVB, il n'existe pas de moyen standard d'ordonner les triplets dans une ligne, puisqu'ils ne sont naturellement pas organisés de manière linéaire. [...] Je peux vous arrêter ici et vous dire qu'il n'y a pas de solution à ce problème. Bon, à priori ma recherche était vaine mais la suite de l\u0026rsquo;article détaille le problème et propose des solutions. Je vous invite à le lire mais la solution que j\u0026rsquo;ai retenue est celle des plus proches voisins.\nNos chers voisins\u0026hellip; # Parce qu\u0026rsquo;il n\u0026rsquo;y avait pas encore assez de pages wikipédia ici, je vais en rajouter une (la dernière), celle à propos de l\u0026rsquo;algorithme des plus proches voisins : Wikipédia - Nearest neighbour algorithm. Sans rentrer dans le détail, cet algorithme permet de trouver un chemin \u0026ldquo;optimal\u0026rdquo; entre des points (cf l\u0026rsquo;illustration ci-dessous). Nos points sont simplement des valeurs de couleurs, et cet algorithme permet de les trier !\nAnimation illustrant le fonctionnement de l'algorithme des plus proches voisins. A noter que cet algorithme n\u0026rsquo;est pas parfait, notamment car il ne permet pas de répondre rigoureusement (entendez par là mathématiquement) au problème du voyageur de commerce. Cependant, c\u0026rsquo;est une approximation suffisamment satisfaisante pour moi. Dernier inconvénient, la complexité de l\u0026rsquo;algorithme : O(n²). Cela signifie, en gros, que pour n images à trier, on va avoir besoin de n² opérations :\n10 images : 10² = 100 opérations 60 images (environ le nombre que j\u0026rsquo;avais pour tester mon algorithme) : 3600 opérations L\u0026rsquo;implémentation que j\u0026rsquo;ai trouvée de cet algorithme est optimisée mais on reste dans les mêmes ordres de grandeur. Les résultats obtenus sont sans appels, à gauche, l\u0026rsquo;ancien algorithme de tris, à droite, le résultat avec l\u0026rsquo;algorithme des plus proches voisins :\nComparatif des résultats des méthodes de tris. A gauche, l'ancien algorithme de tris, à droite, le résultat avec l'algorithme des plus proches voisins. Certes, il existe encore des imperfections (au début), l\u0026rsquo;algorithme n\u0026rsquo;est pas parfait mais peut-être est-ce à cause de ma moyenne pondérée. J\u0026rsquo;ai tenté d\u0026rsquo;autres approches mais aucune n\u0026rsquo;a donné un résultat aussi propre que celle-là. On observe que les divergences locales ont disparues ! C\u0026rsquo;est une réussite sur ce point là !\nOptimisation # Le programme total est assez lent sur mon ordinateur, pour les images ci-dessus, comptez plusieurs minutes. La partie la plus longue est assurément le calcul de clustering ; pour une image de 600 * 800 px il me faut environ 50 secondes pour ce calcul. J\u0026rsquo;ai essayé d\u0026rsquo;optimiser cela en essayant de multiprocesser (utiliser toutes la puissance disponible du processeur) cette partie, mais il s\u0026rsquo;est avéré que la librairie derrière le faisait déjà (pas étonnant !), inutile de multiprocesser quelque-chose qui l\u0026rsquo;est déjà. On pourrait cependant redimensionner les images avant calcul pour limiter le coût. En vérité la librairie le fait déjà mais je ne sais pas dans quelle mesure. Il est inutile de faire passer une image en 4K, le résultat sera similaire à cette même image réduite.\nOn peut également diminuer le nombre de cluster (couleur dominante) à calculer. On pourrait passer à 4 ou 3 mais le tris en serait impacté. On peut également réduire le nombre d\u0026rsquo;itération (par défaut 300) du clustering, je ne pense pas que cela impacte significativement la pertinence du tris. Enfin, on pourrait créer un fichier JSON qui contiendrait les valeurs de clustering pour chaque hash d\u0026rsquo;image. Puisqu\u0026rsquo;un hash est unique, il suffirait de hasher l\u0026rsquo;image, regarder si ce hash se trouve dans le fichier, et si c\u0026rsquo;est le cas utiliser les valeurs déjà calculées précédemment. Le gain dépend de la façon dont on utilise le programme.\nConclusion # Il est fascinant de découvrir tout ce qui se cache derrière une simple idée : trier des images par couleur. A partir de cette simple demande, j\u0026rsquo;ai découvert énormément de choses passionnantes. Il est intéressant de constater que plusieurs des techniques évoquées (clustering, proches voisins) sont utilisées dans d\u0026rsquo;autres pans de l\u0026rsquo;informatique, comme la Data Science ou l\u0026rsquo;Intelligence Artificielle. Il y aurait encore tant à dire et à explorer, je n\u0026rsquo;ai bien entendu pas pu tout mettre ici mais je vous invite vivement à lire les articles mentionnés ici.\nJ\u0026rsquo;espère que vous aurez pris plaisir à me lire, autant, je l\u0026rsquo;espère, que j\u0026rsquo;en ai pris à découvrir et partager ces savoirs.\n","date":"23 octobre 2022","permalink":"/posts/creer-un-degrade-dimage-un-vrai-defi/","section":"Mes articles","summary":"Trier des images pour les classer en dégradé de couleur, voilà quelque chose qui paraît trivial et sans intérêt au premier abord, et si c\u0026rsquo;était en réalité beaucoup plus difficle et intéressant que ça ?","title":"Créer un dégradé d'image : un vrai défi"},{"content":"Café stratégique du 27 septembre 2022\nConférencier : Roger DUBURG, Ancien directeur adjoint de la Délégation aux Affaires Stratégiques du ministère de la défense.\nAvant-propos # Cet article est tiré de mes notes lors d\u0026rsquo;une conférence. Certaines informations peuvent être incomplètes. Je ne fais ici que restituer du mieux que je peux ce que j\u0026rsquo;ai compris. Ceci n\u0026rsquo;est ni une prise de position, ni un article journalistique sur le conflit en cours. Le but est de transmettre l\u0026rsquo;information et d\u0026rsquo;en faire profiter le plus grand nombre en la rendant accessible au plus grand nombre.\nC\u0026rsquo;est la géographie qui dicte la politique des Etats - Napoléon # En France, nous sommes mal placés pour savoir ce qui se passe en Europe Orientale. L\u0026rsquo;Europe de l\u0026rsquo;ouest, et plus encore la France, ont un environnement homogène du point de vue de la géographie. Les frontières naturelles sont nombreuses et ne sont pas propices à des affrontements entre voisins, à la différence de l\u0026rsquo;Europe de l\u0026rsquo;est.\nEn effet, on peut vulgariser l\u0026rsquo;Europe Centrale et de l\u0026rsquo;est comme étant une grande plaine s\u0026rsquo;étendant de la Baltique jusqu\u0026rsquo;à la mer Noire, de l\u0026rsquo;Allemagne à l\u0026rsquo;Oural. Cette géographie est plus propice à des affrontements car il est plus difficile de découper les territoires. Pour illustrer cela, on peut citer les arméniens et les kurdes qui sont deux peuples qui n\u0026rsquo;ont pas eu de territoires à l\u0026rsquo;issue de la première guerre mondiale. L\u0026rsquo;Arménie est aujourd\u0026rsquo;hui attaqué par son voisin l\u0026rsquo;Azerbaïdjan et les kurdes sont considérés par les Turques comme des terroristes revendiquant un territoire.\nL\u0026rsquo;Ukraine, problème géographique et berceau slave # L\u0026rsquo;Ukraine a très peu de frontières naturelles. Elle a aussi un déficit d\u0026rsquo;Histoire, de nation, un désir d\u0026rsquo;Europe depuis quelques années et est un enjeu russe. Ce pays est considéré comme le berceau des pays slaves ; c\u0026rsquo;est La Rus\u0026rsquo; de Kiev. Décrite en son temps comme trop puissante, riche et vaste pour perdurer, c\u0026rsquo;est le premier état slave de l\u0026rsquo;Histoire. Kiev en était la capitale, avec l\u0026rsquo;arrivée des mongols, l\u0026rsquo;empire est détruit et Kiev quasiment rasée. Une partie de la population se replie plus au Nord et fonde Moscou.\nEntourée d\u0026rsquo;états puissants, l\u0026rsquo;Ukraine n\u0026rsquo;avait d\u0026rsquo;autre choix que de se soumettre à l\u0026rsquo;un de ses voisins pour y trouver un protecteur, disait Voltaire en son temps.\nLa Rus' de Kiev en 1054, un état très étendu et entouré de voisins puissants (image tirée de Wikipédia). Un pays chargé d\u0026rsquo;Histoire # Entre 1931 et 1933, Staline organise la mort par la faim du peuple ukrainnien. Il y a entre 3 et 5 millions de morts de cette famine, particulièrement dans l\u0026rsquo;est du pays. Cette même partie qui sera repeuplée ensuite par d\u0026rsquo;autres personnes venues du Nord. Durant la seconde guerre mondiale, les pertes ukrainiennes sont supérieures aux pertes américaines, britanniques et françaises réunies.\nEn 1994 est acté le dénucléarisation de l\u0026rsquo;Ukraine, 1000 têtes nucléaires sont transférées en Russie. En 2014 les \u0026ldquo;néo-nazis\u0026rdquo; russophobes ont fait un coup d\u0026rsquo;état, selon les russes, randant caduc cet accord à leurs yeux.\nEn 2001 le pape de l\u0026rsquo;époque, durant son voyage en Ukraine, rappelle au peuple ukrainien leur désir d\u0026rsquo;indépendance. En 2013 la révolution en Ukraine débute et en 2014 des manifestations russes contre l\u0026rsquo;indépendance de l\u0026rsquo;Ukraine ont également lieux.\nDepuis 2014, il y a une affirmation de la nation ukrainienne ainsi qu\u0026rsquo;une obsession de sécurité. Pour Poutine, ce pays n\u0026rsquo;est pas un état, c\u0026rsquo;est un peuple frère et la guerre se veut comme un \u0026ldquo;rétablissement du cours naturel des choses en Ukraine et au-delà\u0026rdquo;.\nPhoto de la \"Révolution Orange\" en Ukraine en 2004. Les craintes et la vision du voisin russe # A Moscou, on craint la contagion démocratique, comme cela a été le cas en Ukraine. Le pouvoir en place ne veut pas voir les mêmes révoltes qu\u0026rsquo;en Ukraine, en Biélorussie ou au Kazakhstan.\nEn février 2022, la guerre est déclarée, une première en Europe depuis 1945. Pour les russes c\u0026rsquo;est davantage une guerre intra étatique, une guerre civile, qu\u0026rsquo;un conflit entre deux états. La seule paix dans une telle guerre, c\u0026rsquo;est la paix par le cimetière, l\u0026rsquo;extermination, ou l\u0026rsquo;exil. L\u0026rsquo;idée serait de faire peur et de faire fuir les gens, cela peut expliquer pourquoi les russes tirent aux missiles ballistiques directement à l\u0026rsquo;intérieur des villes. Il y a une volonté de faire peur, de faire fuir ceux qui le peuvent et d\u0026rsquo;exterminer les résistants.\nLes limites du modèle russe # Plusieurs facteurs peuvent expliquer les difficultés que rencontrent les russes sur le terrain :\nune vision stratégique et politique érronée un adversaire sous estimé une usure anormalement rapide de l\u0026rsquo;armée russe difficulté de communication entre les troupes Aujourd\u0026rsquo;hui, le constat est que l\u0026rsquo;outil militaire russe est à la limite de la dislocation selon le conférencier. La planification est hasardeuse et elle peine à se rétablir sur les lignes. Les pertes sont également considérables, tant humaines que matérielles ; c\u0026rsquo;est une succession de fautes stratégiques et tactiques.\nEn Russie, l\u0026rsquo;armée ne possède pas de sous-officier. Cela implique que le soldat dépend directement de l\u0026rsquo;officier, qui ne connaît pas forcément bien le terrain. Les raisons de ce manque peuvent être expliquées par une peur de la révolte de ces gradés qui pourrait ammener à un coup d\u0026rsquo;état.\nOn peut également citer une certaine précipitation du pouvoir russe. Le retrait en Afghanistan a été un aveux de faiblesse de la part des occidentaux, la Russie en a profité. Il est probable que Poutine n\u0026rsquo;ait pas anticipé les actions des Occidentaux.\nBilan (fin septembre 2022) : 50k soldats tués, 80k hors de combat, 2200 chars de combats\u0026hellip;\nLe monde vu du Kremelin # C\u0026rsquo;est la vision des tsars, on regrette l\u0026rsquo;effondrement soviétique. L\u0026rsquo;impératif Russe est de protéger Moscou qui est envahie et pillée une fois par siècle. Il y a une attirance et une répulsion vis-à-vis de l\u0026rsquo;Ouest.\nAu cours therme il faut regagner de la profondeur stratégique et exploiter les faiblesses des occidentaux. En 1945, il y a eu un premier élargissement vers l\u0026rsquo;ouest (états baltes). Au milieux des années 1990 c\u0026rsquo;est l\u0026rsquo;élargissement de l\u0026rsquo;alliance atlantique vers l\u0026rsquo;est suivie de l\u0026rsquo;élargissement de l\u0026rsquo;Union Européenne qui domine.\nAujourd\u0026rsquo;hui, le virus démocratique atteint les anciens pays soviétiques (Biélorussie, Géorgie, Ukraine, Kirghiztan\u0026hellip;). Ces états, dirigés essentiellement par un pouvoir autoritaire, font régulièrement appel aux russes pour maintenir le pouvoir en place.\nLes russes ont développé le concept de \u0026ldquo;l\u0026rsquo;étranger proche\u0026rdquo; ; si l\u0026rsquo;on parle russe, que l\u0026rsquo;on a la culture russe, on est russe et on bénéficie de l\u0026rsquo;aide russe. Ils ont également développé le concept de guerre non-linéaire, qui est caractérisé par un emploi des forces armées conventionnelles, même pour une grande puissance nucléaire.\nLa fin du lien transatlantique # Les relations se sont tendues entre les USA et l\u0026rsquo;Europe, en particulier lors du mandat de Trump. Biden pourrait être un \u0026ldquo;retour de l\u0026rsquo;amérique\u0026rdquo;. Cependant, rien ne garantit que la vision de l\u0026rsquo;administration Biden ne perdure au delà de son mandat. L\u0026rsquo;avenir de l\u0026rsquo;UE et de l\u0026rsquo;OTAN se joue aujourd\u0026rsquo;hui aux frontières de l\u0026rsquo;Europe. Nos institutions sont-elles suffisemment fortes pour riposter ? Non selon le conférencier.\nLe voisin chinois et la communauté internationale # Le rapport de force est bien différent avec la Chine. La Sibérie est bien vide devant l\u0026rsquo;appétit chinois. Le soutiens chinois à la Russie est critiqué au sein du parti unique chinois et les critiques de cette \u0026ldquo;amitié\u0026rdquo; sont de plus en plus visibles. Le rapport démographique est également largement en faveur de la Chine, de même que pour la puissance militaire et économique.\nA noter que la Chine s\u0026rsquo;est abstenue lors du vote à l\u0026rsquo;ONU pour la condamnation de l\u0026rsquo;action russe (141 pour, 5 contre, 35 abstentions), tout comme l\u0026rsquo;Iran et l\u0026rsquo;Inde. Selon le conférencier, le vote d\u0026rsquo;abstention est aussi un vote chinois. Toute l\u0026rsquo;Asie centrale a suivi ce vote non-aligné. Les pays de l\u0026rsquo;OTSC (mini OTAN russe), n\u0026rsquo;ont en majorité pas voté contre la condamnation de l\u0026rsquo;action de Poutine. Pire que cela, cette opération pourrait avoir entachée les relations entre ces pays. Lors de sommets qui ont eu lieux dans la région, on a pu voir le président de l\u0026rsquo;Ouzbékistan faire attendre Poutine.\nSalon le conférencier, cet affrontement ne pourra pas se terminer autrement que par l\u0026rsquo;effondrement de l\u0026rsquo;une ou l\u0026rsquo;autre des parties. Selon lui, le régime de Poutine est le plus prompt à s\u0026rsquo;écrouler.\nRésultat du vote de la résolution de l’Assemblée générale des Nations unies condamnant la guerre en Ukraine et demandant le retrait immédiat des forces russes, le 2 mars 2022 (Journal Le Monde). En vert : pour (141), en jaune : abstention (35), en rouge : contre (5). ","date":"2 octobre 2022","permalink":"/posts/a-propos-de-la-guerre-en-ukraine-geographie-et-histoire/","section":"Mes articles","summary":"Café stratégique du 27 septembre 2022\nConférencier : Roger DUBURG, Ancien directeur adjoint de la Délégation aux Affaires Stratégiques du ministère de la défense.","title":"A Propos De La Guerre en Ukraine : Geographie Et Histoire"},{"content":"Le 404CTF est une compétition organisé par Télécom Sud-Paris en partenariat avec la DGSE. Cette année (2022) ce CTF était marqué par le double anniversaire ; les 80 ans du BCRA (service secret de la France Libre) et les 40 ans de la DGSE.\nPlus d\u0026rsquo;informations ici\nC\u0026rsquo;était mon second CTF et je suis globalement satisfait de mes résultats. J\u0026rsquo;ai malheureusement perdu le détail de mon score mais le mail récapitulatif est là pour me rappeler mon placement :\nBravo nathan.out ! Vous êtes arrivé parmi les 1000 premiers du challenge. [...] Les épreuves ont été conçues par le club HackademINT et hébergées par OVHcloud. Voici votre classement : 189/2460 avec 13293 pts N\u0026#39;hésitez pas à nous faire des retours sur le 404 CTF à l\u0026#39;adresse suivante : \u0026lt;\u0026gt; A bientôt pour d\u0026#39;autres challenges ! L’équipe du 404 CTF L\u0026rsquo;objectif était d\u0026rsquo;atteindre le top 100 pour obtenir l\u0026rsquo;invitation à un salon de cybersécurité mais je ne suis malheureusement pas parvenu à ce résultat. La compétition était rude mais c\u0026rsquo;était une superbe expérience, j\u0026rsquo;ai beaucoup aimé le format sur 1 mois. En espérant qu\u0026rsquo;ils soit de nouveau organisé l\u0026rsquo;année prochaine\u0026hellip;\n","date":"6 août 2022","permalink":"/a-propos/resultats-ctf/4042022/","section":"A Propos","summary":"Le 404CTF est une compétition organisé par Télécom Sud-Paris en partenariat avec la DGSE.","title":"404 CTF 2022"},{"content":"Pour mon tout premier CTF, je n\u0026rsquo;ai pas commencé par le plus simple\u0026hellip;\nLe France CyberSecurity Challenge est une compétition de cybersécurité dont les challenges sont créés par les agents de l\u0026rsquo;ANSSI. Elle vise à recruter les meilleurs talents français pour l\u0026rsquo;ECSC (European Cybersecurity Challenge).\nPlus d\u0026rsquo;information ici\nRésumé du CTF : à peine réussi les challenges d\u0026rsquo;intro mais avec une réussite dans un challenge de cryptographie. Les challenges étaient très plaisants à faire tout de même, j\u0026rsquo;ai énormément appris durant ces quelques semaines de compétition, à refaire en 2023, donc !\nLa capture est un peu petite :\n8 challenges d\u0026rsquo;introduction 4 challenges \u0026ldquo;welcome\u0026rdquo; 1 challenge de cryptographie (pour le coup très simple en comparaison des autres) ","date":"6 août 2022","permalink":"/a-propos/resultats-ctf/fcsc2022/","section":"A Propos","summary":"Pour mon tout premier CTF, je n\u0026rsquo;ai pas commencé par le plus simple\u0026hellip;","title":"FCSC 2022"},{"content":"Un vue succincte de mes résultats en CTF.\n","date":"5 août 2022","permalink":"/a-propos/resultats-ctf/","section":"A Propos","summary":"Un vue succincte de mes résultats en CTF.","title":"Resultats CTF"},{"content":"Etudiant en cyberdéfense, développeur, amateur de CTF et éternel curieux. Tombe régulièrement dans des rabbit holes.\nSite Description GitHub Mon Github Rootme Profil Rootme TryHackMe Profil TryHackMe ","date":"5 août 2022","permalink":"/a-propos/","section":"A Propos","summary":"Etudiant en cyberdéfense, développeur, amateur de CTF et éternel curieux. Tombe régulièrement dans des rabbit holes.","title":"A Propos"},{"content":"","date":"5 août 2022","permalink":"/","section":"Blog","summary":"","title":"Blog"},{"content":"Tous mes articles, plus ou moins bien rangés.\n","date":"5 août 2022","permalink":"/posts/","section":"Mes articles","summary":"Tous mes articles, plus ou moins bien rangés.","title":"Mes articles"},{"content":"Des démonstrations de certains de mes projets.\n","date":"5 août 2022","permalink":"/projets/","section":"Projets","summary":"Des démonstrations de certains de mes projets.","title":"Projets"},{"content":"Instagram regorge de bots (ou robots), la plateforme leur mène une guerre totale avec des moyens colossaux et des technologies d\u0026rsquo;analyse du comportement poussées pour déterminer si un compte est managé par un robot ou non. Pourquoi ? Ces robots sont parfois mal intentionnés : arnaque, harcèlement, désinformation ou tout simplement spam. C\u0026rsquo;est pourquoi si un robot se fait détecter, il est automatiquement supprimé de la plateforme, maintenir un réseau de bot est donc compliqué et risqué, on peut tout perdre très rapidement. De l\u0026rsquo;autre côté, les créateurs de bots rivalisent d\u0026rsquo;ingéniosité afin de rester invisible, c\u0026rsquo;est un sujet passionnant, une vraie guerre invisible, mais ça n\u0026rsquo;est pas le sujet d\u0026rsquo;aujourd\u0026rsquo;hui.\nIl est existe pourtant une technique afin de créer un bot légitime aux yeux d\u0026rsquo;Instagram : utiliser l\u0026rsquo;API de Meta (ex Facebook). Ce bot est donc connu de la plateforme, il possède quelques limitations mais fera parfaitement l\u0026rsquo;affaire pour ce que souhaite en faire.\nUn bot, mais pour quoi faire ? # Il y a quelques temps, je suis tombé sur cet article au titre plutôt sexy : How I Eat For Free in NYC Using Python, Automation, Artificial Intelligence, and Instagram. API, Intelligence Artificielle, Python, automatisation et analyse de données : ça vend du rêve ! Pour résumer l\u0026rsquo;article, un ingénieur, avec beaucoup trop de temps à perdre visiblement, s\u0026rsquo;est réveillé un matin avec une envie : manger gratuitement dans les restaurants de New-York. Puisqu\u0026rsquo;il a des compétences en informatique, il décide de créer un bot Instagram qui va analyser les publications culinaires qui fonctionnent le mieux à New-York, de les re-poster sur son compte, d\u0026rsquo;observer ce qu\u0026rsquo;il se passe et, bien sûr, de monétiser sa visibilité. Tout cela, boosté avec de l\u0026rsquo;intelligence artificielle et des techniques de big data pour être le plus efficace possible. L\u0026rsquo;objectif final est d\u0026rsquo;échanger la visibilité de son compte contre des repas gratuits dans les meilleurs restaurant de la ville, du génie ! Benjamin Code en a fait une vidéo qui récapitule le projet, je vous invite aussi à lire l\u0026rsquo;article, c\u0026rsquo;est passionnant.\nJe me suis dis que je pouvais moi aussi tenter l\u0026rsquo;expérience, à plus petite échelle et avec moins de connaissances que lui. L\u0026rsquo;objectif est de créer un compte qui pourrait publier du contenu automatiquement, sans analyse de donnée (type big data) et sans IA, dans un premier temps.\nA la recherche de contenu # Publier du contenu c\u0026rsquo;est bien, mais encore faut-il en avoir. Ca tombe bien puisque quelques jours auparavant, un ami m\u0026rsquo;a transmis ce repo Github qui regroupe des API publiques. C\u0026rsquo;est une vraie mine d\u0026rsquo;or et l\u0026rsquo;une de ces API m\u0026rsquo;a fait de l\u0026rsquo;oeil : Metropolitan Museum of Art. Elle regroupe une quantité colossale d\u0026rsquo;oeuvres d\u0026rsquo;art (avec des photos !). Le principe est simple : j\u0026rsquo;envoie une requête à l\u0026rsquo;API, elle me répond avec une oeuvre d\u0026rsquo;art et des informations en plus, voilà pour le contenu.\nL\u0026rsquo;API d\u0026rsquo;Instagram : voyage en terre inconnue # Comme expliqué plus haut, pour avoir un bot \u0026ldquo;legit\u0026rdquo; je dois passer par l\u0026rsquo;API d\u0026rsquo;Instagram. Le truc qui m\u0026rsquo;a fait perdre beaucoup, beaucoup, de temps a été de comprendre comment avoir un accès. En effet, cette API nécessite une configuration particulière assez pénible et laborieuse à mettre en place :\nun compte Facebook Developer (un numéro de téléphone valide vous sera demandé) une page Facebook liée à ce compte developer un compte Instagram professionnel (impossible de le lier à l\u0026rsquo;API sinon) une tripotée de configuration, d\u0026rsquo;identifiants et de secrets à avoir remuez le tout, avec quelques tutos en ligne et un peu de temps, vous devriez arriver à faire votre première requête A noter quand même qu\u0026rsquo;Instagram ou Facebook ne vous laissera pas tranquille. En effet, il m\u0026rsquo;est arrivé de jongler entre mes comptes persos et ceux pour mon bot\u0026hellip; ce qui a eu pour effet de bloquer mon compte bot ! Tout ça parce que j\u0026rsquo;avais une activité \u0026ldquo;suspecte\u0026rdquo; avec un compte nouvellement créé, quand je vous disais que ces grandes plateformes faisaient la guerre aux bots\u0026hellip; Il faut parfois attendre un peu, parfois valider son mail, bref c\u0026rsquo;est pas super pratique.\nUne fois cela fait, il \u0026ldquo;suffit\u0026rdquo; de comprendre l\u0026rsquo;ordre des requêtes pour arriver à poster une image sur Instagram. Là encore ça n\u0026rsquo;est pas si simple mais une fois qu\u0026rsquo;on a compris l\u0026rsquo;ordre et ce que nous retourne chaque requête, le script est plutôt facile à coder. Nous voilà donc avec un accès et un compté légitime et des données en pagaille. Ne reste plus qu\u0026rsquo;à coder le robot pour qu\u0026rsquo;il aille de lui-même chercher les images dont il a besoin et les publier.\nHe\u0026rsquo;s alive ! # Cette partie a été la plus longue, de loin. J\u0026rsquo;ai passé quelques soirées et raccourci des nuits mais c\u0026rsquo;était la partie la plus fun, bien plus que d\u0026rsquo;obtenir des accès à l\u0026rsquo;API. Il ne reste qu\u0026rsquo;à traiter les données pour les publier.\nDu tris # Le premier problème est que tous les éléments de l\u0026rsquo;API ne contiennent pas d\u0026rsquo;image. Par exemple lorsqu\u0026rsquo;on requête l\u0026rsquo;API pour obtenir un élément de sa collection, il arrive qu\u0026rsquo;il n\u0026rsquo;y ait pas d\u0026rsquo;images : on a un titre un auteur et tout un tas d\u0026rsquo;autres données\u0026hellip; mais pas d\u0026rsquo;images. Premier filtre sur les éléments qui ont une image.\nEnsuite, certains des éléments de l\u0026rsquo;API ont plusieurs images, une image \u0026ldquo;primaire\u0026rdquo; et des images \u0026ldquo;secondaires\u0026rdquo;, qui sont des photos de l\u0026rsquo;oeuvre prises sous différents angles. Second filtre pour avoir des éléments avec plusieurs images.\nInstagram n\u0026rsquo;accepte pas tous les ratios d\u0026rsquo;images ; une image trop étirée verticalement ou horizontalement ne sera pas acceptée pour être publiée. Troisième filtre.\nEnfin, en faisant mes tests j\u0026rsquo;ai remarqué que certaines catégories d\u0026rsquo;oeuvres retournaient des images vraiment très peu intéressantes : des fragments de poterie, par exemple. Quatrième filtre.\nUne fois qu\u0026rsquo;on a des images à peu près jolies et publiables sur Insta, on peut continuer à perfectionner notre publication. J\u0026rsquo;aime bien rendre à César ce qui est à César ; c\u0026rsquo;est pourquoi j\u0026rsquo;ai eu à coeur de mettre toutes les infos en ma possession (quand j\u0026rsquo;en avais) pour chaque oeuvre publiée :\ntitre auteur (+ dates de naissance et de mort) type d\u0026rsquo;oeuvre collection crédits et d\u0026rsquo;autres\u0026hellip; Reste une chose primordiale, les HASHTAGS.\nUn peu d\u0026rsquo;intelligence\u0026hellip; # Ces foutus hashtags m\u0026rsquo;en auront fait voir de toutes les couleurs ! Pour le faire courte, c\u0026rsquo;est ce qui va permettre de référencer ma publication, il faut donc qu\u0026rsquo;ils soient :\nprécis relativement nombreux (mais pas trop non plus) cohérents avec la publication Pour cela j\u0026rsquo;ai découpé mes hashtags en 3 catégories :\nles hashtags statiques, c\u0026rsquo;est-à-dire ceux qui seront toujours là, par exemple \u0026ldquo;#art\u0026rdquo;, \u0026ldquo;#masterpiece\u0026rdquo;, \u0026ldquo;#picture\u0026rdquo;, \u0026ldquo;#museum\u0026rdquo;, \u0026ldquo;#exposition\u0026rdquo;. les hashtags dynamiques, ceux directement issus des données de l\u0026rsquo;oeuvre sur la publication : nom de l\u0026rsquo;oeuvre, de l\u0026rsquo;artiste, type, date, culture\u0026hellip; les hastags intelligents, qui ne sont ni issus des données de l\u0026rsquo;image, ni de ma main. Ils doivent être tirés de l\u0026rsquo;image. J\u0026rsquo;avais dans l\u0026rsquo;idée d\u0026rsquo;extraire des mots-clefs de l\u0026rsquo;oeuvre, par exemple pour l\u0026rsquo;image ci-dessous on aurait pu avoir : bridge, phone, sunset, hand, road, sky\u0026hellip;\n\u0026ldquo;Quoi de mieux que l\u0026rsquo;intelligence artificielle pour faire ça ?\u0026rdquo; - me demandais-je naïvement.\nEffectivement il existe des modèles d\u0026rsquo;IA pour effectuer ce travail, je l\u0026rsquo;ai ajouté à mon projet, j\u0026rsquo;ai trouvé un peu de code sur internet pour le faire en python (le langage que j\u0026rsquo;utilise), et ça fonctionne ! Par contre les résultats sont très, très mitigés. Par exemple, pour l\u0026rsquo;image du dessus, le modèle trouvait un \u0026ldquo;ours polaire\u0026rdquo;, une \u0026ldquo;montgolfière\u0026rdquo; et autres bizareries\u0026hellip;\n\u0026hellip;ou pas ! # Alors j\u0026rsquo;ai fais des hypothèses, j\u0026rsquo;ai cherché, j\u0026rsquo;ai galéré, j\u0026rsquo;ai même pensé que je faisais \u0026ldquo;rentrer\u0026rdquo; mon image dans le mauvais sens dans mon IA\u0026hellip; mais non ! Le modèle est juste mauvais. Pour comprendre il faut que j\u0026rsquo;explique l\u0026rsquo;apprentissage supervisé en deux mots.\nOn donne une immeeeeennnnse quantité d\u0026rsquo;images au modèle qu\u0026rsquo;on souhaite entraîner avec à chaque fois des mots-clefs associés à chaque image (par exemple une image de canard avec comme mot-clef \u0026ldquo;canard\u0026rdquo;, \u0026ldquo;oiseau\u0026rdquo;, etc\u0026hellip;). Pour chaque image l\u0026rsquo;IA va tenter d\u0026rsquo;elle-même de trouver des mots-clefs et une fois ses résultats donnés, elle les compare avec ce qu\u0026rsquo;elle aurait dû trouver (\u0026ldquo;canard\u0026rdquo;, \u0026ldquo;oiseau\u0026rdquo;, etc\u0026hellip;), et elle \u0026ldquo;s\u0026rsquo;améliore\u0026rdquo; en fonction de l\u0026rsquo;écart entre ce qu\u0026rsquo;elle a prédit et ce qu\u0026rsquo;elle aurait dû trouver.\nLe soucis de cette méthode c\u0026rsquo;est que l\u0026rsquo;IA ne va reconnaître que ce sur quoi elle s\u0026rsquo;est entraînée. Plus on souhaite une IA performante sur une large gamme d\u0026rsquo;image, plus on doit lui donner une quantité de donnée, un dataset, grand et bien construit. Si notre IA doit seulement différencier un panneau stop d\u0026rsquo;un passage piéton, c\u0026rsquo;est \u0026ldquo;facile\u0026rdquo;. Si, en revanche, elle doit pouvoir détecter n\u0026rsquo;importe quoi sur n\u0026rsquo;importe quelle image, c\u0026rsquo;est une autre paire de manches.\nLe soucis c\u0026rsquo;est que le modèle pré-entraîné que j\u0026rsquo;ai voulu utilisé était trop généraliste, il pouvait tout reconnaître mais faisait beaucoup trop d\u0026rsquo;erreurs (je n\u0026rsquo;avais parfois aucun mot en rapport, même de loin, avec mon image !). Tout ça pour dire qu\u0026rsquo;à moins d\u0026rsquo;entraîner moi-même l\u0026rsquo;IA sur un dataset d\u0026rsquo;oeuvre d\u0026rsquo;art proches de celles sur lesquelles je souhaitais extraire les mots-clefs, je ne pourrais rien en tirer. Je ne dispose ni du temps, ni de la puissance de calcul, ni de l\u0026rsquo;espace de stockage, ni des compétences, ni du dataset pour le faire. Une prochaine fois peut-être ?\nEn vérité ce sujet mériterait un article à part entière tellement c\u0026rsquo;est bien plus compliqué et passionnant que ça.\nEncore un petit effort # Après ce détour dans les méandres de l\u0026rsquo;IA, me voilà de retour sur mon bot, sans mes mots-clef \u0026ldquo;intelligents\u0026rdquo;, tant pis ! Après quelques tests, quelques sesssions de \u0026ldquo;debug\u0026rdquo;, j\u0026rsquo;ai un programme fonctionnel ! Il est capable de rechercher, traiter et poster une publication Instagram ! Ne reste qu\u0026rsquo;à le mettre sur un serveur, programmer ses horaires de diffusion et surveiller que tout se passe bien dans un premier temps, avant de le laisser vivre sa vie de bot Instagram. Il publie tous les jours à 10h et 20h.\nSans plus attendre, voilà Archie, le robot ! Je vous invite à aller voir son compte @archie_the_aesthete pour ne rater aucune publi, pensez à vous abonner et à lâcher un like, ça lui fera plaisir ! :).\nBon, pour le moment le succès n\u0026rsquo;est pas au rendez-vous, mais ça viendra\u0026hellip;\nQuelques-unes de ses publications :\nLa suite ? # Il y aurait encore des tas et des tas d\u0026rsquo;améliorations à apporter. On est encore loin de l\u0026rsquo;article qui m\u0026rsquo;a inspiré ce projet, il manque l\u0026rsquo;IA bien sûr et le côté analyse de données. Cela fait 3 semaines maintenant qu\u0026rsquo;Archie tourne et je ne vois pas vraiment d\u0026rsquo;évolution du compte, il n\u0026rsquo;y a pas d\u0026rsquo;abonnés ni de tendance à la hausse. Pour monayer ce compte, on repassera mais le projet était vraiment cool j\u0026rsquo;ai appris énormément de choses ! Peut-être que je rendrai le code libre, pensez à checker mon github.\nJe pense à une V2 avec plein de nouvelles fonctionnalités qui permettraient d\u0026rsquo;améliorer la visibilité du robot :\ncréation d\u0026rsquo;une story à chaque nouvelle publication des oeuvres plus alléchantes (certaines ne sont pas du tout \u0026ldquo;instagrammables\u0026rdquo;, faut être honnête) garder un feed cohérent (des couleurs proches les unes des autres entre les publications), c\u0026rsquo;est ce qui fait \u0026ldquo;pro\u0026rdquo;, il parait de l\u0026rsquo;analyse de données pour savoir ce qui fonctionne, à quels horaires publier, etc\u0026hellip; Bref il reste encore du boulot et des tas de trucs intéressants à explorer ! Sur ce, bon vent, Archie !\n","date":"5 août 2022","permalink":"/posts/jai-cree-un-bot-instagram-100-pourcent-legal-et-totalement-automatise/","section":"Mes articles","summary":"Instagram regorge de bots (ou robots), la plateforme leur mène une guerre totale avec des moyens colossaux et des technologies d\u0026rsquo;analyse du comportement poussées pour déterminer si un compte est managé par un robot ou non.","title":"J'ai créé un bot Instagram 100% légal et totalement automatisé"},{"content":"Epios\nObjectif : : compromettre une organisation. On utilisera par exemple du crochetage, de l\u0026rsquo;USB dropping\u0026hellip; La cyber kill chain est la suite d\u0026rsquo;étape permettant de compromettre une organisation.\nReconnaissance via l\u0026rsquo;OSINT # On différencie bien l\u0026rsquo;OSINT de l\u0026rsquo;ingénierie sociale. L\u0026rsquo;objectif est de passer innaperçu. Pour cela, l\u0026rsquo;OSINT peut nous aider à connaître le vocabulaire propre à l\u0026rsquo;entreprise, les employés immportants/intéressants, la connaissance de prestataires de l\u0026rsquo;entreprise mais aussi les lieux stratégiques. Le présentateur montre deux exemples :\ndorks pour connaître certains prestataires de la CIA. geoint pour deviner l\u0026rsquo;emplacement de datacenter interne à l\u0026rsquo;entreprise (via la climatisation notamment) et les points de livraisons, souvent laissés ouverts et sans surveillance particulière. Les réseaux sociaux ont une importance, on a tendance à les sous-estimer et à ne pas tous les regarder. En effet, les stagiaires et/ou jeunes employés sont sur Snapchat, Tiktok ou Instagram, ils peuvent par exemple filmer une partie de leur quotidien dans l\u0026rsquo;entreprise et nous informer sur la structure des locaux, le matériel utilisé, la présence ou non de badgeuse\u0026hellip; De la même manière, il faut faire attention aux employés ainsi qu\u0026rsquo;aux visiteurs.\nLe présentateur illustre ses propos par l\u0026rsquo;affaire Strava (Jean-Marc Manach, journaliste chez Next INpact) : des militaires/espions qui utilisaient cette application de running et qui permettait de découvrir des bases militaires secrètes. Strava est un petit réseau social, on peut par exemple y faire des groupes de coureur. Cela peut être très utile pour trouver des noms d\u0026rsquo;employés et voir leurs habitudes de courses (à priori cette fonctionnalité est en train d\u0026rsquo;être patchée).\nA partir de toutes ces informations, il est possible d\u0026rsquo;approcher des personnes de l\u0026rsquo;entreprise et de gagner leur confiance. Il est alors possible de les manipuler, on connaît leurs passions, son niveau d\u0026rsquo;accès dans l\u0026rsquo;entreprise voire même son tempérament.\nQuelques outils et références :\nThe Stuxnet Story -\u0026gt; de l\u0026rsquo;OSINT a été utilisé à partir d\u0026rsquo;images de propagande du régime iranien pour connaître le type d\u0026rsquo;équipement, les versions des logiciels\u0026hellip; Crystalknows -\u0026gt; IA qui, à partir d\u0026rsquo;un compte LinkedIn, permet de dresser un profil psychologique d\u0026rsquo;une personne. Hunter.io -\u0026gt; trouver des adresses email professionnelles. Pimeyes -\u0026gt; (payant) reconnaissance de personnes à partir d\u0026rsquo;une photo de leur visage. L\u0026rsquo;étape suivante consiste à passer à l\u0026rsquo;attaque.\n","date":"30 juin 2022","permalink":"/posts/lehack2022/osint/osint-red-team/","section":"Mes articles","summary":"Epios\nObjectif : : compromettre une organisation. On utilisera par exemple du crochetage, de l\u0026rsquo;USB dropping\u0026hellip; La cyber kill chain est la suite d\u0026rsquo;étape permettant de compromettre une organisation.","title":"L'OSINT dans la Red Team"},{"content":"Open Facto fédérer l\u0026rsquo;OSINT français\nQactus : site de désinformation français proche de la mouvance Qanon (USA), les thématiques abordées sont les complots en tout genre, l\u0026rsquo;antivaccination, l\u0026rsquo;antisémitisme\u0026hellip; Il s\u0026rsquo;est fait connaître durant la crise du COVID. Le compte Twitter du site a été banni mais ce réseau social reste un lieux privilégié pour la diffusion des articles.\nTechnologiquement, c\u0026rsquo;est un blog WordPress créé le 6 mai 2020 et qui comporte un traqueur publicitaire (détail important pour la fin). Le but de la conférence est de comprendre l\u0026rsquo;environnement de ce genre de site, son fonctionnement ainsi que d\u0026rsquo;essayer de retrouver son/ses créateur(s)/administrateur(s).\nLes pivots utilisés lors de l\u0026rsquo;enquête :\niqwhois archive.org publicwww (moteur de recherche pour du code source de site) Comprendre l\u0026rsquo;écosystème # Les outils utilisés sont :\nHyphe : collecte et cartographie de l\u0026rsquo;information. Une fonctionnalité intéressante est de pouvoir calculer la densité d\u0026rsquo;un graphe ; permet de savoir quel site cite t Gephi : analyse et cartographie de l\u0026rsquo;information (très complémentaire avec Hyphe) Retina (lien de l\u0026rsquo;outil ?) : visualisation de la donnée Smat.app : visualisation dans le temps selon des critères, par exemple on peut voir l\u0026rsquo;impact de la désinformation par Qactus pendant et après le covid. Snscrape : récupération de contenus des réseaux sociaux (ici Twitter) Open Refine : nettoyage et mise en forme des données. L\u0026rsquo;analyse du corpus de donnée a été faite avec python ou le langage R. Une fois la donnée collectée et raffinée, on observe ceci :\n120k tweets comportant un lien vers qactus ont été publiés depuis le 26 juin 2020. 9k comptes différents ont intéragis avec au moins un post certains utilisateurs sont très actifs (ex : 3.9k tweets pour le plus actuf) certains utilisateurs sont influents (ex : Christine Kelly \u0026amp; Di Borgo) la communauté est relativement petite mais très active Après analyse des liens du site, on observe bien que Qactus est proche de la mouvance Qanon ; beaucoup de liens renvoient vers ce site ou d\u0026rsquo;autres du même genre. On observe une bulle de filtre.\nOn peut également dresser le palmarès des plus gros posteurs, retweeters, likers\u0026hellip;\nQui est derrière le site ? # Un site sous WordPress permet de récupérer la liste des auteurs et d\u0026rsquo;autres informations utiles. On récupère un pseudo qui nous ammène vers un compte Google et une chaîne Youtube. Cela semble être la chaîne officielle de Qactus. Si on recherche dans les leaks, les pages jaunes ou copain d\u0026rsquo;avant on trouve quelques informations en plus et des noms qui pourraient être la véritable identité de créateur du site. Grâce à pappers.fr on peut retrouver la SARL d\u0026rsquo;un candidat, sa date de naissance, sa signature\u0026hellip; Wayback machine nous permet de retrouver un vieux site de 2004, ce qui semble indiquer que la personne possède des compétences en informatique malgré le fait qu\u0026rsquo;il ait environ 50-60 ans. On tombe sur une adresse postale qui correspond à l\u0026rsquo;une de celles trouvées précédemment, on a une quasi-certitude sur l\u0026rsquo;administrateur du site internet. Certaines informations permettent également de remonter jusqu\u0026rsquo;à sa compagne, qui semble être dans le même système de pensée, cela renforce les résultats.\nLes auteurs de la conférence ont essayé de contacter cette personne pour avoir une confirmation, sans succès. Néanmoins ils sont quasi-certains qu\u0026rsquo;il s\u0026rsquo;agit de cette personne.\nSi on revient au traqueur publicitaire découvert en début d\u0026rsquo;enquête, on peut estimer que les revenus publicitaires sont d\u0026rsquo;environ 30 à 40k€/an. Au delà de l\u0026rsquo;aspect politique, la désinformation est également une activité économique qui peut s\u0026rsquo;avérer très rémunératrice.\nConclusion # Qactus évolue dans une bulle clairement identifiable, son créateur et principal administrateur l\u0026rsquo;est aussi Propagation de l\u0026rsquo;information sur des réseaux \u0026ldquo;mainstream\u0026rdquo; comme \u0026ldquo;sous-terrain\u0026rdquo; ex : Gettr (réseau social américain conservateur) communauté forte et active participe à saturer l\u0026rsquo;espace publique (selon les mots du conférencier) un site comme celui-ci peut susciter un intérêt financier il est relativement simple d\u0026rsquo;analyser finement une aussi grande sphère d\u0026rsquo;information ","date":"30 juin 2022","permalink":"/posts/lehack2022/osint/desinformation-en-ligne/","section":"Mes articles","summary":"Open Facto fédérer l\u0026rsquo;OSINT français\nQactus : site de désinformation français proche de la mouvance Qanon (USA), les thématiques abordées sont les complots en tout genre, l\u0026rsquo;antivaccination, l\u0026rsquo;antisémitisme\u0026hellip; Il s\u0026rsquo;est fait connaître durant la crise du COVID.","title":"Cactées et succulentes, anatomie de la désinformation (Qactus)"},{"content":"Filipi Pires\nEn rédigeant ce retex, je suis tombé sur un article du conférencier qui explique une conférence identique qu\u0026rsquo;il a tenue : Malware Analysis Dissecting PDF File\nLe conférencier veut nous sensibiliser sur l\u0026rsquo;importance de connaître ses outils et leurs limitations. Cela, dans le but de rester en sécurité lors de l\u0026rsquo;étude d\u0026rsquo;un malware mais également pour ne pas passer à côté d\u0026rsquo;éléments importants. Le but de l\u0026rsquo;analyse est de déterminer si oui ou non ce fichier est malveillant.\nIl existe deux méthodes pour analyser un malware :\nanalyse statique -\u0026gt; on regarde le binaire sans l\u0026rsquo;exécuter, identification des fonctions importantes, utilisation de dll\u0026hellip; C\u0026rsquo;est de ce type d\u0026rsquo;analyse dont il est question ici. analyse dynamique -\u0026gt; utilisation d\u0026rsquo;une sandbox, analyse du comportement du malware, on l\u0026rsquo;exécute. Le workflow de l\u0026rsquo;analyse d\u0026rsquo;un malware est comme suit :\nidentification d\u0026rsquo;artefact -\u0026gt; rapport -\u0026gt; amélioration de la sécurité -\u0026gt; threat intel (optionnel, si l\u0026rsquo;organisme dispose des ressources) La conférence porte plutôt sur l\u0026rsquo;analyse d\u0026rsquo;artefact pour déterminer si un fichier est malveillant et le comprendre plus en détail le cas échéant. Pour illustrer ses propos, le présentateur nous invite à reconsidérer les types de fichiers. Sur un système UNIX, le magic number sert à déterminer le type d\u0026rsquo;un fichier, la manière dont il sera interprêté et avec quel outil il sera lu/exécuté. Un malware aura tendance à se cacher dans un fichier légitime. Pour illustrer cela, le conférencier analyse un fichier avec deux commandes tout en expliquant les limitations de l\u0026rsquo;outil :\nfile : se base sur le magic number pour déterminer le type d\u0026rsquo;un fichier, qui est manipulable facilement. strings : affiche les chaînes de caractères affichables, plus spécifiquement les chaînes de plus de 4 caractères. Le conférencier montre un exemple dans lequel strings ne trouve pas l\u0026rsquo;information utile. L\u0026rsquo;outil est important, mais le comprendre l\u0026rsquo;est encore plus.\nAnalyse d\u0026rsquo;un PDF # Le conférencier analyse un PDF avec les deux commandes précédentes et utilise ensuite des outils spécifiques pour les PDF :\npdftk pdfinfo pdfid (vraiment intéressant pour de l\u0026rsquo;analyse) pdf-parser Les résultats intéressants sont :\njavascript dans le PDF (équivalent macro pour les fichiers doc). (pdfinfo, pdfid) champ OpenAction (pdfid) action à l\u0026rsquo;ouverture champ stream (pdfid) qui contient souvent le payload malicieux liens entre les stream et les exécution d\u0026rsquo;action (pdf-parser --raw file.pdf) A ce moment là, on observe que le pdf contient du javascript obfusqué qui s\u0026rsquo;exécute à l\u0026rsquo;ouverture du fichier. On pourrait s\u0026rsquo;arrêter ici, car le but est atteint, on est quasiment certain que le fichier est malveillant à ce stade. Cependant, le conférencier continue pour nous montrer comment extraire le payload et déterminer ce qu\u0026rsquo;il fait.\nLorsqu\u0026rsquo;on extrait le stream contenant le javascript, on s\u0026rsquo;apperçoit qu\u0026rsquo;il est obfusqué. Le présentateur modifie le script pour afficher le javascript obfusqué et supprime l\u0026rsquo;eval pour ne pas que le code s\u0026rsquo;exécute. Il reste un niveau d\u0026rsquo;obfuscation qui est cassé avec Malzilla. On s\u0026rsquo;appercoit alors que le script permet de communiquer avec un C2 (Command and Control), on a la confirmation que l\u0026rsquo;IP est malveillante avec un localisateur d\u0026rsquo;IP.\n","date":"30 juin 2022","permalink":"/posts/lehack2022/conferences-techniques/malware-analysis/","section":"Mes articles","summary":"Filipi Pires\nEn rédigeant ce retex, je suis tombé sur un article du conférencier qui explique une conférence identique qu\u0026rsquo;il a tenue : Malware Analysis Dissecting PDF File","title":"Dissecting and comparing different binaries to malware analysis"},{"content":"CyberSec ICS\nHoneypot :\nservice volontairement exposé sur le net pour faire de l\u0026rsquo;analyse de le menace. 3 types : low, medium et high interaction. Pour faire simple, c\u0026rsquo;est le niveau de crédibilité du honeypot. Objectif : créer un honeypot crédible pour des systèmes industriels et analyser les données obtenues.\n1. Rechercher des équipements industriels exposés sur internet # Utilisation de Shodan. Beaucoup de machines exposées, plus ou moins critiques, les données récoltées serviront à créer des honeypots crédibles.\n2. Créer un honeypot crédible # Utilisation de python, il existe des librairies existantes. Cependant, certaines ont besoin d\u0026rsquo;être retravaillées, en plus de certaines interfaces réseau qu\u0026rsquo;il faut recoder. Il faut aussi que le honeypot dispose d\u0026rsquo;une intéraction, qu\u0026rsquo;il soit \u0026ldquo;high interaction\u0026rdquo;. Cette partie est primodiale pour que la collecte de données soit représentative de l\u0026rsquo;état de la menace.\n3. Hébergement # Au départ il était question d\u0026rsquo;héberger les honeypots dans le monde entier. Cependant, pour rester crédible il ne faut pas héberger ce type de système sur des hébergeurs type AWS ou Microsoft ; ils ne sont traditionnellement pas dans l\u0026rsquo;hébergement de systèmes industriels. Ce sont plutôt des petits hébergeurs locaux et dont les prix sont plus élevés. Quelques pays ont été privilégiés, dont l\u0026rsquo;Ukraine.\n4. Résultats # Shadowserver : scanneur très utile pour les systèmes industriels.\nBeaucoup de passages de scanners (beaucoup aux USA, un peu Pays-Bas et Islande [deux pays qui possèdent beaucoup de datacenters]). D\u0026rsquo;autres visite (hors scans) de la part des USA, Chine, Brésil, Chine et Russie. Tous les protocoles ne sont pas visés équitablement. Les attaquants reviennent généralement sur MOD-BUS, FOX et OPCUA. Les mot-de-passe utilisés en bruteforce dépendent fortement de la zone géographique dans laquelle est situé le honeypot. Conclusion # Il est possible de monitorer et de détecter des nouveaux comportements de la part des acteurs malveillants. Il n\u0026rsquo;est pas toujours facile de déployer des honeypots crédibles (par exemple le conférencier à dû modéliser mathématiquement une usine de traitement de l\u0026rsquo;eau et recréer une interface graphique). Pour aller plus loin, il faudrait installer des honeypots directement dans des entreprises. De plus, il faudrait travailler sur la couche TCP/IP (vulnérabilite amnesia33).\n","date":"30 juin 2022","permalink":"/posts/lehack2022/conferences-techniques/honeypot-industriel/","section":"Mes articles","summary":"CyberSec ICS\nHoneypot :\nservice volontairement exposé sur le net pour faire de l\u0026rsquo;analyse de le menace.","title":"Honeypot in ICS environment"},{"content":"Palenath Megadose\nLa conférence parle essentiellement de la création gratuite et facile de numéros de téléphone, utiles dans le cadre de la création de faux comptes de réseaux sociaux. Le conférencier veut pouvoir créer et manager facilement des numéros de téléphones qui ne pourraient pas lui être imputés.\nLe présentateur nous indique plusieurs solutions :\nil existe des cartes SIM gratuites à disposition dans certains magasins de téléphonie/bureaux de tabac. les différents services en lignes ne sont bien souvent pas gratuits, leurs numéros sont connus de la plupart des réseaux sociaux et il est difficile de passer à l\u0026rsquo;échelle. Arduino : intéressant d\u0026rsquo;un point de vue industrialisation mais bien trop cher, il faudrait un arduino par carte SIM. Dongle 4G -\u0026gt; cher Sim box -\u0026gt; intéressant, le coût n\u0026rsquo;est pas très élevé mais il y a de gros inconvénients. Les logiciels sont difficilement accessibles sous Linux, ils sont chers pas toujours très puissants. Il a donc développé lui-même son logiciel de gestion. Le conférencier nous indique qu\u0026rsquo;il utilise des commandes AT (commandes pour des modems), cela permet d\u0026rsquo;intéragir avec les SIM. Il supprime systématiquement les SMS des SIM pour rester anonyme. La gestion des cartes SIM est grandement facilitée.\nPour automatiser la création de compte sur les réseaux sociaux :\ncréer son proxy 4G utilisation de Selenium undetectable pour outrepasser les protections anti-bots utilisation de Buster (résolution de captcha) ","date":"30 juin 2022","permalink":"/posts/lehack2022/conferences-techniques/puppet-master/","section":"Mes articles","summary":"Palenath Megadose\nLa conférence parle essentiellement de la création gratuite et facile de numéros de téléphone, utiles dans le cadre de la création de faux comptes de réseaux sociaux.","title":"How to become the socket puppets master ?"},{"content":"Mirza Burhan Baig\nLogic flaw : traduit en \u0026ldquo;faille logique\u0026rdquo; dans ce retex, est une faille qui vient d\u0026rsquo;un manquement de l\u0026rsquo;application à vérifier son comportement lorsque l\u0026rsquo;utilisateur effectue des actions innatendues.\nLe top 10 des vulnérabilités web OWASP répertorie ce type de faille dans son classement. Pourtant, cela reste largement sous testé.\nCe type de faille vient d\u0026rsquo;une confiance excessive que l\u0026rsquo;application a envers l\u0026rsquo;utilisateur, ou la partie cliente d\u0026rsquo;une application. La faille résulte d\u0026rsquo;un échec du traitement d\u0026rsquo;une entrée non conventionnelle. Il faut partir du principe que l\u0026rsquo;utilisateur ne va pas toujours suivre le chemin prévu, surtout lorsqu\u0026rsquo;il s\u0026rsquo;agit d\u0026rsquo;une personne malveillante. De manière générale, la faille résulte d\u0026rsquo;une néglicence, d\u0026rsquo;un manquement dans le process.\nCe type de faille peut être aussi dévastatrice qu\u0026rsquo;une XSS ou une injection SQL. Il ne faut pas les sous-estimer ou les ramener à de simples bugs, mais plutôt les considérer comme des failles à part entière. Les failles logiques sont plutôt présentes dans des applications bancaires, du fait de leur complexité ainsi que des multiples étapes dans les processus d\u0026rsquo;authentification.\nPlusieurs pistes pour gérer ces failles :\nne pas faire confiance à l\u0026rsquo;utilisateur ou à la partie cliente d\u0026rsquo;une application. implémenter des jeux de tests complets dans l\u0026rsquo;application. audit en boîte blanche et analyse de la gestion des erreurs, des réponses de l\u0026rsquo;application ainsi que les points critiques (authentification par exemple). ","date":"30 juin 2022","permalink":"/posts/lehack2022/conferences-techniques/web-logic-flaw/","section":"Mes articles","summary":"Mirza Burhan Baig\nLogic flaw : traduit en \u0026ldquo;faille logique\u0026rdquo; dans ce retex, est une faille qui vient d\u0026rsquo;un manquement de l\u0026rsquo;application à vérifier son comportement lorsque l\u0026rsquo;utilisateur effectue des actions innatendues.","title":"Logic flaws, what are we missing in web application"},{"content":"Damien Cauquil\nLe conférencier veut nous inviter à aller plus loin que l\u0026rsquo;accès root. Il prend l\u0026rsquo;exemple d\u0026rsquo;un modèle de routeur où une faille 0-day a été découverte et qui ne sera pas patchée par le fabricant. Qu\u0026rsquo;est-ce qu\u0026rsquo;il est alors possible de faire ? Est-il possible d\u0026rsquo;avoir un accès total à la machine ? Pas seulement root, mais vraiment total ; pouvoir installer un autre firmware dessus, pose de backdoor, pivot\u0026hellip;\nLe système est un linux embarqué. Son boot process est le suivant : boot ROM -\u0026gt; Bootloader -\u0026gt; Kernel. Le Secure Boot est un méchanisme de protection qui permet de s\u0026rsquo;assurer que chaque composant du processus de boot est sain. Si un tel méchanisme est en place sur cet appareil, il faudra le neutraliser ; sinon l\u0026rsquo;appareil ne bootera pas.\nL\u0026rsquo;appareil comporte également une mémoire type NAND flash. C\u0026rsquo;est une mémoire peu fiable qui possède un méchanisme de nivellement d\u0026rsquo;usure et un mécanisme de code correcteur d\u0026rsquo;erreur (ECC).\nProblèmes post-exploit # Grâce à l\u0026rsquo;exploit de la 0-day nous sommes root, et ensuite ? On pourrait créer un botnet, prendre le contrôle de l\u0026rsquo;entiereté du système ou bien utiliser la machine pour du rebond.\nOn souhaite garder un accès à la machine et bloquer les éventuelles mises-à-jour.\nProblème : la mémoire du système est une ROM (read only memory), comment laisser une backdoor sur un système en lecture seule ? On pourrait alors dumper la mémoire, l\u0026rsquo;éditer puis la flasher de nouveau sur la ROM. Cependant, c\u0026rsquo;est une opération risquée en soit, et encore plus si la machine possède un Secure Boot. Pour vérifier ce dernier point, il faut fouiller dans le firmware de l\u0026rsquo;appareil. En faisant du reverse, on s\u0026rsquo;apperçoit qu\u0026rsquo;il y a des conditions étranges au tout début du démarrage de la machine, c\u0026rsquo;est un Secure Boot maison. Il possède une vulnérabilité : il ne vérifie pas l\u0026rsquo;intégralité du Bootloader, en plus du fait que les vérifications ne semblent être que deux conditions. Il suffit de les mettre à vrai pour outrepasser le Secure Boot.\nUne fois cette étape terminée, il n\u0026rsquo;y a plus aucune sécurité. On peut alors installer OpenWRT (distribution Linux pour du matériel embarqué).\nConclusion\nUn shell root ne veut pas dire qu\u0026rsquo;on a compromis tout le système. Le Secure Boot n\u0026rsquo;est pas infaillible, surtout lorsque c\u0026rsquo;est une solution maison. La programmation des mémoires types NAND flash est quelque chose de risqué. ","date":"30 juin 2022","permalink":"/posts/lehack2022/conferences-techniques/hacked-wifi-router/","section":"Mes articles","summary":"Damien Cauquil\nLe conférencier veut nous inviter à aller plus loin que l\u0026rsquo;accès root.","title":"So you hacked a wifi router and now what ?"},{"content":"Aman Sachdev\nObjectif : accéder au SDMS (scientist data managment system).\n1. Internet to intranet # L\u0026rsquo;équipe a commencé par essayer d\u0026rsquo;infiltrer la compagnie par le biais de ses applications webs. Ils ont trouvé une RCE, une injection SQL, une faille sur l\u0026rsquo;authentification SMTP, des défauts dans la configuration SAP ainsi que des mots de passe par défaut sur certaines installations. Ils ont également effectué de l\u0026rsquo;OSINT sur des employés via des fuites de bases de données, cela leur a permis de disposer de mots de passe. Cependant, les accès qu\u0026rsquo;ils ont pu avoir étaient limités par rapport à l\u0026rsquo;objectif final.\nIls ont donc décidé d\u0026rsquo;une approche physique. En rôdant dans une voiture à proximité du campus, ils sont parvenus à capter une borne wifi de l\u0026rsquo;entreprise et à s\u0026rsquo;infiltrer dans le réseau interne par ce biais.\n2. Eviter le SOC et exfiltrer de la donnée # Puisque c\u0026rsquo;est une grande entreprise, il y a une multitude de pare-feux, de bâtiments, de réseaux\u0026hellip; Pour bien cartographier, ils ont fait des scans, testé les VLAN, écouté le réseau et fait du phishing interne. Ils ont utilisé des exploits pour les pare-feux ce qui leur a donné accès à une base de données chiffrée.\nLes principales failles sont des logiciels installés par des tiers, qui ne sont plus maintenus/utilisés. Pour les exploiter, les auditeurs ont lu la documentation et identifié les mots de passe par défaut. Une faille importante était une base de données lancée avec les privilèges super-utilisateurs. Ces multiples failles leurs ont permis d\u0026rsquo;avoir accès aux notes des scientifiques ainsi qu\u0026rsquo;à un logiciel qu\u0026rsquo;ils utilisent pour avoir accès au SDMS. Ils ont posé une backdoor type Man-in-the-browser, lorsqu\u0026rsquo;une personne s\u0026rsquo;est connectée au SDMS, ils ont pu récupérer ses identifiants pour avoir un accès. Jackpot ! le SDMS contient les formules chimiques des molécules utilisées par le laboratoire et qui font l\u0026rsquo;objet de recherches très pointues et dont l\u0026rsquo;investissement est de plusieurs milliards de dollars. Les auditeurs étaient donc en mesure de modifier, supprimer, intervertir, exfiltrer les formules et les notes des scientifiques.\nL\u0026rsquo;objectif était atteint mais les auditeurs ont voulu poursuivre l\u0026rsquo;exploration.\n3. Accès à la ligne de production # Grâce à l\u0026rsquo;exploitation d\u0026rsquo;une configuration par défaut, les auditeurs ont été en mesure d\u0026rsquo;accéder à une machine vulnérable à une 0-day. C\u0026rsquo;était gagné : ils étaient en mesure de contrôler des machines de la ligne de production, création de boîtes, empaquetage\u0026hellip;\nL\u0026rsquo;objectif d\u0026rsquo;accéder au SDMS était atteint, avec en plus un bonus : les accès à la ligne de production.\nLes faiblesses identifiées \u0026amp; résumé # trop de scans possibles : trop de données en libre accès (OSINT sur les employés par exemple), mots-de-passes inchangés après des fuites\u0026hellip; la reconnaissance a été trop facile. services mal configurés, ou configurés par défaut. exploit possible sur des applications exposées sur le web. création de binaires signés, obfuscation des payloads, utilisation de token impersonation et désactivation des pare-feux. utilisation de Cobalt Strike, de VPN, de Meterpreter et de ABPTTS. SSL impersonation, One Drive/DropBox -\u0026gt; difficile de bloquer les bons flux avec ces outils là sur le réseau. Cela a facilité la discrétion des auditeurs. exfiltration et stéganographie grâce à CloakifyFactory, bind shell over HTTPS, DNS tunneling, ICMP, Empire Dropbox\u0026hellip; ","date":"30 juin 2022","permalink":"/posts/lehack2022/conferences-techniques/red-team-aspirin-mdma/","section":"Mes articles","summary":"Aman Sachdev\nObjectif : accéder au SDMS (scientist data managment system).","title":"Swapping aspirin formulas with MDMA while red teaming a billion dollar pharmaceutical"},{"content":"Lieutenant Yann Derweduwen (C3N)\nLe ComCyberGend communique beaucoup avec d\u0026rsquo;autres organismes nationaux comme l\u0026rsquo;ANSSI les assureurs ou encore la Police Judiciaire. L\u0026rsquo;Europe n\u0026rsquo;est pas en reste non plus puisqu\u0026rsquo;une communication privilégiée avec Interpol est également en place.\nL\u0026rsquo;OSINT se situe dans ce processus de travail :\nAccueil du public -\u0026gt; OSINT -\u0026gt; ESP* basse intensité -\u0026gt; ESP (infiltration active, filature, planque \u0026hellip;)\n*ESP : enquête sous pseudonymat (infiltration). L\u0026rsquo;ESP de basse intensité ne comporte pas de contact direct avec d\u0026rsquo;éventuels malfaiteurs.\nL\u0026rsquo;OSINT au sens du gendarme ne comporte un travail que sur ce qui pourra être jugé ensuite. Il n\u0026rsquo;y a pas de collecte des opinions politiques, d\u0026rsquo;une tendance d\u0026rsquo;un individu, si cela ne permet pas de constituer une preuve. C\u0026rsquo;est la différence entre le renseignement -\u0026gt; anticiper et le judiciaire -\u0026gt; punir. A la différence du renseignement, le judiciaire ne fait que du légal et la façon d\u0026rsquo;obtenir des informations est importante. En France la preuve est libre, on travail à charge et à décharge, cela n\u0026rsquo;est pas le cas dans tous les pays.\nD\u0026rsquo;une manière générale, on applique les mêmes techniques dans le cyberespace que dans le \u0026ldquo;monde réel\u0026rdquo;. Le cyber est un espace comme les autres, au même type qu\u0026rsquo;un milieux montagnard : il a des règles et des limitations intrinsèques.\nLa première chose à faire est d\u0026rsquo;étudier l\u0026rsquo;environnement immédiat, on va ensuite en élargissant :\ngel des lieux -\u0026gt; on fige les preuves (scrapping) planque \u0026amp; filature -\u0026gt; surveillance des réseaux sociaux, d\u0026rsquo;éventuel site sur les darknets \u0026hellip; Il est compliqué d\u0026rsquo;utiliser une détection par les signaux faibles. Cela demande de très gros moyens et ça n\u0026rsquo;est pas toujours légal. L\u0026rsquo;exploitation de fuite de base de données est considéré comme du recel.\nGEOTROUVETOUT\nOverpass Turbo qui était utilisé avant par le C3N, possède plusieurs limitations :\nlangage de requête complexe documentation perfectible pas de sauvegarde C\u0026rsquo;est pourquoi le C3N a développé un outil qui se base sur Overpass Turbo, baptisé Geotrouvetout. Il suffit de décrire un lieux (présence d\u0026rsquo;un passage piéton, d\u0026rsquo;une pharmacie à moins de 50m, un feux tricolore \u0026hellip;) et l\u0026rsquo;outil sort des lieux probables.\nUn exemple d\u0026rsquo;utilisation de l\u0026rsquo;outil a été exposé : un vrai appel au SDIS31 avec un interlocuteur très confus. La personne est en état de choc, son ami vient de se brûler le visage et il ne semble pas en mesure de décrire l\u0026rsquo;endroit où il se trouve, il n\u0026rsquo;est pas précis. Le pompier lui demande de décrire le lieux autour de lui et grâce à ces éléments et quelques déductions, il est possible de trouver le lieux de l\u0026rsquo;appel et d\u0026rsquo;envoyer une équipe très rapidement grâce à l\u0026rsquo;outil.\n","date":"30 juin 2022","permalink":"/posts/lehack2022/osint/judiciariser-losint/","section":"Mes articles","summary":"Lieutenant Yann Derweduwen (C3N)\nLe ComCyberGend communique beaucoup avec d\u0026rsquo;autres organismes nationaux comme l\u0026rsquo;ANSSI les assureurs ou encore la Police Judiciaire.","title":"OSINT et les investigations judiciaires"},{"content":"Ces documents sont les prises de notes rédigées de certaines conférences de Le Hack 2022. Ces notes peuvent être incomplètes ou inexactes ; certaines conférences dépassant mes domaines de compétences. Chacune d\u0026rsquo;entre-elles durait 45 minutes et étaient parfois présentées en anglais. Les conférences sont regroupées en deux parties :\nOSINT (plus compréhensibles pour le commun des mortels) Conférences techniques (plus difficiles à appréhender) Les conférences auxquelles j\u0026rsquo;ai participé et dans lesquelles j\u0026rsquo;ai pris des notes pertinentes sont :\nOSINT :\nL\u0026rsquo;OSINT et les investigations judiciaires Lieutenant Yann Derweduwen (C3N) Cactées \u0026amp; succulentes, anatomie de la désinformation Open Facto L\u0026rsquo;OSINT dans la Red Team Epios Conférences Techniques :\nDissecting and comparing different binaries to malware analysis Filipi Pires Honey Pot in ICS environment CyberSec ICS How to become a puppet Master ? So you hacked a wifi router and now what ? Daniel Cauquil Swapping Aspirin Formulas with MDMA while red teaming a billion dollar pharmaceutical Aman Sachdev Logic flaws, what are we missing in web application ? Mirza Burhan Baig ","date":"30 juin 2022","permalink":"/posts/lehack2022/","section":"Mes articles","summary":"Ces documents sont les prises de notes rédigées de certaines conférences de Le Hack 2022.","title":"Le Hack 2022"},{"content":"Je vais vous expliquer simplement comment cette faille, découverte le 10 décembre 2021, est en mesure de mettre à feu et à sang l’écrasante majorité des systèmes informatiques. La légende voudrait qu’elle ait été découverte sur un serveur Minecraft dont l’unique but était de faire des farces. Cette faille a le bon goût de ne pas être trop technique, laissez vous guider, je vous explique tout …\nD\u0026rsquo;abord une librairie : log4j # Tout commence par la librairie log4j qui est écrite en Java (oui le même truc qui vous demande souvent une mise à jour). Une librairie c’est du code écrit par des développeurs pour automatiser des tâches et qui est ensuite réutilisée par d’autres développeurs dans des projets plus gros. C’est un peu comme une brique spécifique qui permet de construire plus rapidement des maisons. Une grande partie des applications, des sites, des logiciels utilisées sur le web (ou reliés au web) utilise log4j et donc Java. Cette librairie sert essentiellement à gérer les logs, c\u0026rsquo;est-à-dire la trace de ce qu\u0026rsquo;il se passe sur le serveur.\nEnsuite la faille : log4shell # Log4shell est le nom de la faille, et elle se base sur une vulnérabilité de log4j. Mais comment ça fonctionne ? En fait log4j pour fonctionner reçoit des données et les traite. Cependant, dans les données qu’on lui envoie on peut lui signifier des tâches automatiques à faire (par exemple, ajouter dynamiquement l\u0026rsquo;heure), et notamment lui demander d’aller chercher du contenu quelque part sur internet. Si on demande à log4j d’aller chercher du code Java… la librairie va exécuter ce code ! C’est ça la faille log4shell.\nCela signifie que si j’envoie la bonne donnée à un serveur, celui-ci demande à log4j de la traiter. Cependant cette donnée dit à la librairie d’aller chercher une ressource sur internet qui n’est autre que du code Java malveillant que j’ai moi-même codé. Une fois ce code récupéré, le serveur va l’exécuter. Je peux alors exécuter n’importe quel code Java sur un serveur ne m’appartenant pas. On peut utiliser ce code pour créer un « reverse shell » (d’où le nom log4shell) : un accès direct, non autorisé et avec tous les droits sur le serveur. On a donc un accès total et absolu sur la machine ciblée.\n(en vérité le niveau d\u0026rsquo;accès dépend de plusieurs facteurs, mais souvent on peut obtenir des accès assez importants voire carrément administrateurs)\nOn peut ensuite utiliser cet accès pour essayer d’accéder à d’autres machines, créer un autre accès plus discret, mettre hors service le serveur, voler des données…\nLog4j everywhere # Cette librairie est partout, et sa faille avec. Un exemple : le rover de la NASA actuellement sur Mars utilise log4j. Les pirates peuvent donc librement scanner internet à la recherche d’un serveur, d’une application, d’un site qui utilise cette librairie pour ensuite prendre le contrôle de la machine. C’est d’ailleurs ce qu’ils font depuis que la faille a été exposée au grand jour, comme on peut le voir sur ce site qui répertorie les tentatives d’exploitation de la vulnérabilité : log4j-tracker. Mais il y a pire, encore faut-il savoir qu\u0026rsquo;on utilise cette librairie ! Les logiciels sont de plus en plus complexes et embarquent avec eux des librairies\u0026hellip; qui embarquent elles-mêmes des librairies, et ainsi de suite ! On peut donc être vulnérable au second, troisième\u0026hellip; n-ième degré, sans le savoir.\nA l’heure de l’écriture de ces lignes (17 décembre 2021) c’est une course contre les pirates qui est menée par les responsables cybersécurité de toutes les entreprises/organismes qui utilisent cette librairie. Certains publient des correctifs alors que dans le même temps des pirates cherchent à les contourner.\nMes pensées vont à tous les responsables cyber qui passeront (à minima) des fêtes de fin d’année mouvementées…\n","date":"17 décembre 2021","permalink":"/posts/la-plus-grosse-faille-de-la-decennie-log4shell/","section":"Mes articles","summary":"Je vais vous expliquer simplement comment cette faille, découverte le 10 décembre 2021, est en mesure de mettre à feu et à sang l’écrasante majorité des systèmes informatiques.","title":"La Plus Grosse Faille De La Décennie Log4shell"},{"content":"Comment les centrales nucléaires iraniennes on-t-elles été infiltrées et sabotées par un programme informatique ?\nCet article est un issu d\u0026rsquo;un devoir d\u0026rsquo;analyse de la menace effectué durant ma première année d\u0026rsquo;école d\u0026rsquo;ingénieur.\nTout commence en Biélorussie\u0026hellip; # En juin 2010, la société biélorusse VirusBlockAda reçoit un appel d’un de ses clients irannien. Certains ordinateurs ont un comportement étrange, ils redémarrent sans raison et indiquent des BSOD (erreur système fatale). Ce qui semblait être une infection mineure, s’avère être bien plus mystérieux quand l’équipe biélorusse découvre qu’un programme malveillant est à l’œuvre et que celui-ci est signé par des sociétés comme Verisign ou encore Realtek Semiconductor Corps, des compagnies reconnues, sérieuses et fiables.\nQuelques mots sur la signature # La signature est un procédé cryptographique qui permet d\u0026rsquo;approuver la provenance et l\u0026rsquo;intégrité (non-modification) de l\u0026rsquo;élément signé, ici un programme. Cela permet d\u0026rsquo;être certain que le programme provient bien d\u0026rsquo;une organisation de confiance. C\u0026rsquo;est cette organisation qui signe le logiciel grâce à un certificat, et chacun peut ensuite vérifier que la signature est bien celle de l\u0026rsquo;organisme émetteur.\nLes certificats sont créés par l\u0026rsquo;organisme et sont extrêmement bien protégés. En effet, si un pirate pouvait obtenir un certificat d\u0026rsquo;une société comme Google, il pourrait créé un programme se revendiquant de cette entreprise. Les machines approuvant les programmes de chez Google laisseraient donc aussi ce programme passer.\nLa première cyber-arme de l\u0026rsquo;Histoire # Après des recherches plus poussées, il s’avère que ce programme utilise quatre « zero days » (failles pour lesquelles il n\u0026rsquo;existe pas de correctif, souvent inconnues avant leur exploitation) et qu’il passe outre la plupart des antivirus. VirusBlockAda venait de découvrir Stuxnet, la première « cyber arme » connue de l’histoire qui visait des systèmes industriels très précis, à savoir des centrifugeuses iraniennes d’enrichissement d’uranium. Ces sites hautement sensibles et protégées se sont soudainement rendues compte que leurs machines étaient infectées depuis au moins un an par un « APT » (advanced persistant threat = menace avancée persistante). Pire que cela, après des mois d’investigation, les iraniens ont reconnu que Stuxnet avait réussi à « causer des problèmes à un nombre limité de nos centrifugeuses » mais aussi que le virus aurait été introduit via des clefs usb infectées. Enfin, selon Microsoft, une équipe sur place aurait été nécessaire afin d’avoir une connaissance de l’environnement suffisante pour développer le programme. Plusieurs questions se posent :\ncomment une attaque d’une telle complexité, d’une telle envergure, a-t-elle pu être menée à bien ? comment est-ce possible qu’un virus puisse impacter ce type d’installation ? pourquoi est-il passé sous les radars ? Contexte # Cette attaque inédite s’inscrit dans un environnement géopolitique complexe entre l’Iran, ses voisins (notamment Israël), et les puissances occidentales. Depuis des décennies, l’Iran mène un programme nucléaire civil. Cependant, plusieurs puissances étrangères pensent que ce programme de recherche cache un côté militaire visant à l’acquisition de l’arme nucléaire. Cela menace l’équilibre géopolitique précaire de la région, en particulier avec Israël. Ce programme, quel que soit son objectif, nécessite des centrifugeuses et c’est l’entreprise Siemens qui les fournit. C’est un des points clefs du projet et c’est à ces dispositifs que Stuxnet s’attaque. Aujourd’hui, il semblerait que cette attaque ait été orchestrée par les États-Unis dans le cadre de l’opération « Olympic Games » (voir l\u0026rsquo;affaire Snowden), avec l’aide d’Israël. Ce dernier ne se cachant plus que la cyberguerre fait désormais partie intégrante de sa doctrine militaire.\nA noter que ni les Etats-Unis, ni Israël n\u0026rsquo;ont revendiqués l\u0026rsquo;attaque. Il y a toujours des doutes quant aux commanditaires de cette opération. Plusieurs éléments semblent indiquer qu\u0026rsquo;il pourrait s\u0026rsquo;agir de ces deux pays. De manière générale, un état ne revendique jamais ses actions offensives dans le cyber-espace (guerre en Ukraine à part).\nExploitation # Ce virus se propage de trois manières différentes, via des clefs USB, des fichiers projets Siemens vérolés, ou par réplication dans le réseau. De plus, il est capable d’établir un réseau peer-to-peer pour se mettre à jour même sans connexion internet. En se répliquant, le virus est capable de communiquer avec ses copies, si l\u0026rsquo;une de ces copies possède un accès à internet, elle va se mettre à jour et transmettre les mises à jour aux autres copies sur le réseau (bien souvent non connnectées à internet).\nStuxnet dispose de deux atouts pour rester discret : il est signé par des entreprises officielles et il peut modifier son comportement en fonction des antivirus installés sur les machines. A noter que ce programme vise des installations très spécifiques. S’il ne se trouve pas sur l’une d’elles, il se réplique sur les machines à sa portée et se supprime. Il est important de comprendre la subtilité avec laquelle Stuxnet vise ses cibles. Ce programme a été retrouvé a posteriori dans plusieurs systèmes industriels de par le monde, notamment dans une centrale nucléaire russe. Cela grâce à l’efficacité de la propagation du vers (type de virus). Cependant, les cibles semblent être les centrales nucléaires iraniennes, aux vues des versions et configurations extrêmement précises requises pour que Stuxnet opère. Cela renforce également les soupçons d’une aide interne pour obtenir ces informations ultra-sensibles.\nVient ensuite la phase d’installation et de persistance durant laquelle il utilise une faille zero-day pour élever ses privilèges et se copier dans des processus systèmes de Windows, le rendant quasiment invisible. Une fois arrivé à son objectif, Stuxnet communique avec l’API de la centrifugeuse et modifie les données envoyées et reçues. Se faisant, il masque les alertes de sécurité et change périodiquement la vitesse de rotation des centrifugeuses. L\u0026rsquo;objectif visé était d\u0026rsquo;endommager les centrifugeuses pour retarder le programme nucléaire irannien. Dans le même temps, le système de pilotage indique un comportement normal de l’automate. On retrouve ici les caractéristiques types d’une APT avec beaucoup d’efforts investis sur la persistance de Stuxnet.\nEnfin, l’objectif de Stuxnet était vraisemblablement de ne jamais être découvert puisqu’une date d’effacement du programme était fixée au 24 juin 2012. Ce programme étant décrit comme « la cyber arme la plus complexe de l’Histoire » dispose même d’un processus d’effacement complexe et évolué. Ce code a été ensuite analysé puis récupéré par des agences étatiques et des cyber-criminels pour produire d’autres virus redoutables tels que Flame ou Duqu. Flame serait à l’origine d’attaques visant la destruction de données.\nCe qu\u0026rsquo;il faut retenir # Cette opération nous montre qu’une attaque d’une telle envergure n’est possible qu’avec le travail d’une ou plusieurs puissances étrangères aux moyens et capacités opérationnelles importants. Elle nécessite de disposer de renseignements très précis et fiables qui ne peuvent être dispensés que par ceux travaillant au plus proche des cibles. On observe également qu’une avance technologique est obligatoire ainsi que des exactions illégales préalables (certificats volés, espionnage). La détection de pareilles menaces est difficile et leurs exactions est parfois invisible.\nLa cyberguerre est largement mondialisée et il convient de s’y préparer, autant offensivement que défensivement.\nSource # Pour aller plus loin je vous recommande vivement les articles ci-dessous et pour les plus techniques cette conférence Youtube par un employé de Microsoft qui explique le fonctionnement de Stuxnet : 27C3: Adventures in analyzing Stuxnet (Bruce Dang from Microsoft).\nThe man who found Stuxnet, Sergey Ulasen in the spotlight - Eugene Kaspersky Stuxnet - Wikipedia Stuxnet - Generation NT Programme nucléaire irannien - Wikipedia Virus Stuxnet, l\u0026rsquo;arroseur arrosé - Infoguerre Analysis shows traces wiper malware no links flame - Threatpost Opération Olympic Games - Wikipedia Signature de code - Wikipedia ","date":"21 novembre 2021","permalink":"/posts/stuxnet-infiltrer-et-compromettre-une-centrale-nucleaire/","section":"Mes articles","summary":"Comment les centrales nucléaires iraniennes on-t-elles été infiltrées et sabotées par un programme informatique ?","title":"Stuxnet : Infiltrer Et Compromettre Une Centrale Nucleaire"},{"content":"Ce titre n’est (presque) pas une blague. VOUS avez le niveau pour comprendre comment vos données en ligne sont protégées. Oui, même si vous n’avez peut-être pas un bac scientifique, ni même le brevet, je vous assure que si vous vous laissez porter par ces quelques lignes, vous comprendrez tout de l’algorithme de chiffrement RSA. Ce protocole de chiffrement, ou algorithme, tire son nom de ces trois inventeurs, Rivest Shamir et Adleman.\nMise en situation : vous êtes sur Internet en train de choisir votre prochain smartphone, vous l’avez trouvé et vient le douloureux moment du passage en caisse. Vous rentrez vos codes bancaires et ça y est, ce smartphone est à vous. Pendant ce temps là, je suis confortablement installé derrière mon ordinateur et j’espionne vos activités en ligne (tel un « hacker » des films américains, voyez ?), je récupère toutes les données que vous envoyez sur le web. Croyez-moi, cela est d’une simplicité déconcertante. Comment, à ce moment-là, garantir que je ne puisse pas utiliser vos codes bancaires pour vider votre compte en banque ?\nIn maths we trust # La réponse est simple : en les rendant illisibles. C’est ce qu’on appelle la cryptographie : transformer un texte qui a du sens en un autre qui n’en a apparemment pas. Cela est utilisé depuis la nuit des temps, Nabuchodonosor (le roi de Babylone), César et d’autres ont utilisé la cryptographie. A l’époque les codes étaient rudimentaires et simples, aujourd’hui cela s’est un peu complexifié. On utilise des protocoles, des modes d’emplois, des chiffrements très puissants. L’un des plus connus et abordables est RSA.\nAujourd’hui, la cryptographie est partout, mais derrière ce nom quasi mystique se cache des mathématiques à la fois très simples et terriblement puissantes. Avant de vous expliquer en quoi consiste RSA, il convient de revoir quelques bases de mathématiques.\nEn maths il existe pleins de nombre, je ne vous apprends rien. Certains ont des propriétés particulières, c’est le cas de 2,3,5,7,11,13… ce sont des nombres premiers. Ils ont quelque chose de spécial… ils n’ont aucun diviseurs, exceptés 1 et eux-même. Par exemple, si on veut diviser 13 par autre chose que 1 ou 13, on ne trouvera jamais un entier, c’est-à-dire un chiffre sans virgule. Essayez, vous verrez : 13/2=6,5 13/3=4,3, il n’existe aucun nombre excepté 1 ou 13 qui divise 13, ou un nombre premier en général.\nLes nombres premiers ont quelques particularités intéressantes. Déjà, il en existe une infinité, c’est prouvé. Se baser sur de l’infini pour faire de la sécurité, c’est terriblement rassurant. Par contre on sait aussi qu’ils se raréfient au fur et à mesure qu’on en cherche des grands, c’est un peu moins pratique. Mais la propriété qui nous intéresse le plus, c’est la décomposition en facteurs premiers d’un nombre…\nPrenons un nombre quelconque, par exemple 42. On peut réécrire 42 comme étant 2x3x7. 2, 3 et 7 sont des nombres premiers. On vient donc de décomposer un nombre en le produit de ses facteurs premiers. La propriété qui est intéressante ici, c’est le fait que cette décomposition est unique, c’est un peu comme un identifiant unique pour tout nombre.\nJe récapitule, on a d’un côté un identifiant unique, et de l’autre des éléments aux propriétés particulières qui sont en nombre infinis, croyez moi on se rapproche d’un algorithme de chiffrement… il ne manque qu’une dernière chose, de la complexité.\n## La complexité\nEn informatique, quand on parle de complexité, ça ne veut pas dire exactement la même chose que dans le langage courant. La complexité d’un programme informatique, d’un algorithme, peut se comprendre comme étant la mesure d’à quel point la tâche est fastidieuse à réaliser. Par exemple, si je vous demande de retrouver, dans une liste de 100 nombres aléatoires le chiffre 5, la tâche est plus fastidieuse que si la liste de nombre est ordonnée, par exemple dans l’ordre croissant. Dans le second cas, votre recherche sera bien plus rapide. C’est ce qu’on nomme la complexité algorithmique. Plus la complexité d’un algorithme est élevée, et plus l’ordinateur mettra de temps à réaliser la tâche qu’on lui a attribuée. Ni vous ni moi n’aimons qu’un ordinateur « rame » et c’est pourquoi on s’efforce de construire des algorithmes performants. Seulement, en sécurité, on souhaite tout l’inverse, que certains programmes soient les plus lents possibles. C’est exactement ce qui est recherché en cryptographie. Courage ! Encore quelques lignes et vous allez comprendre …\nRevenons à nos nombres. Tout à l’heure nous avons pris un nombre au hasard, 42, et nous l’avons décomposé en le produit de ses facteurs premiers. La tâche n’est pas bien difficile, et par tâtonnement, elle n’a pas pris beaucoup de temps. Cependant, imaginez maintenant que je vous demande la même chose… avec ce nombre :\n1 388 657 789\nLa tâche est autrement plus compliquée, vous ne trouvez pas ? Par contre, vérifier qu’un produit de facteurs premier correspond bien à ce nombre est autrement plus facile ; il suffit de calculer et de comparer. Et bien l’algorithme RSA repose exactement sur ce problème-là.\nEn d’autre termes, il repose sur le fait qu’un nombre suffisamment grand est très difficilement décomposable en produit de facteurs premiers. Alors même que vérifier si un nombre est bien le résultat d’un produit est simple, l’inverse, c’est-à-dire le décomposer, est autrement plus compliqué. Entendons-nous bien, quand je dis compliqué cela signifie que trouver la décomposition en facteurs premiers est long, même pour un ordinateur. Cela ne signifie pas que c’est “mathématiquement” très compliqué au sens strict du terme, avec beaucoup de temps et de volonté, il serait tout à fait possible d’y arriver. C’est juste très long, et ça l’est aussi pour un ordinateur.\nPour vous donner une image, c’est un peu comme faire un puzzle. Il est très facile, rapide, de vérifier qu’un puzzle est correct, par contre résoudre le puzzle demande beaucoup plus de temps ; c’est un problème asymétrique. Le problème est simple à vérifier mais difficile à résoudre. C’est l’essence même de RSA.\nC’est cette asymétrie là qui permet que je ne puisse pas déchiffrer vos codes bancaires chiffrés lorsque vous effectuez un achat en ligne. Avec un nombre de départ, qu’on appelle une clef publique, suffisamment grande, de l’ordre d’un nombre composé de plus de 300 chiffres (oui vous avez bien lu!), il est impossible, dans un temps raisonnable, de trouver sa décomposition en facteurs premiers. Cette décomposition là on l’appelle clef privée, et c’est elle et elle seule qui permet de déchiffrer le message.\nSi vous pensez avoir saisi le concept, vous pouvez vous arrêter là. La suite de l’article détaille un exemple de chiffrement avec RSA, c’est un peu plus velu. La partie suivante sert à être plus exhaustif sur le fonctionnement de l’algorithme.\nFaisons un exemple # Construisons une clef publique. Pour cela, rien de plus simple, prenons deux nombres premiers un peu grands, 47 591 et 29 179. Multiplions-les entre-eux et on obtient notre clef publique : 1 388 657 789, cette clef publique permet, avec une fonction mathématique un peu compliquée, de chiffrer un message, par exemple « coucou » en « j@45hqm!îjdf@kd74 ». J’insiste, la clef publique ne sert qu’à chiffrer le message. Cette clef publique n’est un secret pour personne : elle est publique. Même une personne mal intentionnée peut disposer de votre clef publique, ce n’est pas très grave.\nLe destinataire de ce message quant à lui dispose de sa clef privée, qu’il ne doit absolument pas dévoiler : ce sont les deux nombres premiers de départ, 47 591 et 29 179, qui est donc la décomposition en facteurs premiers de ma clef publique, et qui permet de déchiffrer le message cryptée, par exemple « j@45hqm!îjdf@kd74 » en « coucou ».\nOn retrouve bien le message d’origine, et pendant ce temps-là, personne n’a pu découvrir ce qu’il contenait. Pourquoi ça ? Parce qu’il est difficile de retrouver ma clef privée seulement à partir de la clef publique : il est difficile de décomposer 1 388 657 789 comme étant 47 591×29 179, cela est complexe algorithmiquement (souvenez-vous, on a parlé de la complexité plus haut). Or, seule la clef privée permet de déchiffrer « j@45hqm!îjdf@kd74 » en « coucou ».\nVoici un schéma qui récapitule ce que je viens d’expliquer.\nFigure 1 : 1re étape : Alice génère deux clefs. La clef publique (verte) qu’elle envoie à Bob et la clef privée (rouge) qu’elle conserve précieusement sans la divulguer à quiconque. Figure 2 : 2e et 3e étapes : Bob chiffre le message avec la clef publique d’Alice et envoie le texte chiffré. Alice déchiffre le message grâce à sa clef privée. RSA # Vous savez maintenant comment fonctionne RSA, l’un des protocoles de chiffrement les plus utilisés et connus au monde, qui ne repose sur rien d’autre qu’un problème mathématique rudimentaire. Alors rassurez-vous, présenté comme cela, ce protocole peut vous paraître faible et facilement contournable, mais il n’en est rien. La preuve en est qu’il tient en échec tous ceux qui ont voulu s’attaquer à lui depuis les années 70, et ils sont nombreux.\nFrançaises, Français, soyez fiers de vos couleurs puisque c’est une équipe de recherche française qui détient le record de performance pour avoir essayé de casser RSA. Sans rentrer dans les détails, ils sont arrivés, en 2012, à factoriser un nombre composé de 250 chiffres dans un temps raisonnable.\nPour aller plus loin # Les codes secrets, ScienceEtonnante [vidéo en ligne][consulté le 16 novembre 2020]. Le chiffrement sur le web (HTTPS)-Monsieur Bidouille, Monsieur Bidouille [vidéo en ligne][consulté le 16 novembre 2020]. Wikipédia, Cryptographie asymétrique [en ligne][consulté le 14 novembre 2020]. Wikipédia, RSA Factoring Challenge [en ligne][consulté le 12 novembre 2020]. Wikipédia, Nombre premier [en ligne][consulté le 10 novembre 2020]. Wikipédia, Problème P ≟ NP [en ligne][consulté le 14 novembre 2020]. Wikipédia, Analyse de la complexité des algorithmes [en ligne][consulté le 14 novembre 2020] Sources # Schéma 1 Schéma 2 MOOC 2015 “Arithmétique : en route pour la cryptographie”, université de Lille [cours composé de 6 parties, vidéo disponible en ligne] [consulté le 16 novembre 2020]. Les nombres premiers, Pierre Colmez [pdf en ligne][consulté le 16 novembre 2020]. Douglas Stinson, Cryptographie, théorie et pratique, Vuibert, 2003, 2e éd. (ISBN 2-7117-8676-5) Pierre Barthélemy, Robert Rolland, Pascal Véron et Hermes Lavoisier, Cryptographie, principes et mises en œuvre, Paris, Hermès science publications, 2005, 414 p. (ISBN 2-7462-1150-5) ","date":"21 novembre 2020","permalink":"/posts/rsa-ou-comment-vos-cours-de-4eme-vous-permettent-de-proteger-vos-codes-bancaires/","section":"Mes articles","summary":"Ce titre n’est (presque) pas une blague. VOUS avez le niveau pour comprendre comment vos données en ligne sont protégées.","title":"RSA Ou Comment Vos Cours De 4eme Vous Permettent De Proteger Vos Codes Bancaires"},{"content":"","date":"1 janvier 1","permalink":"/topics/","section":"Topics","summary":"","title":"Topics"}]