[Thomson] Déprotection des disquettes commerciales

Tout ce qui concerne le logiciel original et sa sauvegarde avec entre autre la régénération des disquettes ou autres supports physiques.

Modérateurs : Carl, Papy.G, fneck

Daniel
Messages : 10677
Enregistré le : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

[Thomson] Déprotection des disquettes commerciales

Message par Daniel » 04 févr. 2017 17:21

La plupart des disquettes commerciales Thomson sont protégées contre la copie, en général par un formatage spécial d'une ou plusieurs pistes. Cette protection empêche la création de disquettes réelles pour le "vrai" matériel, mais aussi l'exécution dans dcmoto. C'est pourquoi toutes les images de disquettes proposées sur le site de l'émulateur ont été déprotégées.

Avec l'expérience je connais assez bien les méthodes de protections utilisées par les principaux éditeurs et je les détourne facilement. Mais de temps en temps certaines me résistent, et j'ai pensé que d'autres thomsonistes pourraient m'aider. C'est un défi intellectuel souvent plus distrayant (et plus difficile) que le jeu lui-même. En plus de l'aspect ludique il contribue à la sauvegarde du patrimoine.

Je crée ce nouveau sujet pour proposer les fichiers .fd qui restent à déprotéger. Voici le premier :
le-petit-lecteur-protege_to8fd.zip
(82.25 Kio) Téléchargé 46 fois
Daniel
L'obstacle augmente mon ardeur.

__sam__
Messages : 4117
Enregistré le : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [Thomson] Déprotection des disquettes commerciales

Message par __sam__ » 04 févr. 2017 21:17

Alors sur DCMOTO 2015.05.29 quand on lance le jeu sur TO8 par "B", on voit un écran blanc et on se retrouve sous le basic peu après. En revanche sous TEO 1.7.7 le jeu se lance tout à fait normalement.

Es tu sur qu'il s'agisse d'une protection et pas un bug de l'émulation quelque part ?
Samuel.
A500 Vampire V2+, A1200(030@50mhz/fpu/64mb/cf 8go),
GVP530 (MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8. New Teo 1.8.4 8)

Daniel
Messages : 10677
Enregistré le : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Thomson] Déprotection des disquettes commerciales

Message par Daniel » 04 févr. 2017 21:37

C'est bien une protection : le programme accède directement au contrôleur de disquette par les ports $E7D0-$E7D7 sans passer par les routines système. Il faut faire un point d'arrêt en $85E2 et observer la suite.

TEO émule extrêmement bien le contrôleur (grâce à Préhisto), et je crois qu'il a des fonctions spéciales pour déjouer les protections. Dcmoto se contente de détourner les routines système, c'est pourquoi il se plante si elles sont contournées. De même en simulation de disquette sur carte SD ça ne marche pas, car le contrôleur CS91-280 interprète uniquement les fonctions standard du moniteur.

Je n'ai pas encore essayé avec une vraie disquette et un vrai TO8D, je vais le faire pour vérifier.
Daniel
L'obstacle augmente mon ardeur.

__sam__
Messages : 4117
Enregistré le : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [Thomson] Déprotection des disquettes commerciales

Message par __sam__ » 04 févr. 2017 21:53

Daniel a écrit :C'est bien une protection : le programme accède directement au contrôleur de disquette par les ports $E7D0-$E7D7 sans passer par les routines système.
Dans ce cas c'est plus un bug dans l'émulation des registres du lecteur de D7 qu'une vraie protection, car cela n'empêche pas e faire marcher une copie de la diskette.
Samuel.
A500 Vampire V2+, A1200(030@50mhz/fpu/64mb/cf 8go),
GVP530 (MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8. New Teo 1.8.4 8)

Daniel
Messages : 10677
Enregistré le : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Thomson] Déprotection des disquettes commerciales

Message par Daniel » 04 févr. 2017 22:02

It's not a bug, it's a feature. Ni dcmoto, ni le contrôleur CS91-280, n'émulent les registres du contrôleur de disquette.
Daniel
L'obstacle augmente mon ardeur.

__sam__
Messages : 4117
Enregistré le : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [Thomson] Déprotection des disquettes commerciales

Message par __sam__ » 05 févr. 2017 07:55

En effet, et c'est bizzare qu'un jeu tape directement dans le controlleur. Il y avait plusieurs controlleurs en circulation et tous ne se programment sans doute pas de la même façon. Le logiciel risquait à l'époque de ne pas marcher sur tous les thomsons, ce qui est dommage. En effet, du peu que j'ai vu, l'interface graphique est très soignée.
Samuel.
A500 Vampire V2+, A1200(030@50mhz/fpu/64mb/cf 8go),
GVP530 (MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8. New Teo 1.8.4 8)

Daniel
Messages : 10677
Enregistré le : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Thomson] Déprotection des disquettes commerciales

Message par Daniel » 05 févr. 2017 09:00

Si tu observes bien la routine de contrôle de la protection, elle teste le type de contrôleur et la suite du programme diffère pour chaque type. D'après ce que j'ai vu le programme cherche à lire un secteur formaté de façon non standard. Si le secteur n'est pas trouvé le programme s'autodétruit et plante l'ordinateur. Si on supprime cette lecture le chargement continue, l'écran change de couleur un peu plus loin puis la machine affiche quelques cadres avec des images et le programme se plante.

Ce matin j'ai créé une vraie disquette et testé avec un vrai TO8D. Comme prévu le programme cherche à lire ce fameux secteur spécial, fait les quatre retries prévus par la routine de contrôle ci-dessous (on entend le bruit caractéristique du lecteur), puis se plante.

Code : Tout sélectionner

858E 1A50       ORCC   #$50               
8590 8604       LDA    #$04               
8592 3402       PSHS   A                  
8594 8D2C       BSR    $85C2 <-      lecture speciale       
8596 2417       BCC    $85AF --|--   lecture OK        
8598 1700B1     LBSR   $864C   |  |  temporisation         
859B 6AE4       DEC    ,S      |  |         
859D 26F5       BNE    $8594 --   |  retry quatre fois        
859F 3502       PULS   A          |  lecture en erreur       
85A1 10CEDFFF   LDS    #$DFFF     |        
85A5 8E7048     LDX    #$7048     |        
85A8 10EF81     STS    ,X++ <--   |  destruction memoire         
85AB 3404       PSHS   B       |  |         
85AD 20F9       BRA    $85A8 --   |         
85AF 3502       PULS   A   <------               
Je n'ai même pas essayé avec une carte SD, il sûr et certain que ça ne peut pas fonctionner.

C'est pourquoi je cherche à contourner la protection. Il ne suffit pas de supprimer la lecture du secteur spécial, il doit y avoir plus loin un contrôle de checksum ou autre qui empêche le bon déroulement de la suite. C'est ce que je cherche, et je n'ai pas encore trouvé.

Si j'étais de mauvaise foi, je dirais que dcmoto (qui se plante) émule mieux le TO8D (qui se plante aussi) que TEO (qui ne se plante pas). Mais je suis tout à fait conscient de la qualité de TEO : non seulement il émule bien le contrôleur de disquette, mais en plus il contourne les protections de disquettes sans modification du fichier image. Je pourrais faire pareil dans dcmoto, mais l'objectif principal est de faire fonctionner la disquette sur carte SD, donc ça ne suffirait pas. Il faut absolument contourner la protection.
Daniel
L'obstacle augmente mon ardeur.

__sam__
Messages : 4117
Enregistré le : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [Thomson] Déprotection des disquettes commerciales

Message par __sam__ » 05 févr. 2017 09:59

Ce qui me surprend c'est que j'ai donné le même FD à TEO. Or le FD ne contient pas l'info de format spécial. Donc en toute logique TEO doit planter pareil que DCMOTO, or ca n'est pas ce qu'il se passe. C'est curieux. Tout doit se jouer dans la routine "lecture spéciale" en $85C2.

Code : Tout sélectionner

85C2 CE6048     LDU    #$6048              3
85C5 8610       LDA    #$10                2
85C7 A7C4       STA    ,U                  4
85C9 BDE004     JSR    $E004               8
85CC 8620       LDA    #$20                2
85CE A7C4       STA    ,U                  4
85D0 BDE004     JSR    $E004               8
85D3 2570       BCS    $8645               3 ==> CC=1 en sortie 
J'avais une doc sur les points d'entrée du monitor DOS.. mais je ne la retrouve plus :(

[EDIT], ayé, retrouvé http://collection.thomson.free.fr/code/ ... ?XI=1&XJ=1
Donc $E004 avec $20 en commande = recherche de piste 0. C'est curieux que ca retourne C=1, non ?
Modifié en dernier par __sam__ le 05 févr. 2017 10:24, modifié 1 fois.
Samuel.
A500 Vampire V2+, A1200(030@50mhz/fpu/64mb/cf 8go),
GVP530 (MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8. New Teo 1.8.4 8)

Daniel
Messages : 10677
Enregistré le : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Thomson] Déprotection des disquettes commerciales

Message par Daniel » 05 févr. 2017 10:17

De mémoire, dans les anciennes versions de TEO que j'ai analysées, il y a un traitement spécial pour les formatages spéciaux en piste 79, mis en place pour contourner certaines protections. Je n'ai pas encore vérifié si c'est encore vrai pour la dernière version.
Dans dcmoto les secteurs dont le numéro est inférieur à 1 ou supérieur à 16 ne sont pas lus et retournent une erreur.

En $E004, c'est l'appel des fonctions standard du contrôleur de disquette.
Les codes opérations ci-dessous sont passés en $6048

Code : Tout sélectionner

---------------------------------
DKCONT = Fonctions standard
00= formatage
01= initialisation controleur
02= lecture secteur
04= positionnement simple densite
08= ecriture secteur
10= positionnement double densite
20= recherche piste 0
40= recherche de piste quelconque
80= verification en ecriture 
---------------------------------
Daniel
L'obstacle augmente mon ardeur.

Mica60
Messages : 189
Enregistré le : 20 avr. 2016 00:28

Re: [Thomson] Déprotection des disquettes commerciales

Message par Mica60 » 05 févr. 2017 10:31

Un petit lien avec quelques screenshots du jeu :

http://www.misagamestore.fr/img/Thomson ... ur_CARRAZ/

Je vous rappelle que je n'ai pas l'original, c'est une copie.

Peut être que l'utilitaire qui a permis à l'époque de faire la copie a lui même ajouté une protection
contre la copie afin que lui seul puisse le copier de nouveau.

Daniel
Messages : 10677
Enregistré le : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Thomson] Déprotection des disquettes commerciales

Message par Daniel » 05 févr. 2017 10:35

La copie a été faite avec un copieur "évolué", qui a reproduit le formatage spécial de la disquette. Elle est donc conforme à l'original.
Omniflop ne traite pas les formats spéciaux, et même s'il savait les lire la structure des fichiers .fd ne permet pas de les reproduire.
Daniel
L'obstacle augmente mon ardeur.

__sam__
Messages : 4117
Enregistré le : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [Thomson] Déprotection des disquettes commerciales

Message par __sam__ » 05 févr. 2017 12:32

Bon, de mon coté j'ai viré tous les tests en $853, $85E0, $8600, $8606, $860E, etc... bref les trucs où l'on teste le CC en retour $E004 et les valeurs lues dans les registres du controlleur. Le programme va beaucoup, beaucoup plus loin. Et me semble parfaitement opérationnel! :D

Je pense que les tests sur les valeurs des registres du controlleur sont inutiles. Ce ne sont que des tests, aucune valeur n'est retournée à l'issu de la procédure. Il n'y a pas de risque à les virer.
Samuel.
A500 Vampire V2+, A1200(030@50mhz/fpu/64mb/cf 8go),
GVP530 (MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8. New Teo 1.8.4 8)

Daniel
Messages : 10677
Enregistré le : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Thomson] Déprotection des disquettes commerciales

Message par Daniel » 05 févr. 2017 15:56

J'ai fait l'essai, dans ce cas un écran finit par s'afficher, mais est-ce le bon ?
Je ne crois pas. Normalement on devrait avoir un écran de présentation.
##.png
##.png (3.38 Kio) Vu 1074 fois
Daniel
L'obstacle augmente mon ardeur.

nicolho
Messages : 237
Enregistré le : 10 nov. 2016 16:53

Re: [Thomson] Déprotection des disquettes commerciales

Message par nicolho » 05 févr. 2017 16:19

J'obtiens bien cette même première image sur MESS. En effet c'est assez cryptique et je sais pas ce qu'on est censé faire, mais en appuyant sur le touche entrée ou en cliquant (je sais pas trop :|) ça charge la suite (sur le seconde face on dirait) et ça affiche ce menu sur lequel on peut cliquer pour lancer les petits jeux :
petitlecteur_capture0.png
petitlecteur_capture0.png (4.47 Kio) Vu 1070 fois
C'est pareil pour vous ?

__sam__
Messages : 4117
Enregistré le : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [Thomson] Déprotection des disquettes commerciales

Message par __sam__ » 05 févr. 2017 16:53

Oui j'ai bien ce 1er éran gris et noir sur fond blanc qui me semble expliquer le fonctionnement du jeu. La 1ère case en haut à gauche avec le "?" sur l'image consiste à trouver l'image correspondant au mot en bas. Le case au dessous avec le "?" sur le mot c'est l'inverse: trouver le mot pour l'image. La case décalée au milieu consiste à trouver la bonne lettre pour compléter le mot représenté par l'image (ici un 'f' pour l'en?ant du dessin). La case en haut à droite doit reconstituer une phrase complète à partir des images, etc. En gros le jeu consiste relier des images à des mots pour des enfants du niveau C.P.

Nous, les vieux, on a du mal avec ces pictogrammes, mais pour les enfants ciblés ca doit reprendre des jeux qu'ils font à l'école et c'est donc carrément évident :)

Plus loin dans le jeu ca se joue avec les touches entrée et barre-espace, mais je n'ai pas encore trouvé comment on sort d'un de ces mini-jeux.
Samuel.
A500 Vampire V2+, A1200(030@50mhz/fpu/64mb/cf 8go),
GVP530 (MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8. New Teo 1.8.4 8)

Répondre