Adding shadoks, stegano and canaux caches

This commit is contained in:
Docusland 2023-02-14 13:04:16 +01:00
parent 8d56d84d1f
commit cec462f691
5 changed files with 65 additions and 3 deletions

3
.idea/.gitignore generated vendored Normal file
View File

@ -0,0 +1,3 @@
# Default ignored files
/shelf/
/workspace.xml

View File

@ -1,5 +1,7 @@
# Exercices ludiques en python # Exercices ludiques en python
Vous trouverez ici un ensemble d'exercices permettant de pratiquer python mais également découvrir quelques pans annexes de l'informatique en général. Vous trouverez ici un ensemble d'exercices permettant de pratiquer python mais également découvrir quelques pans annexes de l'informatique en général.
Ces exercices sont issus d'un livre réalisé par Pascal Lafourcade et Malika More.
## Exercice : A ski ## Exercice : A ski
Décryptez le message stocké dans le fichier `files/a_ski.txt`. Décryptez le message stocké dans le fichier `files/a_ski.txt`.
@ -9,7 +11,7 @@ Après avoir compris la technique de codage utilisé, saurez-vous implémenter u
> Ici vous allez découvrir la manipulation de fichiers, la conversion de str en int et quelques méthodes natives du langage python. > Ici vous allez découvrir la manipulation de fichiers, la conversion de str en int et quelques méthodes natives du langage python.
## Exercice cryptarithme ## Exercice cryptarithme
Chaque lettre de l'opération représente un chiffre différent entre 0 et 9. Ecrivez un programme permettant de déterminer la valeur de chaque lettre pour que l'opération soit corecte ,sachant que le premier chiffre dechaque nombre ne peut être un `0`. Chaque lettre de l'opération représente un chiffre différent entre 0 et 9. Ecrivez un programme permettant de déterminer la valeur de chaque lettre pour que l'opération soit correcte, sachant que le premier chiffre de chaque nombre ne peut être un `0`.
> SEND + MORE = MONEY > SEND + MORE = MONEY
> HUIT + HUIT = SEIZE > HUIT + HUIT = SEIZE
@ -18,8 +20,52 @@ Chaque lettre de l'opération représente un chiffre différent entre 0 et 9. Ec
> CINQ + CINQ + VINGT = TRENTE > CINQ + CINQ + VINGT = TRENTE
Saure-vous implémenter un script python permettant de trouver les chiffres associés aux lettres? Saurez-vous implémenter un script python permettant de trouver les chiffres associés aux lettres?
Vous avez le fichier `files/cryptarithme.txt` à votre disposition si vous le souhaitez. Vous avez le fichier `files/cryptarithme.txt` à votre disposition si vous le souhaitez.
> Cet exercice implique l'utilisation de boucles imbriquées. > Cet exercice implique l'utilisation de boucles imbriquées.
## Exercice: Compter comme un shadok
> Pour compte les matins, les Shadoks ont un système de numérotation basé uniquement sur les syllabes suivantes :
>GA, BU, ZO et MEU.
>Voici par exemple un nombre shadok : BU MEU ZO MEU GA GA
Saurez-vous programmer un convertisseur de nombre shadoks en nombres décimaux pour découvrir quel est le nombre caché derrière le fichier `files/shadoks.txt` et ainsi découvrir la date de diffusion du premier épisode de cette série culte?
> Cet exercice implique la compréhension des bases en mathématiques.
## Exercice : Stéganographie
Le principe de stéganographie est d'utiliser une technique pour passer un message secret d'une manière dissimulée tout en restant lisible pour celui qui sait comment trouver.
Au sein du fichier `stegano.png` se cache un texte secret. Chaque pixel a été très légèremet modifié.
Il faut extraire le bit de poids faible de chaque couleur de chaque pixel.
Puis d'en refaire des octets de 8 bits.
Exemple:
```python
pixel = image[0][0]
r = red(pixel) % 2
g = green(pixel) % 2
b = blue(pixel) % 2
a = alpha(pixel) % 2
pixel1 = image[1][0]
r1 = red(pixel1) % 2
g1 = green(pixel1) % 2
b1 = blue(pixel1) % 2
a1 = alpha(pixel1) % 2
first_letter = chr(bin2dec(''.join((r,g,b,a,r1,g1,b1,a1))))
```
Vous aurez très probablement besoin d'utiliser PIL.
```shell
pip install pillow
```
## Exercice : Canaux cachés
La fonction fournie dans le fichier `files/canaux_caches.py` permets de vérifier si
un code saisi est contenu dans la variable essai
Saurez-vous écrire un programme qui permets à votre ordinateur à coup sûr en moins de 3 minutes de découvrir le code PIN saisi par l'utilisateur ?
L'ordinateur ne doit pas utiliser la variable pin mais uniquement la méthode checkpin.
La fonction checkpin fournie ne dois pas être modifiée.

12
files/canaux_caches.py Executable file
View File

@ -0,0 +1,12 @@
import time
global pin
def checkpin(essai):
for i in range(len(pin)):
time.sleep(1)
if pin[i]!= essai[i]:
return(False)
return(True)
pin=input("Entrez un code PIN constitué de 6 chiffres entre 0 et 9 que l'ordinateur doit deviner : ")

1
files/shadoks.txt Executable file
View File

@ -0,0 +1 @@
BU MEU ZO MEU GA GA

BIN
files/stegano.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 864 KiB