CODECSS

Un article de Mwyann.info.

   C:\>

      

Ceci est un programme fonctionnant sous DOS, genre MS-DOS 6.22. En principe, ce genre de programmes pourra fonctionner dans une fenêtre "ligne de commande" sous Windows (Démarrer > Exécuter > cmd ou command) mais je ne promets rien. Vérifiez dans la description du programme si c'est possible. Sinon, servez-vous d'un logiciel comme VMware ou DOSBox, ou bien trouvez un vieux PC et installez un MS-DOS comme au bon vieux temps.

   

 

A propos du projet
SystèmeDOS
CompatibleWindows
Étape de dév.Terminé
LangagePascal
Création02/2002

 

Ceci est un programme que j'ai réalisé, par curiosité, en référence à un article dans un magazine, qui montrait un nombre premier très grand, censé révéler les sources du décryptage de DVD en C, une fois transformé et décompressé par GZIP. Je n'étais pas vraiment intéressé par ce code source, je n'en ferais pas grand-chose, mais je voulais savoir si c'était vrai. Et ils disaient vrai, j'en ai eu la preuve moi-même. Et vous allez pouvoir le constater vous aussi. Si vous êtes forts en calcul mental en tout cas. Préparez-vous à maîtriser la conversion des bases et la manipulation des tables de hachage.

J'ai été personnellement assez surpris de voir un nombre premier produire un tel code. Même s'il ne s'agit que d'une coïncidence, elle est assez étonnante. D'autant que le code source en C est bien formaté, et proprement indenté, comme du code de tout bon programmeur qui se respecte (c'est à dire pas moi). Mais la vraie question, en fait, c'est de se demander pourquoi ils sont allés chercher la primalité d'un tel nombre, issu d'un tel code source...

Sommaire

De quoi s'agit-il ?

Voici un nombre premier :

48565078965739782930984189469428613770744208735135792401965207366869851340104723
74469687974399261175109737777010274475280490588313840375497099879096539552270117
12157025974666993240226834596619606034851742497735846851885567457025712547499964
82194184655710084119086259716947970799152004866709975923596061320725973797993618
86063169144735883002453369727818139147979555133999493948828998469178361001825978
90103160196183503434489568705384520853804584241565482488933380474758711283395989
68522325446084089711197712769412079586244054716132100500645982017696177180947811
36220027234482722493232595472346880029277764979061481298404283457201463489685471
69082354737835661972186224969431622716663939055430241564732924855248991225739466
54862714048211713812438821771760298412552446474450558346281448833563190272531959
04392838737640739168912579240550156208897871633759991078870849081590975480192857
68451988596305323823490558092032999603234471140776019847163531161713078576084862
23637028357010496125956818467859653331007701799161467447254927283348691600064758
59174627812126900735183092415301063028932956658436620008004767789679843820907976
19859493646309380586336721469695975027968771205724996666980561453382074120315933
77030994915274691835659376210222006812679827344576093802030447912277498091795593
83871210005887666892584487004707725524970604446521271304043211826101035911864766
62963858495087448497373476861420880529443

D'après d'éminents scientifiques dont je ne sais plus le nom..., ce nombre est donc premier. Mon programme Primaly n'arrivera pas à le vérifier, c'est un nombre trop grand (1401 chiffres), mais bon, faisons-leur confiance.

La recette à suivre

  1. Prenez le nombre premier ci-dessus.
  2. Transformez-le en nombre hexadécimal. Le résultat vous donnera un nombre composé de 1164 caractères hexadécimaux.
  3. Transformez ensuite ce nombre hexadécimal en fichier binaire, en prenant une paire de caractères hexadécimaux et en en faisant un octet. Vous voici avec un fichier de 582 octets.
  4. Décompressez ce fichier grâce à GZIP : gzip -d nomdufichier.bin
  5. Vous voilà avec la source de l'algorithme de décryptage des DVD.

Réalisation

L'intérêt dans la réalisation de ce programme fut de transformer un nombre très grand en hexadécimal, donc d'écrire des fonctions mathématiques qui travaillent sur des chaînes de caractère et non sur des nombres normaux. Le reste, c'est à dire transformer le nombre hexadécimal en binaire puis décompresser avec GZIP était trivial.

Téléchargement

Le code source ainsi que les binaires précompilés sont disponibles ici : CODECSS.zip