La rétro-ingénierie du discret 14 par Captain Jack

Bonjour,

Le discret 14 est un système de cryptage analogique qui a succédé au discret 12 dans le courant des années 90, dans certains pays comme l’Islande, la Belgique,

avec un système de contrôle plus robuste basé sur le VBI et un chiffrage des données transmises via le VBI, ce qui a conduit à la disparition du clavier en façade.

Captain Jack a pu se procurer un décodeur Discret 14 de la part d’un internaute Islandais, et donc une cassette vidéo contenant du discret14, et a réussi à analyser le contenu des puces mémoires du décodeur,

après une rétro-ingénierie très poussée il a réussi à faire décoder une cassette vidéo ayant un contenu crypté en discret 14, il a expliqué les différentes méthodes qu’il a utilisé ici :

https://medium.com/@forums_2900/discret-14-reverse-engineering-a-lost-scrambling-system-3cb71917d7a7

Il a pu obtenir une cassette vidéo VHS contenant un signal discret 14, il l’a numérisé en intégrant le VBI dans la capture, le discret 14 utilise 4 lignes vidéos pour transmettre des informations au décodeur : les lignes 24, 310, 336 et 622.

As mentioned before, the system uses four lines in the visible picture area: lines 24, 310, 336, and 622.

Each line carries data, but they serve different purposes.
Each line carries 8 bits, LSB first, or 1 byte. With 4 lines per frame @ 25 frames per second, that gives us an effective rate of 100 bits/second.

  • Line 310 carries a frame counter and drives the decoder’s basic timing. Without it, the decoder does nothing.

  • Lines 24 and 336 appear to carry decoder addressing (EMM) data for individual decoder management. These weren’t important for descrambling.

  • Line 622 is the critical one. The 24-byte “superframe” as we call it, builds from a 6-frame cycle with a counter in the first byte. The data structure breaks down into three 8-byte groups: channel data (channel ID, control bytes, date information), and 2x 8-byte validation/signature blocks. The decoder is extraordinarily sensitive to this line — any changes to the second 8-byte block invalidates the entire superframe. This suggested there was some validation going on.

Du matériel d’analyse des puces a été utilisé :



Le résultat de ce hacking, il arrive à faire décoder le contenu vidéo de la cassette avec le décodeur :

4 « J'aime »

Bonjour,

Merci, c’est le genre de sujet que j’adore.

Je suis en train de lire avec grand interêt la page de Captain Jack.

Le disclaimer est osé, mais sympa:

I am an idiot. I am not an electronics engineer, a hardware engineer nor a software engineer.

Qu’est-ce que ce serait si il était dans le métier…

Pour avoir suivi (et discuté avec lui) ses travaux sur le nagra, on savait de quoi il était capable.

Affaire à suivre !

Le coeur du décodeur discret 14 est articulé autour de 2 circuits intégrés :

  • Philips P83C851 : un dérivé du microcontroleur Intel 8051, avec 4 kilo-octet de mémoire ROM, et 256 octets de mémoire EEPROM, cette puce gère les données VBI, et exploite les données des lignes 24, 310, 336 et 622, afin d’envoyer des données au circuit intégré Motorola ZKAA9443,

  • Motorola ZKAA9443 : un circuit intégré personnalisé (un ASIC) qui communique dans les 2 sens avec le Philips P83C851, il fournit au Philips P83C851 des top de timing pour la synchronisation avec la trame PAL, afin que le Philips P83C851 puisse extraire les données VBI et les données des lignes 24, 310, 336 et 622.
    Puis le Philips P83C851 lui envoie une valeur de 16 octets déchiffrée (via des clés de déchiffrage DES), cette puce Motorola utilise cette valeur de 16 octets pour générer une valeur de retard à appliquer sur la ligne de la vidéo (pour obtenir une image décodée), cette valeur de retard est envoyée ensuite à un circuit intégré TDA8454 via un mot de 3 bits.

Puis un composant chargé de retarder la ligne vidéo :

  • TDA8454 : permet de retarder la ligne vidéo selon 3 valeurs : 0 ns, 802 ns, 1804 ns, en fonction d’un mot de 3 bits reçu de la part du Motorola ZKAA9443

Captain Jack a pu en déduire le fonctionnement de ces circuits intégrés en fabricant un support avec des switchs pour comprendre le fonctionnement de chaque pin de ces 2 composants :

Afin de cartographier le flux de données entre les deux puces, j’ai conçu une carte d’extension avec des interrupteurs d’isolation. Ces interrupteurs me permettent de déconnecter des broches individuellement sans les dessouder, si je souhaite :

Vérifier si les données entrent ou sortent de la puce (d’où la présence de connecteurs de chaque côté des interrupteurs) ;

Commuter des broches spécifiques pour observer leur effet ;

Déconnecter les ports 851 et injecter mes propres données, la puce restant dans le décodeur.

Il a utilisé aussi un appareil pour lire la mémoire du microcontrôleur, faire un dump de la mémoire, et une version modifiée de hackTV pour envoyer des données VBI, afin de voir le comportement de ces 2 circuits intégrés.