Top 20

1 0x00h 688 pts
2 boris39 688 pts
3 thefinder 688 pts
4 neoxquick 669 pts
5 maf-ia 651 pts
6 eax 650 pts
7 nikokks 607 pts
8 benito255 598 pts
9 mego 581 pts
10 madbat2 572 pts
11 plucth 555 pts
12 Mart 542 pts
13 rostale 542 pts
14 Stupefy 523 pts
15 tehron 507 pts
16 Kithyane 490 pts
17 egosum 466 pts
18 LouisJ 444 pts
19 malose 420 pts
20 CoYoTe99 410 pts

Classement complet

Shoutbox

8 Oct - 10:01 am

Salut nikokks Ce problème n'est pas évident en effet. Une manière de faire est de trouver les formes les plus simples, et de les "effacer" de l'image avant de chercher les formes plus complexes ;)

4 Oct - 11:56 am

Salut a tous =) , je bug sur le problème 28 (forme analysis). Quelqu'un aurait il une piste ?

29 Sep - 5:38 pm

Coucou oui, tu peux m'envoyer un mail si tu veux. Le plus simple, ce serait d'avoir un package pour python 3. J'ai essayé et ça n'a pas marché!

17 Sep - 11:51 am

Salut thefinder, ça faisait longtemps ! Oula ça en fait des problèmes :'( Le premier challenge ? La somme de deux nombres ?

23 Jul - 2:13 am

Coucou, j'ai essayé de reprendre avec python. J'ai plusieurs soucis. 1) Il faut rajouter headers={'Content-Type': 'application/x-www-form-urlencoded'} avec un requests.session(). 2) Je n'ai pas réponse du serveur si je soumet une réponse au premier challenge. J'essaye finir en python les 3 dernières épreuves qui me reste. :)

6 Nov - 8:17 am

Bonjour, un léger problème sur l'épreuve 10 : Une fois réussie, le champ "points earned" indique 72 au lieu de 7 En revanche sur le site le nombre de points comptabilisés est bien 7 Merci pour ce site génial !

21 Oct - 9:48 pm

Équation du challenge 52 corrigée, merci

16 Oct - 8:43 am

Bonjour, il y a aussi un problème d'affichage "invalid equation" dans le challenge 52. Merci

14 Oct - 8:57 pm

Barbapapou l'équation du challenge 29 a été corrigée

4 Oct - 10:30 am

Bonjour, il y a un problème avec l'affichage d'une équation dans le challenge 29

Connexion
Mot de passe oublié

Supportez nousx

Vous aimez µContest ?
Supportez nous en votant (fun et difficulté) pour µContest sur WeChall :)
Si vous ne l'avez pas encore fait, profitez-en pour lier votre compte
Wechall à µContest pour pouvoir voter !

Merci

Liste des épreuves :: Cryptographie :: Homemade algorithm (54)

Résumé

ID : 54
Points : 19
Validations :
Page de l'épreuve
Reporter un bug

Description


Il est nécessaire de savoir résoudre les épreuves Optical Character Recognition I et base64 pour résoudre cette épreuve.

Ce que nous vous proposons dans ce challenge, est un algorithme "fait maison", dont le but est de chiffrer une image. Bien sûr, la méthode utilisée et décrite ici est loin d'être sécurisée et serait une mauvaise solution, mais son intérêt réside dans son aspect mathématique.
De plus, l'algorithme modifie l'image de telle sorte qu'on ne puisse plus lire un texte dessus par exemple, mais ne la modifie pas complètement.

L'image originale est simplement un nombre écrit sur une image à fond blanc. La clef de chiffrement de notre algorithme sera une image 35x35 (le "noyau") avec des pixels aléatoires. Il sera donné dans la variable kernel. Une opération bien connue (bien que mystérieuse) en traitement du signal ou des images est utilisée ici pour produire l'image "cryptée" (notez que cette opération n'est jamais utilisée dans le cadre de la cryptographie, ses applications sont totalement différentes)

Voici comment ça marche :



Vous devez découvrir quelle est cette opération, et trouver une manière de reconstituer l'image originale à partir de l'image chiffrée et de la clef. Je vous conseille de ne pas essayer d'inverser l'équation "à la main" vous même, c'est tout simplement impossible ! Une fois que vous aurez trouvé le nom de cette opération, les techniques d'inversion sont bien documentées.

Ensuite, vous devrez reconnaitre le nombre inscrit sur l'image et le renvoyer dans la variable number

Informations importantes à propos des images



Dans la mesure où le noyau est composé de valeurs aléatoires centrées autours de zéro, nous vous donnons une image correspondant à une normalisation du noyau de telle sorte qu'il soit visionnable en tant qu'image exploitant toute l'échelle de niveaux de gris. Ainsi, vous devez inverser cette normalisation avant de faire vos calculs grâce à cette formule :

noyau_a_utiliser = kernel*kernel_amplitude/255 + kernel_min

Comme vous l'avez peut être deviné, on a le même problème avec l'image chiffrée. Vous devrez donc utiliser la formule suivante pour inverser sa normalisation :

image_chiffree_a_utiliser = cypher*cypher_amplitude/255 + cypher_min

Variables


Nom Type Description
Variables à récupérer
kernelChaîne de caractèreschar*La clé de chiffrement, c'est à dire le kernel, au format png, encodé en base64
kernel_amplitudeRéelfloatVoir la section précédente
kernel_minRéelfloatVoir la section précédente
cypherChaîne de caractèreschar*L'image crypté, au format png, encodé en base64
cypher_amplitudeRéelfloatVoir la section précédente
cypher_minRéelfloatVoir la section précédente
Variables à renvoyer
numberEntierintLe nombre retrouvé sur l'image décryptée