MSX Village forum

Salle de Jeux Décodeur de mot de passe King's Valley 2 Histoire de comprendre comment ça marche ...

pegase Membre non connecté

Villageois

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 21/11/2009 à 21h52

Messages: 974

Le 12/08/2010 à 14h49
Alors après 3 jours de recherche acharnés et de dizaines de feuilles de papier remplies de chiffres/lettres, j'ai enfin réussis à trouver LE système de décodage des mots de passe donnés dans King's Valley II !

I - On pose les bases

Les mots de passe en question se présentent sous cette forme :

ABCDEFGH


Une fois entré dans le jeu, il en ressort deux information :
- Numéro du stage (entre 1 et 60)
- Nombre de vies restantes (entre 0 et 99)



II - Découpage du Mot de Passe

Le mot de passe contiens 3 informations importantes :

AB CD E F GH


AB : Nombre relatif au numéro du stage
CD : Nombre relatif au nombre de vies restant
F : Clé d'encodage
E, GH, données inutiles (si, si ... testez, vous verrez bien !)

comme on peut le voir, il existe 3 lettres complètement obsolètes qui ne sont là que pour "faire beau" et rendre la complexité du mot de passe virtuellement plus grande... 'sont malins chez Konami !

III - Principe de Calcul

En regardant plusieurs mots de passes, on se rend vite compte que les lettres données se situent entre A et P, soit 16 lettres... Coïncidence ?

Non ! En fait ce mot de passe est une série de chiffres hexadécimaux (pour rappel, on est sur un Z80, à l'époque)

AA = #00 et PP = #FF(255), avec, par exemple GE = #64(100) et LM = #BC(188).


La clé, codée sur une seule lettre, représente un chiffre de 0 à 16;


IV - Interprétation et Décodage

Voici donc un Pseudo-Code permettant de récupérer les données :

Key = Clé modulo 8
Lvl = Nombre du stage (0 à 255)
Lfe = Nombre des vies (0 à 255)

L = Lvl * Key
V = Lfe * Key

Cl = int(L/256)
Cv = int(V/256)

// calcul du stage
Stage = (L + Cv) modulo 256

//calcul du nombre de vies restantes
r = (V + Cl) modulo 256
a = int (r / 16)
b = r modulo 16
si (a >9) alors a -= 9
si (b >9) alors b -= 9
Vies = (a * 10) + b


Voilà, il reste à faire un encodeur et le tour est joué.

Remarque : Le nombre de vie donnée à la fin est une conversion de base 10 à partir d'une base 16. Première fois que ej vois ça de ma vie, et du coup ça n'a pas aidé pour déterminer quoi est quoi et surtout pourquoi #FE donnait 98 alors que #F9 donnait 98 .. et que #40 et #A0 donnaient tout les deux 40 ...

Peg'


*Edit du 14/08*

Alors après avoir pas mal étudié le site donné plus bas (ICI pour ceux qui n'auraient pas suivis), il en retourne que mon code plus haut est fonctionnel, mais qu'il comporte des erreurs dans certains cas précis.

! Attention, le code à l'adresse donné est aussi incomplet car dans certains cas précis, il donne des information erronées : DMPPxAxx, par exemple, donnerait niveau 60 avec 104 vies alors qu'il s'agit d'un code valide donnant 98 vies ... !



J'ai donc fait un mélange des deux codes que je possédais, sachant qu'ils ont tout les deux la même base et des défauts différents.

Le principe est donc le suivant :

Le décodage est une simple affaire de décalage vers la gauche au niveau du bit d'un nombre de 16 bits, avec bouclage.
C'est à dire que les bit de poids fort (à gauche) se retrouveront en poids faible (à droite).

Le nombre de bits de décalage est définis par la clé. Seuls les 3 bits de poids fort de la clé sont pris en compte (0 à 7), c'est à dire :



Exemple :

IJLF => #89B5 => 1000 1001 1011 0101



prenons la clé "N", soit un décalage de 5 :

1000 1001 1011 0101 => 0011 0110 1011 0001


Ce qui nous donne un résultat de #36B1

Il suffit de traduire maintenant les données obtenues :

Le niveau : #36 = 54 ... rien de plus simple

Le nombre de vies restant : #B = 11 (les dizaines)et #1 = 1 (les unités)
(11*10) + 1 = 111

trois rectifications sont alors à effectuer :
- si vies > 100 il faut lui soustraire 60
- si les unités > 10 il faut soustraire 6 aux vies (partie oubliée dans le site donné)
- soustraire 1 au nombre final, pour obtenir un nombre entre 0 et 99

Ce qui donne un nombre de vies de : 111 - 60 - 1 = 50 vies


Voilà ! La chose est aussi "simple" que ça ...

Peg'


Rétro ... mais pas trop !
   
Franck Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 22h54

Messages: 3295

Le 12/08/2010 à 15h10
As-tu songé à postuler pour entrer à la DCRI Pegase ? :lol
   
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10370

Le 12/08/2010 à 15h18
AB : Nombre relatif au numéro du stage
CD : Nombre relatif au nombre de vies restant
F : Clé d'encodage
E, FG, données inutiles (si, si ... testez, vous verrez bien !)

il y aurait pas un BUG vers la fin : pas de H et 2 fois F ( le code dans le code )


:noel
Site web    
granced Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 09/10/2009 à 09h18

Messages: 1501

Le 12/08/2010 à 15h51
Qui c'est qui va nous faire un joli méga-gros dossier sur King's Valley 2 ??? C'est Pegase !! :D


MSX un jour, MSX toujours ! :D
Site web    
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10370

Le 12/08/2010 à 18h25
j'ai aussi trouvé cela
===========================================
| Password: | Effect: |
===========================================
| TRYAGAIN | Continue after the |
| | game over screen |
| | appears |
-------------------------------------------
| FESTIVAL | Invincibility |
-------------------------------------------
| AMPAAGAC | Level 60 |
===========================================

et puis un programme basic de calcul de mot de passe que j'ai pris le liberté de traduire

voici les 2 versions en .bas a lancer dans votreMSX favori : codekvII.zip

ça fait le travail tout seul sans avoir besoin d'aspirine :lol


:noel
Site web    
pegase Membre non connecté

Villageois

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 21/11/2009 à 21h52

Messages: 974

Le 12/08/2010 à 19h56
J'ai corrigé le bug de FG/GH ...

J'avais vu d'autres mots de passe différents celon les versions MSX1/2 ..

ET en fouillant j'ai trouvé ce site qui explique pareil que moi mais en moins clair, je trouve ....


Rétro ... mais pas trop !
   
pegase Membre non connecté

Villageois

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 21/11/2009 à 21h52

Messages: 974

Le 14/08/2010 à 12h28
Double-post juste pour dire que j'ai mis à jour le principe de décodage du mot de passe ...


Rétro ... mais pas trop !
   
KN2000 Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 08/06/2010 à 09h30

Messages: 209

Le 27/08/2010 à 15h22
Si je comprends bien :

Clé A B C D E F G H I J K L M N O P
Val 0 1 2 3 4 5 6 7 8 9 A B C D E F

- Les 2 premiers caractères correspondent au numéro du stage codé en héxa puis traduit dans le tableau.
[AA = lvl 0] ... [AP = level 15], [BA = level 16] ... [BP = level 31] ... (comme les immatriculations sauf que l'on va jusque la lettre Z)
La dernière valeur level 60 doit être DM (3C en hexa = 3*16 +12 en décimal)

- Nombre de vies codées en BCD.
En BCD, on code chaque chiffre en utilisant 4 éléments binaires. 98 en décimal est équivalent à 1001 1000 en BCD donc 98 également en hexa. 98 devient JI.

- ensuite, on met les 4 dernières lettres AAAA et le tour est joué. (ou du moins, ce serait intéressant d'avoir tous les codes qui finissent par AAAA, plus facile à retenir et saisir)

DMJIAAAA -> niveau 60, 98 vies (ce qui a l'air d'être le nombre de vies max) Edité par KN2000 Le 27/08/2010 à 15h21


Nous sommes en 2010 aps JC, toute la Gaule est envahie. Ah ben non, apparement, un village résiste encore aux envahisseurs Personalcomputerum et autres Consoledessalum. Bienvenue dans l'antre du emessix !
   
pegase Membre non connecté

Villageois

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 21/11/2009 à 21h52

Messages: 974

Le 27/08/2010 à 19h58
non, en fait, c'est DMPKAAAA, car il y a une astuce sur le nombre de vie :

ce qu'il faut savoir (Avec une clé A):

AB = 0
AC = 1
AD = 2
AE = 3
AF = AL = 4
AG = AM = 5
AH = AN = 6
AI = AO = 7
AJ = AP = 8
AK = BA = 9
BB = 10
etc ...

pour voir au milieu :

DJ = DP = 38
DK = EA = 39
EB = KB = 40
EC = KC = 41

et en fin :

JI = JO = PI = PO = 97
JJ = JP = PJ = PP = 98
JK = KA = PK = 99

On remarque que KA(99) passe à KB(40), tout comme AK(9) passe à AL(4).
En fait c'ets un système qui permet de rendre un chiffre de 0 à 99 sur uns base 00 à FF.

Peg'


Rétro ... mais pas trop !
   
Daiva Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 18/10/2012 à 19h55

Messages: 518

Le 29/10/2012 à 00h05
Voilà moi j'ai ça depuis un p'tit moment dans mes archives MSX->PC et si ça peut vous être utile.

C'est un programme en exe pour PC qui vérifie les code de King's Valley II.

http://www.msxvillage.fr/upload/kvii_passgen.rar

Dans ma jeunesse quand j'ai eu le jeu (la version MSX1), je m'amuser avec mon pote Nico à chercher des codes.
Des fois en tapant des noms ou même des conneries ça fonctionner :

KINGKONG = OK
CACAPIPI = OK

LOL ;)


Très amicalement
G. HEEMS Edité par Daiva Le 29/10/2012 à 00h14


[MSX/MSX2/MSX2+ sur WII]
"I'LOVE MSX" Mes Amours d'émulation : BlueMSX sur PC récent & FMSX-DOS sur PC ancien.
   
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie