diff --git a/Sécurité/TD.ipynb b/Sécurité/TD.ipynb new file mode 100644 index 0000000..baaf5dd --- /dev/null +++ b/Sécurité/TD.ipynb @@ -0,0 +1,273 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "ca34006a", + "metadata": {}, + "source": [ + " ## Méthodes de Cryptographie\n", + "\n", + "> But du projet : Montrer différentes façons de crypter un message\n", + "\n", + "La cryptographie est une discipline très ancienne. Elle est utilisée depuis l'antiquité et utilise différentes techniques. \n", + "Je vous engage à lire la page wikipédia : https://fr.wikipedia.org/wiki/Histoire_de_la_cryptologie qui récapitule des exemples historiques dont certains sont plutôt surprenants. " + ] + }, + { + "cell_type": "markdown", + "id": "345a9db8", + "metadata": {}, + "source": [ + "# Cahier des charges\n", + "\n", + "Vous devez réaliser des fonctions permettant de mettre en oeuvre les différentes méthodes de cryptographie. Essayer de respecter ce qu'il est proposé de faire. \n", + "\n", + "### Dans vos programmes vous devez : \n", + "* **Expliquer chacune des fonctions créées** , c'est-à-dire écrire une documentation de la fonction (docstring). Cette documentation devra expliquer le principe de la transformation réalisée par votre code python. \n", + "* **Commenter certaines lignes** pour montrer les points importants de votre code. \n", + "* Ecrire un jeu de test pertinent pour chacune d'elle. \n", + "* Utiliser des variables avec des noms explicites.\n", + "\n", + "### Rédaction d'un dossier d'accompagnement présentant : \n", + "* la recherche documentaire nécessaire pour réaliser votre projet (sitographie / bibliographie )\n", + "* le **partage des tâches réalisées** au sein de votre équipe. \n", + "* une **conclusion** sur les points d'améliorations possible de votre programme (correction de bug et extension). \n", + "* ce que vous avez aimé ou pas aimé faire dans ce projet et en NSI de manière générale. " + ] + }, + { + "cell_type": "markdown", + "id": "c794e2a1", + "metadata": {}, + "source": [ + "# Présentation du projet\n", + "Ci-dessous, je vous présente les techniques de cryptographie qu'il faudra mettre en oeuvre:" + ] + }, + { + "cell_type": "markdown", + "id": "1634fe7e", + "metadata": {}, + "source": [ + "### 1. Le chiffre de César\n", + "Le chiffre de César est une façon simple de coder un message afin de conserver le secret du contenu jusqu’à son destinataire. Il s’agit tout simplement de décaler chaque lettre du message. \n", + "Voyons l’exemple d’un décalage de **trois lettres** : A devient D; B devient E; etc. \n", + "\n", + " A B C D E F G H I J K L M N O P Q R S T U V W X Y Z lettres du message en clair\n", + " D E F G H I J K L M N O P Q R S T U V W X Y Z A B C lettres du message codé\n", + "\n", + "Par exemple le message :\n", + "\n", + " CAPTUREZ IDEFIX\n", + "se chiffre en :\n", + "\n", + " FDSWXUHC LGHILA\n", + "\n", + "\n", + "On peut bien sur modifier le décalage. \n", + "\n", + "Cette technique reste assez simple, **il faudra proposer** : \n", + "* la possibilité de **choisir une valeur de décalage**\n", + "* le **chiffrement d'un caractère** en tenant compte de ce décalage. \n", + "* le **chiffrement d'une phrase complète** (tenir des caractères spéciaux : les espaces, les chiffres..) \n", + "* le **déchiffement d'une phrase cryptée en connaissant le décalage**. \n", + "* la possibilité de **déchiffrer une phrase cryptée sans connaitre le décalage initiale**." + ] + }, + { + "attachments": { + "img1.jpg": { + "image/jpeg": "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cm9wUmVjdExlZnRsb25nAAAAAAAAAA1jcm9wUmVjdFJpZ2h0bG9uZwAAAAAAAAALY3JvcFJlY3RUb3Bsb25nAAAAAAA4QklNA+0AAAAAABAASAAAAAIAAgBIAAAAAgACOEJJTQQmAAAAAAAOAAAAAAAAAAAAAD+AAAA4QklNBA0AAAAAAAQAAABaOEJJTQQZAAAAAAAEAAAAHjhCSU0D8wAAAAAACQAAAAAAAAAAAQA4QklNJxAAAAAAAAoAAQAAAAAAAAACOEJJTQP1AAAAAABIAC9mZgABAGxmZgAGAAAAAAABAC9mZgABAKGZmgAGAAAAAAABADIAAAABAFoAAAAGAAAAAAABADUAAAABAC0AAAAGAAAAAAABOEJJTQP4AAAAAABwAAD/////////////////////////////A+gAAAAA/////////////////////////////wPoAAAAAP////////////////////////////8D6AAAAAD/////////////////////////////A+gAADhCSU0EAAAAAAAAAgABOEJJTQQCAAAAAAAEAAAAADhCSU0EMAAAAAAAAgEBOEJJTQQtAAAAAAAGAAEAAAACOEJJTQQIAAAAAAAQAAAAAQAAAkAAAAJAAAAAADhCSU0EHgAAAAAABAAAAAA4QklNBBoAAAAAA00AAAAGAAAAAAAAAAAAAAA0AAACtQAAAAwAUwBhAG4AcwAgAHQAaQB0AHIAZQAtADEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAArUAAAA0AAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAEAAAAAAABudWxsAAAAAgAAAAZib3VuZHNPYmpjAAAAAQAAAAAAAFJjdDEAAAAEAAAAAFRvcCBsb25nAAAAAAAAAABMZWZ0bG9uZwAAAAAAAAAAQnRvbWxvbmcAAAA0AAAAAFJnaHRsb25nAAACtQAAAAZzbGljZXNWbExzAAAAAU9iamMAAAABAAAAAAAFc2xpY2UAAAASAAAAB3NsaWNlSURsb25nAAAAAAAAAAdncm91cElEbG9uZwAAAAAAAAAGb3JpZ2luZW51bQAAAAxFU2xpY2VPcmlnaW4AAAANYXV0b0dlbmVyYXRlZAAAAABUeXBlZW51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dHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCAyMS4wIChXaW5kb3dzKSIgeG1wOkNyZWF0ZURhdGU9IjIwMjMtMDMtMThUMTE6NTE6MjkrMDE6MDAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMjMtMDMtMThUMTE6NTE6MjkrMDE6MDAiIHhtcDpNb2RpZnlEYXRlPSIyMDIzLTAzLTE4VDExOjUxOjI5KzAxOjAwIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOmU5MGIyMjZiLTBiNDItNGI0My1iMTBhLWM5Zjc2YjdjYjk1OSIgeG1wTU06RG9jdW1lbnRJRD0iYWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmUyMTI1YzhlLTdhZjAtM2I0MS1hNjJhLWUzMTJlMmIxZDQ0YiIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjZjYjAwZWVjLWVkYTgtM2Q0NC05MjAxLTczMjFjMGIzMzQ4MCIgZGM6Zm9ybWF0PSJpbWFnZS9qcGVnIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIj4gPHhtcE1NOkhpc3Rvcnk+IDxyZGY6U2VxPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY3JlYXRlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo2Y2IwMGVlYy1lZGE4LTNkNDQtOTIwMS03MzIxYzBiMzM0ODAiIHN0RXZ0OndoZW49IjIwMjMtMDMtMThUMTE6NTE6MjkrMDE6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCAyMS4wIChXaW5kb3dzKSIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6ZTkwYjIyNmItMGI0Mi00YjQzLWIxMGEtYzlmNzZiN2NiOTU5IiBzdEV2dDp3aGVuPSIyMDIzLTAzLTE4VDExOjUxOjI5KzAxOjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjEuMCAoV2luZG93cykiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPC9yZGY6U2VxPiA8L3htcE1NOkhpc3Rvcnk+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/eHBhY2tldCBlbmQ9InciPz7/7gAhQWRvYmUAZEAAAAABAwAQAwIDBgAAAAAAAAAAAAAAAP/bAIQAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAwMDAwMDAwMDAwEBAQEBAQEBAQEBAgIBAgIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMD/8IAEQgANAK1AwERAAIRAQMRAf/EAKAAAQEBAAMAAwEBAAAAAAAAAAgABwUGCQIECgMBAQEAAAAAAAAAAAAAAAAAAAAAEAACAgEFAQEBAAIDAAAAAAAHCAAJBgQFGDgZOQMCEJBgFwoRAAEEAgECAggFBAEDAwUBAAYDBAUHAggJAAEUFRY3l3jYOZnZERITuLkQ15gZFyEiGDEjJGBBMiUnChIBAAAAAAAAAAAAAAAAAAAAkP/aAAwDAQECEQMRAAAA/byH8jPzQCM/NAIz80AjPzQDPzQCM/NAIz80AjPzQCM/NAIz80AjPzQCIz80AjPzQCIz80AjPzQCIz80AjPzQCIz80AiM/NAIz80AiM/NAIz80AiM/NAIz80AiM/NAI6+ej4AB/njAKA406GaccYMcJYSz05D0D8YBrRgxz4/wA/PsehQ/z82p6lmtGxhCO2jSAABY96AAHMDnIAARjmxPGvnlge94ADphqJwI/z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" + } + }, + "cell_type": "markdown", + "id": "425b6c98", + "metadata": {}, + "source": [ + "### 2. Chiffrement par substitution\n", + "Le chiffre de César est trop facile à attaquer, même si on ne connaît pas le décalage. Pour compliquer la tâche d’un espion, on introduit le chiffrement par substitution. \n", + "À chaque lettre de l’alphabet en clair , on associe une lettre au hasard. \n", + "Voici un exemple : \n", + "![img1.jpg](attachment:img1.jpg)" + ] + }, + { + "cell_type": "markdown", + "id": "60d9fd77", + "metadata": {}, + "source": [ + "**Chiffrement**. On remplace chaque caractère du message par sa lettre substituée. \n", + "Le message `BONJOUR` devient `kbnzbhq`. \n", + "\n", + "**Déchiffrement**. On fait l’opération inverse : `kbnkbn` donne `BONBON`. \n", + "\n", + "**Il faudra proposer** : \n", + "* un **alphabet aléatoire** qui correspond à un **mélange de lettre** comme par exemple : `ykcodmfjgzaxrnbutqiphwesvl` \n", + "* le **chiffrement d'un caractère puis d'une phrase en tenant compte du mélange obtenue**. \n", + "* le **déchiffrement d'une phrase cryptée en connaissant le mélange de lettre**." + ] + }, + { + "attachments": { + "img2.jpg": { + "image/jpeg": "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dAAAAAAAAAAAAAAAAFRvcCBVbnRGI1JsdAAAAAAAAAAAAAAAAFNjbCBVbnRGI1ByY0BZAAAAAAAAAAAAEGNyb3BXaGVuUHJpbnRpbmdib29sAAAAAA5jcm9wUmVjdEJvdHRvbWxvbmcAAAAAAAAADGNyb3BSZWN0TGVmdGxvbmcAAAAAAAAADWNyb3BSZWN0UmlnaHRsb25nAAAAAAAAAAtjcm9wUmVjdFRvcGxvbmcAAAAAADhCSU0D7QAAAAAAEABIAAAAAgACAEgAAAACAAI4QklNBCYAAAAAAA4AAAAAAAAAAAAAP4AAADhCSU0EDQAAAAAABAAAAFo4QklNBBkAAAAAAAQAAAAeOEJJTQPzAAAAAAAJAAAAAAAAAAABADhCSU0nEAAAAAAACgABAAAAAAAAAAI4QklNA/UAAAAAAEgAL2ZmAAEAbGZmAAYAAAAAAAEAL2ZmAAEAoZmaAAYAAAAAAAEAMgAAAAEAWgAAAAYAAAAAAAEANQAAAAEALQAAAAYAAAAAAAE4QklNA/gAAAAAAHAAAP////////////////////////////8D6AAAAAD/////////////////////////////A+gAAAAA/////////////////////////////wPoAAAAAP////////////////////////////8D6AAAOEJJTQQAAAAAAAACAAE4QklNBAIAAAAAAAQAAAAAOEJJTQQwAAAAAAACAQE4QklNBC0AAAAAAAYAAQAAAAI4QklNBAgAAAAAABAAAAABAAACQAAAAkAAAAAAOEJJTQQeAAAAAAAEAAAAADhCSU0EGgAAAAADTQAAAAYAAAAAAAAAAAAAACkAAAJmAAAADABTAGEAbgBzACAAdABpAHQAcgBlAC0AMgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAACZgAAACkAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAQAAAAAAAG51bGwAAAACAAAABmJvdW5kc09iamMAAAABAAAAAAAAUmN0MQAAAAQAAAAAVG9wIGxvbmcAAAAAAAAAAExlZnRsb25nAAAAAAAAAABCdG9tbG9uZwAAACkAAAAAUmdodGxvbmcAAAJmAAAABnNsaWNlc1ZsTHMAAAABT2JqYwAAAAEAAAAAAAVzbGljZQAAABIAAAAHc2xpY2VJRGxvbmcAAAAAAAAAB2dyb3VwSURsb25nAAAAAAAAAAZvcmlnaW5lbnVtAAAADEVTbGljZU9yaWdpbgAAAA1hdXRvR2VuZXJhdGVkAAAAAFR5cGVlbnVtAAAACkVTbGljZVR5cGUAAAAASW1nIAAAAAZib3VuZHNPYmpjAAAAAQAAAAAAAFJjdDEAAAAEAAAAAFRvcCBsb25nAAAAAAAAAABMZWZ0bG9uZwAAAAAAAAAAQnRvbWxvbmcAAAApAAAAAFJnaHRsb25nAAACZgAAAAN1cmxURVhUAAAAAQAAAAAAAG51bGxURVhUAAAAAQAAAAAAAE1zZ2VURVhUAAAAAQAAAAAABmFsdFRhZ1RFWFQAAAABAAAAAAAOY2VsbFRleHRJc0hUTUxib29sAQAAAAhjZWxsVGV4dFRFWFQAAAABAAAAAAAJaG9yekFsaWduZW51bQAAAA9FU2xpY2VIb3J6QWxpZ24AAAAHZGVmYXVsdAAAAAl2ZXJ0QWxpZ25lbnVtAAAAD0VTbGljZVZlcnRBbGlnbgAAAAdkZWZhdWx0AAAAC2JnQ29sb3JUeXBlZW51bQAAABFFU2xpY2VCR0NvbG9yVHlwZQAAAABOb25lAAAACXRvcE91dHNldGxvbmcAAAAAAAAACmxlZnRPdXRzZXRsb25nAAAAAAAAAAxib3R0b21PdXRzZXRsb25nAAAAAAAAAAtyaWdodE91dHNldGxvbmcAAAAAADhCSU0EKAAAAAAADAAAAAI/8AAAAAAAADhCSU0EEQAAAAAAAQEAOEJJTQQUAAAAAAAEAAAAAjhCSU0EDAAAAAAGjwAAAAEAAACgAAAACwAAAeAAABSgAAAGcwAYAAH/2P/tAAxBZG9iZV9DTQAC/+4ADkFkb2JlAGSAAAAAAf/bAIQADAgICAkIDAkJDBELCgsRFQ8MDA8VGBMTFRMTGBEMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAENCwsNDg0QDg4QFA4ODhQUDg4ODhQRDAwMDAwREQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM/8AAEQgACwCgAwEiAAIRAQMRAf/dAAQACv/EAT8AAAEFAQEBAQEBAAAAAAAAAAMAAQIEBQYHCAkKCwEAAQUBAQEBAQEAAAAAAAAAAQACAwQFBgcICQoLEAABBAEDAgQCBQcGCAUDDDMBAAIRAwQhEjEFQVFhEyJxgTIGFJGhsUIjJBVSwWIzNHKC0UMHJZJT8OHxY3M1FqKygyZEk1RkRcKjdDYX0lXiZfKzhMPTdePzRieUpIW0lcTU5PSltcXV5fVWZnaGlqa2xtbm9jdHV2d3h5ent8fX5/cRAAICAQIEBAMEBQYHBwYFNQEAAhEDITESBEFRYXEiEwUygZEUobFCI8FS0fAzJGLhcoKSQ1MVY3M08SUGFqKygwcmNcLSRJNUoxdkRVU2dGXi8rOEw9N14/NGlKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vYnN0dXZ3eHl6e3x//aAAwDAQACEQMRAD8A7phaMjfcwuqcbG7CWhznm702WNc+0Ocz3tpYz/hK1M5PTLWvZTXvs2FwayysuiJ3Na2/cqedu9XGjb/Pu2+ttiPtFe77HP8A2o3fzPqfpfW9H0/0XqKrh+p62NH2WId/M7PVn0r/AOibvd9H/wAD+0/4VJTpUW4zN/2hkt9gawuYHsJrFhZb+m/wm197d3vRbXYtjK3UY1jm+q1pcxzCJDtr2OLL/wDPWXdO+7d6fDJ3xvj0P8N6f5+z+a2/4H/uwrWJ622//wAPf9pvS5/Rx9p/7u/6b/Bf6T89JSbHvxK6nfa9tljXOLntLK2tabLK2Mcx9/8Agtjsb/hLKXp8g1Cxrq6X1M9C1/qEtczQ0fpSBftdtaVRz/U9bGj0d29/9K9OY3+37LPs9f8A7lfy/wCcRsf1fsGN4fYrI9L0/s8RTu9L/up/X/S+n/N/4RJTdN/TWvbW6kixxhrDZWHEnaYa31/5bP8APQLGuN5bVW6k/aGAstDXCxnpNfZjU/p/Zbt3376/9H+k/wAIs/qW77TfHoTLd32vbv5xvpfmf8T6P5/2X+Wreb6vrN3T/SRPrenM+h/gPT/7Ubf3f0fo/wDDJKbdOR0zIdtx6vWdG7ayytxg/nbW3/RQKH4zDvva8M2x6L3Vggm11bLXOfd6nvdtor96o9O9X7Zibfs30Tt9D0/W/maf6P6v+C2/6T/tN9n/AMImy9250+l/NNj7Rt3f0h387t/7T7v5v/u1/wAEkp0r7sK3ByLMWlz9lbzvqex207S5urL/AGuSZZi0uvdlw5puLaxNbPTGxjvsznev+ks+ld/1xUMH1Ps+dHpbfs1c/Zdk7dlv9J3fpPT/AO4+z9P6f/W0LK9T7RZP2WfWvn1dm6fS0mPb6v8A3P2fo/sySnXecaz7O+jGsdXZZo5jmOa4bLe7L/c3cFCrIwq6GOymtL3AONjXsawh+41Fu+5vte1jtn7/AKaD0/1vRq/8NWx9l9L05/Tf+D/9yP8AA+p6ipn+inb6W70Pbv8A5iNuX/O7/wBH9n/4z3/03/g0lOjlGuu1pbQ6kbWybC0MINtbS3+eP6S1rvRq9n07EYX9NLxWKSbCS0M9SuS4FzXNaPX9zmvY9rlTt9T7G2d0fZNJ2ejHsj6Hu+y/1v0np/21T9/rtj7NP2ps7tm/+edt9Pf/ANrt3/g/85+hSU6Do+1OYK3VD1o9J5aXOa2qmx9dX6V35vqe1mz6frf4L0r7FN/Tb3bcen1XDUtZZW4gfvENvVbI3+q/f6v9IM7tk/0cT6fo/wCH2fuf4H1P8Oq+D6v7Sr2+j9B+30vT+0/Rx5/nP8H/AKT1P8H9lSU2MVzG+nZcxwp9CqanuYH73ktbc977d36V36Nn6T9J/wBb/SHNuJYxlmLU7S6lptY9pAmyvc13p3O/NcsvO3/Z2fzX9Hpj7Xt2xL9u/wD4H9zf+k+n6yL03futn0tvqYk/Z9nG6vZ9r2/pd3+h/kf0hJT/AP/ZADhCSU0EIQAAAAAAVwAAAAEBAAAADwBBAGQAbwBiAGUAIABQAGgAbwB0AG8AcwBoAG8AcAAAABQAQQBkAG8AYgBlACAAUABoAG8AdABvAHMAaABvAHAAIAAyADAAMgAwAAAAAQA4QklNBAYAAAAAAAcACAEBAAEBAP/hDdJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ4IDc5LjE2NDAzNiwgMjAxOS8wOC8xMy0wMTowNjo1NyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIiB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIxLjAgKFdpbmRvd3MpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAyMy0wMy0xOFQxMjowMzozNCswMTowMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAyMy0wMy0xOFQxMjowMzozNCswMTowMCIgeG1wOk1vZGlmeURhdGU9IjIwMjMtMDMtMThUMTI6MDM6MzQrMDE6MDAiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6ZDM3NDc5NjUtYjk5MC0wODRhLTk0MTgtYzI2NDAyYzI3NDNiIiB4bXBNTTpEb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6ZDQzNTY0ZTQtZTU1OS0wMDRmLWI3MWEtYzY5NzhhMzlmOTEyIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6MjA5YjQyZTctMzZkZS0wMjRlLWIxYWItYzI2YzZjM2M2MGVhIiBkYzpmb3JtYXQ9ImltYWdlL2pwZWciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiPiA8eG1wTU06SGlzdG9yeT4gPHJkZjpTZXE+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJjcmVhdGVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjIwOWI0MmU3LTM2ZGUtMDI0ZS1iMWFiLWMyNmM2YzNjNjBlYSIgc3RFdnQ6d2hlbj0iMjAyMy0wMy0xOFQxMjowMzozNCswMTowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIDIxLjAgKFdpbmRvd3MpIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDpkMzc0Nzk2NS1iOTkwLTA4NGEtOTQxOC1jMjY0MDJjMjc0M2IiIHN0RXZ0OndoZW49IjIwMjMtMDMtMThUMTI6MDM6MzQrMDE6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCAyMS4wIChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD94cGFja2V0IGVuZD0idyI/Pv/uACFBZG9iZQBkQAAAAAEDABADAgMGAAAAAAAAAAAAAAAA/9sAhAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgIDAwMDAwMDAwMDAQEBAQEBAQEBAQECAgECAgMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwP/wgARCAApAmYDAREAAhEBAxEB/8QApQABAAIDAAMBAQAAAAAAAAAAAAcIBQYJAgQKAwEBAQAAAAAAAAAAAAAAAAAAAAAQAAIBBAIBBAIBBQAAAAAAAAcIBgAFFwkEGAMgOBk5AkqAYAEVFhoRAAAGAQIDBQcCBAUDBQAAAAMEBQYHCAIBCQAU2RMVFjiZ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z/3S0TsPHHuk765Hsc+7O8OT5g32HNDecigHpp2K6sXHnIoB6adiurFx5yKAemnYrqxcecigHpp2K6sXHnIoB6adiurFx5yKAemnYrqxcVpsv80FAGP8xFf4bnTwV9u6xTm8H+9uOm4//C3iP7pbf8QeH/EHKc9yBHm+x7Xlwfa7PHzkUA9NOxXVi485FAPTTsV1YuPORQD007FdWLjzkUA9NOxXVi485FAPTTsV1YuLLWX+aCgD4+Xev8yTp4K+3dYps+MPdJHTjf8A4W8R/dLcHh/xB4f5TnuQPcp23a8uN7PZ5ecigHpp2K6sXHnIoB6adiurFx5yKAemnYrqxcecigHpp2K6sXHnIoB6adiurFx5yKAemnYrqxcNx/8AzQUAeHiCwFToL7p+3dYpv8p80Fp4brR4p5/7pa32/gf3t99cj2OHefd/J8wU7fmgfORQD007FdWLjzkUA9NOxXVi485FAPTTsV1YuPORQD007FdWLjzkUA9NOxXVi485FAPTTsV1YuKnMD5oKAOD5oLAOOC+9vt3WKSvA/h+rFlrL+KeQ+6WpeJub+XfuXke2T+z745zmMuU5Uz5yKAemnYrqxcecigHpp2K6sXHnIoB6adiurFx5yKAemnYrqxcecigHpp2K6sXHnIoB6adiurFxDdaPmgoAb97df7LTp41+3dYoDw/8u8i1OYHhbw590sbvXxh80HN89z5bu/uPsuXM872hTzkUA9NOxXVi485FAPTTsV1YuPORQD007FdWLjzkUA9NOxXVi485FAPTTsV1YuPORQD007FdWLiZK0fNBQAp7pK/wBaZ08a/busUP4g+YiRbYsDwt4c+6WD3V4P+V/m+e58z3h352XLluS7Q35yKAemnYrqxcecigHpp2K6sXHnIoB6adiurFx5yKAemnYrqxcecigHpp2K6sXHnIoB6adiurFx9xfuCP8A32/bA+dXwt3U4/dZ70/lS9+ncHcnirxb7v8Axb/t+V787x7u/wBPnu2/3HFN/oA3LP3FbTvEuIPhZqvnvuWqaJHgp9GOUZDw7yuzXYl4WeJvw48OVarg7blFATuhU9goMJryZn9OxzHaabVGqNODiw71l0L8TU3USy1ERxWNE0lGBeI62BXisAqs71hCQiRc6IM1gxQgSQAGhowGEHrj/BtO/X/I39rLcs4cMKpklxxHLoe7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" + } + }, + "cell_type": "markdown", + "id": "4f82f774", + "metadata": {}, + "source": [ + "Pour un espion qui intercepterait un message codé, sans connaître la substitution choisie, il n’est plus possible de tester toutes les possibilités. \n", + "En effet, il y a 26 x 25 x 24 x..... x 2 x 1 choix possibles pour l’alphabet mélangé, ce qui fait environ 4 x $10^{26}$ clés ! \n", + "\n", + "Dans ce cas, on propose de déchiffrer ces messages par **attaque statistique**\n", + "\n", + "### 3. Attaque statistique\n", + "Pour un texte assez long, les lettres n’apparaissent pas toutes avec la même fréquence. \n", + "En français, les lettres les plus rencontrées sont dans l’ordre : \n", + "\n", + " E S A I N T R U L O D C P M V Q G F H B X J Y Z K W\n", + "\n", + "La fréquence d’apparition d’une lettre est donnée par la formule :\n", + "\n", + "$fréquence~d’apparition~d’une~lettre = \\frac{(nombre~d’occurrences~de~la~lettre)}{(nombre~total~de~lettres)}$ x 100\n", + "\n", + "Dans un texte en français les fréquences sont proches de : \n", + "![img2.jpg](attachment:img2.jpg)\n", + "\n", + "On a intercepté un message, mais on ne connaît pas la substitution. \n", + "**Comment utiliser les statistiques pour décrypter le message ?** \n", + "\n", + "Voici une méthode d’attaque : dans le texte chiffré, on cherche la lettre qui apparaît le plus, et si le texte est assez long, cela devrait être le chiffrement du `E`, la lettre qui apparaît ensuite dans l’étude des fréquences devrait être le chiffrement du `S`, puis le chiffrement du `A, I, N, T`... \n", + "\n", + "On obtient ainsi un déchiffrement partiel du message, sous la forme **d’un texte à trous** et il faut ensuite deviner les lettres manquantes. \n", + "\n", + "Un exemple. \n", + "Déchiffrons la phrase : \n", + "\n", + " jm dw ug jddbhbwm y jmlj cjtljtdjd\n", + " \n", + "On compte les apparitions des lettres :\n", + "\n", + " j : 7 \td : 5 \tm : 3 \tb, l, t, w : 2\n", + "\n", + "On suppose donc que le j crypte la lettre E, le d la lettre S, ce qui donne :\n", + "\n", + " E* S* ** ESS***** * E**E *E**E*SES\n", + "\n", + "Ensuite la lettre qui apparaît le plus est le `m`. D’après les fréquences, elle devrait correspondre à `A, I, N\n", + "ou T`. \n", + "Ainsi le premier mot serait `EA`, `EI`, `EN` ou `ET`. Seuls les deux derniers sont des mots valides. \n", + "\n", + "Si `m` -> `N`, la phrase se déchiffre en : \n", + "\n", + " EN S* ** ESS****N * EN*E *E**E*SES\n", + " \n", + "ce qui n’est pas très clair, alors qu’avec `m` -> `T` c’est mieux ! \n", + "\n", + " ET S* ** ESS****T * ET*E *E**E*SES\n", + " \n", + "En cherchant où placer les lettres les plus fréquentes suivantes (`A, I, N`) puis les autres, avec un peu de patience et de bon sens, on décrypte le message :\n", + "\n", + " ET SI ON ESSAYAIT D ETRE HEUREUSES\n", + "\n", + "**Il faudra proposer cette méthode d'attaque statistique pour déchiffrer un message crypté par la méthode de chiffrement par substitution dont on ne connait pas le méménage des lettres ayant servi à crypter.**" + ] + }, + { + "cell_type": "markdown", + "id": "4fd1e63b", + "metadata": {}, + "source": [ + "### Énigmes. \n", + "Essayer de décrypter les trois citations suivantes. Chacune a été chiffrée par une substitution différente.\n", + "Les frères Goncourt : \n", + "\n", + " ay dmymndmnxlv vdm ay shvjnvhv fvd dznvgzvd ngvcyzmvd\n", + "\n", + "Charles Darwin :\n", + "\n", + " apy pywpfpy tdv ydjsvspng np ybng woy apy pywpfpy apy wady lbjgpy nv apy wady\n", + " vngpaavzpngpy movy fpaapy tdv y okowgpng ap mvpdc odc fionzpmpngy\n", + "\n", + "Albert Einstein :\n", + "\n", + " kw yjnzfcn, i nmy lqwpx zp mwcy yzqy ny lqn fcnp pn azpiyczppn. kw ofwyclqn, i nmy lqwpx\n", + " yzqy azpiyczppn ny lqn onfmzppn pn mwcy ozqflqzc. cic, pzqm wszpm fnqpc yjnzfcn ny\n", + " ofwyclqn : fcnp pn azpiyczppn ny onfmzppn pn mwcy ozqflqzc !\n" + ] + }, + { + "cell_type": "markdown", + "id": "c872baf4", + "metadata": {}, + "source": [ + "### 4. Le chiffrement de Vigenère\n", + "Un des principaux défauts du chiffre de César (et du chiffrement par substitution) est qu’une lettre (par exemple A) est toujours chiffrée par la même lettre (par exemple D). \n", + "Le chiffrement de Vigenère est une version améliorée du chiffre de César. \n", + "\n", + "On regroupe d’abord les lettres de notre message par blocs, par exemple ici par blocs de longueur 3 :\n", + "\n", + " IL ETAIT UNE FOIS\n", + " \n", + "devient\n", + "\n", + " ILE TAI TUN EFO IS\n", + " \n", + "(les espaces sont purement indicatifs, dans la première phrase ils séparent les mots, dans la seconde ils séparent les blocs). \n", + "\n", + "Si `n` est la longueur d’un bloc, alors on choisit une clé constituée de **n nombres de 0 à 25** : `[k1, k2, . . . , kn]`. \n", + "\n", + "Le chiffrement consiste à effectuer un chiffrement de César, dont le décalage dépend du rang de la lettre dans le bloc :\n", + "•\tun décalage de k1 pour la première lettre de chaque bloc, \n", + "•\tun décalage de k2 pour la deuxième lettre de chaque bloc, \n", + "•\t... \n", + "•\tun décalage de kn pour la n-ème et dernière lettre de chaque bloc. \n", + "\n", + "Pour notre exemple, si on choisit comme clé `[4, 2, 3]` alors pour le premier bloc `ILE` : \n", + "•\tun décalage de 4 pour `I` donne `M` \n", + "•\tun décalage de 2 pour `L` donne `N` \n", + "•\tun décalage de 3 pour `E` donne `H` \n", + "\n", + "Ainsi `ILE` devient `MNH`. On recommence avec le bloc `TAI` qui devient `XCL`. Le chiffrement complet donne :\n", + "\n", + " MNH XCL XWQ IHR MU\n", + "\n", + "autrement dit la phrase chiffrée est :\n", + " \n", + " MN HXCLX WQI HRMU\n", + "\n", + "**Il faudra proposer** :\n", + "* le **découpage d'une phrase en bloc** de n lettres\n", + "* la **création d'une clé** de n nombres de 0 à 25\n", + "* le **chiffrement de chaque lettre** d'un bloc par la clé pour aboutir à un message crypté.\n", + "\n", + "Peut-être pouvez-vous proposer de décrypter un message ? Dans ce cas essayer de décrypter le message suivant (et trouvez son auteur) qui a été codé par un chiffrement de Vigenère avec une clé (inconnue !) de longueur 4.\n", + "\n", + " DL ZHGIVUEL OD UL LQK TYDVL OIL XEU DLC YEIOSASOI KVXJ KBBI WA PYWYC T WBH\n", + " QDVBI IBO BWZ QUFZ SDLLVBANODLZ CEFA OCHSSI VL NEMAOI\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.13" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}