CPC-POWER : CPC-SOFTS - CPCArchives 
Options de Recherche :
 
 
 

ARTICLES

20 / 21

Protection LATIS

 

La protection LATIS, créée par Cyril BARTOLO et Joël ARMENGAUD en 1986, est utilisée pour empêcher la copie des logiciels édités par la société ESAT Software dont:

 

 

Voici la liste des opérations effectués par le FDC :

(Note: Les résultats peuvent varier d'un émulateur à l'autre car il proviennent de mon émulateur dont le FDC est toujours en cours d'écriture).

 

MOTOR=OFF
CMD Command=SPECIFY : 03 A1 03
MOTOR=ON
CMD Command=RECALIB : 07 00
RESULT Command=INTSTAT : 08
RESULT Result=20 00
CMD Command=SEEK : 0F 00 20
RESULT Command=INTSTAT : 08
RESULT Result=20 20
CMD Command=READ : 66 00 20 00 C1 02 C1 2A FF
RESULT Result=40 80 00 20 00 C1 02
CMD Command=SEEK : 0F 00 25
RESULT Command=INTSTAT : 08
RESULT Result=20 25
CMD Command=READTRK : 42 00 24 00 C1 02 C1 2A FF
RESULT Result=40 05 01 24 00 C1 02
CMD Command=SEEK : 0F 00 24
RESULT Command=INTSTAT : 08
RESULT Result=20 24
CMD Command=READTRK : 42 00 24 00 C1 02 C1 2A FF
RESULT Result=40 34 20 24 00 C1 02
CMD Command=SEEK : 0F 00 21
RESULT Command=INTSTAT : 08
RESULT Result=20 21
CMD Command=READTRK : 42 00 24 00 C1 02 C1 2A FF
RESULT Result=40 B0 20 24 00 C1 02
CMD Command=SEEK : 0F 00 22
RESULT Command=INTSTAT : 08
RESULT Result=20 22
CMD Command=READTRK : 42 00 24 00 C1 02 C1 2A FF
RESULT Result=40 80 20 24 00 C1 02
CMD Command=SEEK : 0F 00 23
RESULT Command=INTSTAT : 08
RESULT Result=20 23
CMD Command=READTRK : 42 00 24 00 C1 02 C1 2A FF
RESULT Result=40 80 20 24 00 C1 02
CMD Command=SEEK : 0F 00 20
RESULT Command=INTSTAT : 08
RESULT Result=20 20
CMD Command=READ : 66 00 20 00 C2 02 C2 2A FF
RESULT Result=40 80 00 20 00 C2 02
MOTOR=OFF

 

Explications des ces opérations.

CMD Command=SEEK : 0F 00 20
RESULT Command=INTSTAT : 08
RESULT Result=20 20
CMD Command=READ : 66 00 20 00 C1 02 C1 2A FF
RESULT Result=40 80 00 20 00 C1 02

Le FDC déplace la tête de lecture sur la piste 32 (&20) puis effectue la lecture des 512 octets du secteur &C1.

Le secteur &C1 possède un GAP3 particulier mais ne semble pas être lu.

 

CMD Command=SEEK : 0F 00 25
RESULT Command=INTSTAT : 08
RESULT Result=20 25
CMD Command=READTRK : 42 00 24 00 C1 02 C1 2A FF
RESULT Result=40 05 01 24 00 C1 02

Le FDC déplace la tête de lecture sur la piste 37 (&25) puis effectue la lecture de la piste.

La piste 37 commençe par le secteur &CB qui ne contient pas de données. La lecture est arrêtée et retourne une erreur.

 

CMD Command=SEEK : 0F 00 24
RESULT Command=INTSTAT : 08
RESULT Result=20 24
CMD Command=READTRK : 42 00 24 00 C1 02 C1 2A FF
RESULT Result=40 34 20 24 00 C1 02

Le FDC déplace la tête de lecture sur la piste 36 (&24) puis effectue la lecture de la piste.

La piste 36 commençe par le secteur &CB qui ne contient que 128 octets. Le FDC lit donc les données de ce secteur, tous les octets entre le secteur &CB et &C1, puis une partie du secteur &C1. Le résultat montre la présence d'un overrun indiquant que la protection ne lit qu'une partie des données.

 

CMD Command=SEEK : 0F 00 21
RESULT Command=INTSTAT : 08
RESULT Result=20 21
CMD Command=READTRK : 42 00 24 00 C1 02 C1 2A FF
RESULT Result=40 B0 20 24 00 C1 02

Le FDC déplace la tête de lecture sur la piste 33 (&21) puis effectue la lecture de la piste.

La piste 33 commençe par le secteur &CB qui contient 8192 octets, sachant qu'une piste ne peut contenir théoriquement que 6250 octets.

Le programme ne lit que les 272 premiers octets, tous valant &4E pour vérifier qu'aucun octet n'ait été ajouté par un logiciel de copie.

 

CMD Command=SEEK : 0F 00 22
RESULT Command=INTSTAT : 08
RESULT Result=20 22
CMD Command=READTRK : 42 00 24 00 C1 02 C1 2A FF
RESULT Result=40 80 20 24 00 C1 02

Le FDC déplace la tête de lecture sur la piste 34 (&22) puis effectue la lecture de la piste.

La piste 34 ne présente pas de particularité, 9 secteurs de 512 octets non remplis.

Le programme lit les 512 octets du secteur &C1.

 

CMD Command=SEEK : 0F 00 23
RESULT Command=INTSTAT : 08
RESULT Result=20 23
CMD Command=READTRK : 42 00 24 00 C1 02 C1 2A FF
RESULT Result=40 80 20 24 00 C1 02

Le FDC déplace la tête de lecture sur la piste 35 (&23) puis effectue la lecture de la piste.

Le programme lit les 512 octets du secteur &C1.

 

CMD Command=SEEK : 0F 00 20
RESULT Command=INTSTAT : 08
RESULT Result=20 20
CMD Command=READ : 66 00 20 00 C2 02 C2 2A FF
RESULT Result=40 80 00 20 00 C2 02

Le FDC déplace la tête de lecture sur la piste 32 (&20) puis effectue la lecture du secteur &C2.

Pour cette dernière opération, le FDC va lire le secteur C2.

Le programme lit les 512 octets du secteur &C2. 

 

Finalement, la protection passe et nous arrivons au menu principal.

 

Je ne suis pas un spécialiste des protections.

Je me suis focalisé sur le codage de l'émulation du FDC. Si je me suis trompé sur ces explications, n'hésitez pas à me corriger.

 

Fredouille

 

Article créé le : Samedi 27 Décembre 2014 à 10 h 42
Dernière mise à jour le : Lundi 02 Mars 2015 à 18 h 02
 
 

CPC-POWER/CPCArchives, projet maintenu par Fredouille.
Programmation par Kukulcan © 2007-2017 tous droits réservés.
Reproduction sans autorisation interdite. Tous les titres utilisées appartiennent à leurs propriétaires respectifs.