NDS-Infos

(von Colibri)

Stand: 28.09.2001

 

Diese deutsche Version wird nicht mehr upgedated,

sondern nur noch die englische Version

 

 

Wichtiger Hinweis: Alle hier gewonnenen Erkenntnisse dienen reinen Forschungszwecken! Die Freischaltung von Pay-TV Karten ist in Deutschland verboten. Der Autor ist nicht für Missbräuche haftbar zu machen. Keine Garantie für die Richtigkeit aller Angaben und Verfahren.

 

Kapitel 1: EMM (Entitlement Management Message)

 

Die EMMs können z.B. auf Astra 2 (28.2 Grad Ost) über den BBC Transponder 11720 H SR 27,5 MS/s FEC 2/3 geloggt. Die EMM-PID ist C0 hex (192 dez).

 

Jedes TS-Packet umfasst 188 Bytes, die meisten Loggingprogramme speichern aber nur die letzten 184 Bytes ab.

Diese 184 Byte langen EMMs fangen immer mit Bytefolge 00 82 70 an. Danach kommt ein Byte das die Länge der Nutzdaten angibt. Nach den Nutzdaten selbst folgen evtl. noch Füllbytes die den Wert FF haben.

 

Da der in einer EMM zur freien Verfügung stehende Speicherplatz nicht immer voll gebraucht wird, ist eine EMM in bis zu vier Blöcke aufgeteilt. Das erste Byte der EMM ist das Adresstyp-Byte, das beschreibt wieviele Sub-EMMs genau enthalten sind und ob die Sub-EMMs für alle Karten, nur bestimmten Kartengruppen oder bestimmten Kartenadressen gedacht ist.

 

Adresstyp-Byte:

b8

b7

b6

b5

b4

b3

b2

b1

Bemerkung

0

0

x

x

0

0

0

0

Alle in diesen EMM enthaltenen Sub-EMMs enthalten keine Filteradresse und sind somit für alle Karten gedacht.

0

1

x

x

0

0

0

0

Alle in diesen EMM enthaltenen Sub-EMMs enthalten 1-4 Filteradressen und sind somit nur genau diese Kartenadressen gedacht.

1

0

x

x

0

0

0

0

Alle in diesen EMM enthaltenen Sub-EMMs enthalten 1-4 Filtergruppen und sind somit nur für diese Kartengruppen gedacht.

1

1

x

x

x

x

x

x

wird nicht verwendet

x

x

0

0

0

0

0

0

Diese EMM enthällt genau eine Sub-EMM.

x

x

0

1

0

0

0

0

Diese EMM enthällt genau zwei Sub-EMMs.

x

x

1

0

0

0

0

0

Diese EMM enthällt genau drei Sub-EMMs.

x

x

1

1

0

0

0

0

Diese EMM enthällt genau vier Sub-EMMs.

x

x

x

x

1

x

x

x

wird nicht verwendet

x

x

x

x

x

1

x

x

wird nicht verwendet

x

x

x

x

x

x

1

x

wird nicht verwendet

x

x

x

x

x

x

x

1

wird nicht verwendet

 

 

Wenn in der EMM Filteradressen verwendet werden (bit 7 oder bit 8 vom Adresstyp-Byte ist gesetzt) dann folgen diese als nächstes und zwar als Gruppen zu je 4 Bytes. Eine Kartenadresse besteht ja genau aus 4 Bytes, aber auch wenn statt Filteradressen Filtergruppen verwendet werden (bei denen ja nur die ersten 3 Bytes der Kartenadresse angegeben werden), wir als 4 Byte einfach der Wert 1 als Füllbyte verwendet.

 

Die nächsten zwei Bytes sind immer 0 und sind unabhängig vom Wert des Adresstyp-Bytes immer vorhanden.

 

Jetzt beginnen die Sub-EMM-Blöcke. Ein Block beginnt immer mit dem Blocklängen-Byte.

 

Blocklängen-Byte:

b8

b7

b6

b5

b4

b3

b2

b1

Bemerkung

0

0

x

wird nicht verwendet

0

1

x

wird nicht verwendet

1

0

x

wird nicht verwendet

1

1

Länge

gibt die Länge der folgenden zum Block gehörenden Bytes in WORDs an (ein WORD sind zwei Bytes). Wenn der Blockinhalt mal ungeradzahlig sein sollte, wird einfach ein Füllbyte mit dem Wert 0 angehängt, damit die Länge wieder passt.

 

 

Wenn der Block zuende ist, folgt anschliessend direkt das Blocklängen-Byte des nächsten Blocks (sofern das Adresstyp-Byte angibt das mehr als nur ein Sub-EMM enthalten ist, also mindestens Bits 5 oder Bit 6 gestetzt ist).

 

Falls Filter verwendet wurden, gehört die ersten 4 Filterbytes zum ersten Sub-EMM-Block, die zweiten 4 Filterbytes zum zweiten Sub-EMM-Block, usw...

 

Wie ist aber ein Sub-EMM aufgebaut?

 

Das ist abhängig davon ob Filteradressen, Filtergruppen oder keine Filter verwendet wurden:

 

 

Nach dem oben beschriebenen Blocklängen-Byte können folgende Bytefolgen auftreten:

·        02 00 ...

·        07 ...

 

·        Wenn die Bytefolge 02 00 ... lautet gilt folgendes. Es folgt ein Byte das die Restlänge des Blocks in Bytes ohne eines evtl. vorhandenen Füllbytes angibt (sonst könnte der Parser nicht unterscheiden ob es sich beim letzten Byte des Blocks um ein Nutzbyte oder um ein Füllbyte handelt).

 

Jetzt folgen bis zum Ende des Blocks Nanos (Nanos sind eine Art Befehle die auf der Smartcard ausgeführt werden).

Es gibt zwei unterschiedliche Typen von Nanos, nämlich Nanos mit Längenbyte und Nanos ohne Längenbyte.

 

Nanos mit Längenbyte:

Inhalt des ersten Bytes

Typischer Wert des Längenbytes

Bemerkung

07

01

Der Inhalt des Datenbytes war immer 00

38

09

Das erste Byte enthält 06.

Die restlichen acht Bytes enthalten nur Ziffern, Grossbuchstaben oder Leerzeichen. (post code)

Hier drei Beispiele:

06 4C 4E 34 20 20 33 45 46 = 06 "LN4  3EF"

06 4F 58 33 33 20 20 20 20 = 06 "OX33    "

06 53 54 36 20 20 20 20 20 = 06 "ST6     "

Nur wenn dieser „post code“ mit dem der Karte übereinstimmt, werden die folgenden Nanos ausgeführt. Der „post code“ der Karte kann mit dem Kommando 48 48 00 00 36 abgefragt werden. Nach dem Byte 1E in der Kartenantwort ist der achtstellige „post code“ enthalten.

Nano 38 (post code) und Nano 31 (Kartenadresse) schliessen sich gegenseitig aus.

5B

0B

Hier drei Beispiele:

E0 00 86 AE 00 64 00 00 3F 00 00

E0 00 87 4F FF FF 00 00 FF FF F1

E0 00 9A 3F FF FF 00 00 C1 C1 F1

5C

05

Hier drei Beispiele:

00 6F FE 37 1B

0A 6A C7 37 0E

17 71 F0 38 07

Dieses Nano kann mehrmals enthalten sein.

67

08

Signatur (kryptografische Prüfsumme über die vorherigen Bytes)

Dieses Nano ist immer enthalten.

6C

04

Hier ein Beispiel:

00 91 18 01

Das war der einzige Wert den ich gefunden habe.

6D

09

Hier drei Beispiele:

01 08 00 73 17 92 9F FF FF

02 03 45 57 60 00 FF FF FF

03 01 25 42 11 11 1F FF FF

Dieses Nano kann mehrmals enthalten sein.

6E

07

Hier drei Beispiele:

06 01 01 01 01 20 08

07 01 01 01 01 8F 00

08 01 01 01 01 20 00

Dieses Nano kann mehrmals enthalten sein.

72

02

Hier zwei Beispiele:

00 01

00 02

Das waren die einzigen zwei Werte die ich gefunden habe.

73

0C

Hier drei Beispiele:

00 00 65 00 01 00 01 00 00 00 00 1A

00 00 65 00 1A FF FF 0B B9 00 00 1A

03 00 6B 00 04 FF FF 00 00 00 00 1A

Dieses Nano kann mehrmals enthalten sein.

75

0F

Hier drei Beispiele:

12 00 02 00 00 00 00 00 00 00 00 08 00

12 01 82 00 01 00 00 00 E0 37 00 10 00

12 11 18 80 04 00 00 00 00 00 00 08 00

76

02

Hier drei Beispiele:

80 90

80 CD

80 FF

Dieses Nano kann mehrmals enthalten sein.

 

Nanos ohne Längenbyte:

Inhalt des ersten Bytes

Anzahl weiterer Bytes die zum Nano gehören

Bemerkung

09

03

Das erste Byte gibt die Keynummer des Schlüssels an, mit der die kryptografische Prüfsumme (Nano 67) berechnet wurde. Aber was bedeuten die letzten zwei Bytes?

Hier die einzigen Beispiele die ich gefunden habe:

10 00 00

14 00 00

14 80 00

Key 10 ist auf allen Karten identisch und wird immer zusammen mit Nano 38 verwendet.

Key 14 ist Kartenindividuell und wird immer zusammen mit Nano 31 verwendet.

Dieses Nano ist immer enthalten.

19

01

Setzt die Zeitzone.

Der einzige Wert den ich gefunden habe ist 00.

1E

08

Diese acht Bytes enthalten nur Ziffern, Grossbuchstaben oder Leerzeichen. (post code)

Hier drei Beispiele:

41 42 31 30 20 20 20 20 -- "AB10    "

43 48 34 20 20 37 45 4A -- "CH4  7EJ"

5A 45 32 20 20 20 20 20 -- "ZE2     "

Nano 1E taucht nur im Zusammenhang mit Nano 31 auf. Nano 1E und 38 schliessen sich gegenseitig aus.

24

00

Da dieses Nano keinen Datenteil hat, dient es lediglich als Flag, ob eine bestimmte Aktion ausgelöst werden soll. Aber Welche?

25

00

Da dieses Nano keinen Datenteil hat, dient es lediglich als Flag, ob eine bestimmte Aktion ausgelöst werden soll. Aber Welche?

2B

02

Hier drei Beispiele:

03 EB

03 F5

04 0B

2D

04

Hier drei Beispiele:

00 40 00 00

38 99 4C 23

39 96 A0 24

31

04

Die vier Bytes geben die Kartenadresse an.

Nur wenn diese mit der Karte übereinstimmt werden die Nanos ausgeführt. Nano 31 und 38 schliessen sich gegenseitig aus.

3D

02

Hier drei Beispiele:

03 EA

04 06

04 39

3E

00

Da dieses Nano keinen Datenteil hat, dient es lediglich als Flag, ob eine bestimmte Aktion ausgelöst werden soll. Aber Welche?

41

05

Die ersten zwei Bytes sind die Channel-ID. Die nächsten zwei Bytes stellen das Ablaufdatum dar. Aber was bedeutet das letzte Byte?

Hier drei Beispiele:

00 10 39 1F 00

00 1D 39 1F C0

B8 5A 39 1F C0

Dieses Nano kann mehrmals enthalten sein.

42

02

Die zwei Bytes stehen für die Channel-ID.

Hier drei Beispiele:

00 0C

60 FE

B8 5A

Dieses Nano kann mehrmals enthalten sein.

4E

04

Hier drei Beispiele:

00 00 01 DC

00 45 81 BA

00 6A 70 7A

 

·        Wenn die Bytefolge 07 ... lautet gilt folgendes. Es folgt ein Byte das die Restlänge des Blocks in Bytes ohne eines evtl. vorhandenen Füllbytes angibt (sonst könnte der Parser nicht unterscheiden ob es sich beim letzten Byte des Blocks um ein Nutzbyte oder um ein Füllbyte handelt). In den anschliessenden Daten ist kein Signaturnano enthalten. Ein Teilbereich scheint zufällig zu sein. Es könnte sich um verschlüsselte Daten handeln (vielleicht Keys?). Hier ein paar Beispiele:

 

66 (Länge)

05

31 00 09 87 3D (Nano 31 mit Kartenadresse)

08 11 6F 01 FF FF FF FF 00 25 01 00 00 00 01 00 00 00 6F 01 00 01 08 27 0C BC F6 14 BB 67 B3 F9 3D 2C 5C 79 FF 7C CB E7 49 F7 C6 2F 19 6E 10 56 AD 68 35 CE 1D 29 FB 3D 23 5F 2C 92 6E 76 44 00 2A 70 EC 50 02 C4 AC C6 5B DF 8F 52 EA 74 C5 11 7C 31 2A 84 34 80 AE CB C6 80 1B 26 3D B7 00 47

 

66 (Länge)

05

31 00 2F CE D8 (Nano 31 mit Kartenadresse)

08 11 6F 01 FF FF FF FF 00 25 01 00 00 00 01 00 00 00 6F 01 00 01 08 DB EC F1 EE CB B2 41 6A AA DA BC 1A 1E AB 4D 41 F5 A3 8E C2 D5 C3 02 13 C9 6E CD 21 B2 7D 51 CF EA 82 89 7A 27 7B 13 3E 0D 2A 6D 6B B9 05 1A 35 7A B2 30 30 73 FF 51 C0 F8 03 14 B6 56 40 F8 42 6C F0 FA 93 EC 07 0D 00 30

 

66 (Länge)

05

31 00 5D 00 6E (Nano 31 mit Kartenadresse)

08 11 6F 01 FF FF FF FF 00 25 01 00 00 00 01 00 00 00 6F 01 00 01 08 C2 FC 64 89 AC 23 45 D4 F8 F8 C2 CC D8 8D 26 0A DC 95 67 26 08 50 BF EC 78 5E 7B C1 77 05 78 E3 C8 72 AB 08 CD 0E 9B 14 1D C3 6D 3D AD D9 BB 66 5C 05 CF 23 7F 98 6D 2B 4C 63 4C 80 B4 6D 21 44 16 02 56 09 EB E3 DF 00 F2

 

 

 

Nach der oben beschriebenen Blocklängen-Byte folgen zwei Bytes mit den Werten 02 00. Dann folgt ein Byte das die Restlänge des Blocks in Bytes ohne eines evtl. vorhandenen Füllbytes angibt (sonst könnte der Parser nicht unterscheiden ob es sich beim letzten Byte des Blocks um ein Nutzbyte oder um ein Füllbyte handelt).

 

Jetzt folgen bis zum Ende des Blocks Nanos (Nanos sind eine Art Befehle die auf der Smartcard ausgeführt werden).

Es gibt zwei unterschiedliche Typen von Nanos, nämlich Nanos mit Längenbyte und Nanos ohne Längenbyte.

 

Nanos mit Längenbyte:

Inhalt des ersten Bytes

Typischer Wert des Längenbytes

Bemerkung

67

08

Signatur (kryptografische Prüfsumme über die vorherigen Bytes)

Dieses Nano ist immer enthalten.

 

Nanos ohne Längenbyte:

Inhalt des ersten Bytes

Anzahl weiterer Bytes die zum Nano gehören

Bemerkung

09

03

Das erste Byte gibt die Keynummer des Schlüssels an, mit der die kryptografische Prüfsumme (Nano 67) berechnet wurde. Aber was bedeuten die letzten zwei Bytes?

Hier das einzigen Beispiel das ich gefunden habe:

12 00 00

Key 12 ist innerhalb der Kartengruppe identisch und wird immer zusammen mit Nano 32 oder 33 verwendet.

Dieses Nano ist immer enthalten.

32

03

Die drei Bytes geben die Kartengruppe an.

Nur wenn Diese mit den ersten drei Bytes der Kartenadresse übereinstimmen, werden die Nanos ausgeführt. Nano 32 und 33 schliessen sich gegenseitig aus.

33

23

Die ersten drei Bytes geben die Kartengruppe an und die restlichen 20 (32 dez.) Bytes die Adressierungsmatrix (wie CB20 bei Irdeto).

Die Adressierungsmatrix enthält also genau 256 dez. Bits. Die Position an der die Bits gesetzt sind geben jeweils das 4 Byte der Kartenadresse an die angesprochen wird.

Beispiel zur Verdeutlichung:

33 00 12 34 80 00 00 ... bedeutet das die Karte 00 12 34 00 angesprochen wird (Bitfolge: 100000000000000000000000...).

33 00 12 34 0A 40 00 ... bedeutet das die Karten 00 12 34 04, 00 12 34 06 und 00 12 34 09 angesprochen werden (Bitfolge: 000010100100000000000000...).

25

00

Da dieses Nano keinen Datenteil hat, dient es lediglich als Flag, ob eine bestimmte Aktion ausgelöst werden soll. Aber Welche?

41

05

Die ersten zwei Bytes sind die Channel-ID. Die nächsten zwei Bytes stellen das Ablaufdatum dar. Aber was bedeutet das letzte Byte?

Hier drei Beispiele:

00 10 3A 01 C0

30 DF 3A 11 C0

B8 5A 3A 15 C0

Dieses Nano kann mehrmals enthalten sein.

42

02

Die zwei Bytes stehen für die Channel-ID.

Hier drei Beispiele:

00 10

30 DD

B8 5A

Dieses Nano ist immer enthalten.

Dieses Nano kann mehrmals enthalten sein.

 

Es gibt nur 2 Möglichkeiten wie diese Nanos bei Filtergruppen verwendet werden:

 

 

Nach dem oben beschriebenen Blocklängen-Byte können folgende Bytefolgen auftreten:

·        02 00 ...

·        02 06 ...

·        07 ...

 

·        Wenn die Bytefolge 02 00 ... lautet gilt folgendes. Es folgt ein Byte das die Restlänge des Blocks in Bytes ohne eines evtl. vorhandenen Füllbytes angibt (sonst könnte der Parser nicht unterscheiden ob es sich beim letzten Byte des Blocks um ein Nutzbyte oder um ein Füllbyte handelt).

 

Jetzt folgen bis zum Ende des Blocks Nanos (Nanos sind eine Art Befehle die auf der Smartcard ausgeführt werden).

Es gibt zwei unterschiedliche Typen von Nanos, nämlich Nanos mit Längenbyte und Nanos ohne Längenbyte.

 

Nanos mit Längenbyte:

Inhalt des ersten Bytes

Typischer Wert des Längenbytes

Bemerkung

38

09

Das erste Byte enthält 06.

Die restlichen acht Bytes enthalten nur Ziffern, Grossbuchstaben oder Leerzeichen. (post code)

Hier drei Beispiele:

06 4C 4E 34 20 20 33 45 46 = 06 "LN4  3EF"

06 4F 58 33 33 20 20 20 20 = 06 "OX33    "

06 53 54 36 20 20 20 20 20 = 06 "ST6     "

Nur wenn dieser „post code“ mit dem der Karte übereinstimmt, werden die folgenden Nanos ausgeführt. Der „post code“ der Karte kann mit dem Kommando 48 48 00 00 36 abgefragt werden. Nach dem Byte 1E in der Kartenantwort ist der achtstellige „post code“ enthalten.

Dieses Nano ist immer enthalten.

67

08

Signatur (kryptografische Prüfsumme über die vorherigen Bytes)

Dieses Nano ist immer enthalten.

6D

09

Hier drei Beispiele:

01 08 00 73 17 92 9F FF FF

02 03 45 57 60 00 FF FF FF

03 01 25 42 11 11 1F FF FF

Dieses Nano kann mehrmals enthalten sein.

6E

07

Hier drei Beispiele:

06 01 01 01 01 20 08

07 01 01 01 01 8F 00

08 01 01 01 01 20 00

Dieses Nano kann mehrmals enthalten sein.

75

13

Hier drei Beispiele:

00 47 42 52 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00

00 47 42 52 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00

00 47 42 52 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00

Die Bytefolge 47 42 52 bedeutet GBR

 

Nanos ohne Längenbyte:

Inhalt des ersten Bytes

Anzahl weiterer Bytes die zum Nano gehören

Bemerkung

09

03

Das erste Byte gibt die Keynummer des Schlüssels an, mit der die kryptografische Prüfsumme (Nano 67) berechnet wurde. Aber was bedeuten die letzten zwei Bytes?

Hier die einzigen Beispiele die ich gefunden habe:

10 00 00

Key 10 ist auf allen Karten identisch und wird immer zusammen mit Nano 38 verwendet.

19

01

Setzt die Zeitzone.

Der einzige Wert den ich gefunden habe ist 00.

24

00

Da dieses Nano keinen Datenteil hat, dient es lediglich als Flag, ob eine bestimmte Aktion ausgelöst werden soll. Aber Welche?

30

03

Hier das einzige Beispiel das ich gefunden habe

42 B8 55

 

 

·        Wenn die Bytefolge 02 06 ... lautet gilt folgendes:

Es folgt ein Byte mit dem Wert 02.

Dann kommen 2 Bytes die das Datum darstellen.

Anschliessend 2 Bytes die die Uhrzeit repräsentieren.

Das folgende Byte kann variiren.

Jetzt kommt ein Byte das die Restlänge des Blocks in Bytes ohne eines evtl. vorhandenen Füllbytes angibt (sonst könnte der Parser nicht unterscheiden ob es sich beim letzten Byte des Blocks um ein Nutzbyte oder um ein Füllbyte handelt).

Jetzt folgen bis zum Ende des Blocks Nanos (Nanos sind eine Art Befehle die auf der Smartcard ausgeführt werden).

Es gibt zwei unterschiedliche Typen von Nanos, nämlich Nanos mit Längenbyte und Nanos ohne Längenbyte.

 

Hier ein paar Beispiele:

 

02 06 02 38 16 AA 3D 3F 16 09 10 00 00 01 38 16 AA 3D 10 29 58 67 08 03 AB B4 6C 7F 21 BE 21

 

02 06 02 38 17 4D D7 7D 16 09 10 00 00 01 38 17 4D D7 10 35 52 67 08 81 44 EF F2 D6 CB 14 EE

 

Nanos mit Längenbyte:

Inhalt des ersten Bytes

Typischer Wert des Längenbytes

Bemerkung

67

08

Signatur (kryptografische Prüfsumme über die vorherigen Bytes)

Dieses Nano ist immer enthalten.

Nanos ohne Längenbyte:

Inhalt des ersten Bytes

Anzahl weiterer Bytes die zum Nano gehören

Bemerkung

01

04

Setzte Datum (die ersten zwei Bytes) und Uhrzeit (die letzten zwei Bytes)

Beispiele:

38 19 A4 9B (25.09.2001 22:37 Uhr MESZ)

38 19 BF 7C (26.09.2001 01:59 Uhr MESZ)

38 1A 00 01 (26.09.2001 02:00 Uhr MESZ)

38 1A 52 BC (26.09.2001 12:22 Uhr MESZ)

02:00 Uhr MESZ entspricht 00:00 GMT.

09

03

Das erste Byte gibt die Keynummer des Schlüssels an, mit der die kryptografische Prüfsumme (Nano 67) berechnet wurde. Aber was bedeuten die letzten zwei Bytes?

Hier das einzige Beispiel das ich gefunden habe:

10 00 00

Key 10 ist auf allen Karten identisch.

10

02

Die 2 Bytes stellen eine aufsteigende Bytefolge dar. Aber was bedeutet sie?

Hier einige Beispiele:

29 FE

29 FF

2A 00

2A 01

2A 02

2A 03

 

 

 

·        Wenn die Bytefolge 07 ... lautet gilt folgendes. Es folgt ein Byte das die Restlänge des Blocks in Bytes ohne eines evtl. vorhandenen Füllbytes angibt (sonst könnte der Parser nicht unterscheiden ob es sich beim letzten Byte des Blocks um ein Nutzbyte oder um ein Füllbyte handelt). In den anschliessenden Daten ist kein Signaturnano enthalten. Hier ein paar Beispiele:

 

65 (Länge)

01 30 07 14 4F 03 FF FF FF FF 00 1A 00 00 00 00 00 00 00 03 00 00 00 4F 01 00 01 08 5D DC 3D 19 27 D5 83 26 DC C8 47 E6 BC E9 DE B4 83 C9 AB FA 30 D5 F1 0B ED D8 0E 38 07 C5 0E 60 F7 F0 42 3A C7 4C E5 F5 68 2D 96 64 60 BA 11 C1 82 A4 EF 57 2B B4 2C 33 65 16 41 84 5D A2 1F E5 2C A9 61 DA 15 11 9F 00 7C

 

65 (Länge)

01 30 07 14 9F 20 FF FF FF FF 00 1D 00 00 01 00 00 00 00 20 00 00 00 9F 01 00 01 08 DB CC 82 AA 96 65 7E 53 D0 31 03 AC EA F8 8D 2E 2C 28 F8 4E 28 11 AB 9E 23 FD 66 AC 7A 7F 20 4F F3 56 BD 3D 90 AF A3 BC DE 0A CD DF CE 33 E7 E5 46 FD 73 34 4E 64 5A 3F 4A A7 1C 67 A4 0E CC FC 3E 5E AE C5 96 13 AE 00 C7

 

65 (Länge)

01 30 07 14 4F 01 FF FF FF FF 00 3B 00 00 00 00 00 00 00 01 00 00 00 4F 01 00 01 08 08 D0 64 9B F1 16 6C E1 3D 6F BC 2F 3F E7 A1 C6 4E 00 FA E3 B5 29 F3 53 7B 91 79 3B B3 C1 BE 5E 7C B3 64 F5 A6 3A 0B D9 41 6A 50 86 4D 4C EB 28 8D A6 03 12 CC C0 1D 86 A0 AE AA 0A D7 60 6D CF BE 78 1C 0E 74 87 04 00 4B

 

65 (Länge)

01 30 07 14 4F 02 FF FF FF FF 00 32 00 00 00 00 00 00 00 02 00 00 00 4F 01 00 01 08 0F 8F 48 0A 9E AF C2 C6 C6 11 60 AE 76 4B 21 FD 71 9C 14 C1 23 04 23 68 64 D6 9A 9C E0 1A 90 E4 58 48 DF 67 A1 27 2D 71 77 B5 CF 76 AB 9E 29 E0 6C 2E C9 CB B4 12 6E CC B5 11 6B 5E 2C 16 B5 26 D3 1D 39 93 0D 89 39 00 01

 

 

 

Kapitel 2: ECM (Entitlement Control Message)

 

Die ECMs können z.B. auf Astra 2 (28.2 Grad Ost) über den BBC Transponder 11720 H SR 27,5 MS/s FEC 2/3 geloggt werden. Die ECM-PID ist 500 hex (1280 dez).

 

Jedes TS-Packet umfasst 188 Bytes, die meisten Loggingprogramme speichern aber nur die letzten 184 Bytes ab.

Diese 184 Byte langen ECMs fangen immer mit Bytefolge 00 80 70 oder 00 81 70 an. Danach kommt ein Byte das die Länge der Nutzdaten angibt. Nach den Nutzdaten selbst folgen evtl. noch Füllbytes die den Wert FF haben.

 

Ich habe mal drei Beispiele abgebildet:

 

00 80 70 87 00 00 01 0E 38 19 A4 9D 13 1E F9 67 11 20 01 00 00 64 74 7E 12 00 00 00 00 00 00 00 00 20 0F B8 F5 54 0C D4 5A 00 00 7F 12 8D A5 E6 66 DE 05 5B A8 B7 43 C2 57 13 C7 EF C4 92 E7 09 10 10 00 01 38 19 A4 9D CB 02 FF FF 02 53 03 74 BB C0 03 B7 DE C0 03 B8 28 C0 38 03 08 00 CC 25 04 4D 0E 74 BB 39 01 00 00 00 00 00 A3 E3 00 D9 E4 4D 0E 74 BB 39 01 00 00 00 00 01 45 E3 01 B1 E4 67 08 80 54 61 36 84 34 D3 33 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF

 

00 81 70 89 00 00 01 0E 38 19 A4 AA FF FF E1 A2 11 20 01 00 00 61 76 7E 12 00 00 00 00 00 00 00 00 82 5C ED EE B1 FF 8E 1A 00 00 7F 12 5B 36 8A B0 9A 97 7B E9 2C D6 85 E6 68 16 AE 40 E2 D7 09 10 10 00 01 38 19 A4 AA CB 02 FF FF 02 40 38 05 08 00 1A 00 1D 04 03 00 1D 00 24 38 03 08 00 1A 25 38 03 08 00 91 04 03 00 10 00 24 38 03 08 00 1A 58 03 08 00 91 25 04 24 38 03 08 00 E0 04 03 B7 C8 00 67 08 81 3F D9 E2 71 BE F5 6E FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF

 

00 80 70 54 00 00 01 0E 38 1A 23 C5 FF FF 32 50 01 20 01 00 00 EB 41 7E 12 00 00 00 00 00 00 00 00 7E CC A1 C2 5E B6 85 92 00 00 7F 12 76 68 2C CF 57 B6 41 F6 80 E4 86 8F 7B C5 C3 0D 92 44 09 10 10 00 01 38 1A 23 C5 CB 02 FF FF 02 80 67 08 70 7F 04 34 82 D6 A1 D8 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF

 

 

Die ersten drei Bytes lauten immer 00 00 01.

Dann folgt ein Byte, das die Länge des „Headers“ angibt. (Die Headerlänge war bei meinen Loggings immer 0E)

 

Dann kommt der Headerinhalt:

o       Der Headerinhalt beginnt mit vier Bytes die die Zeit angeben. Die ersten zwei Byte stellen dabei das Datum dar und die letzten Zwei die Uhrzeit.

Beispiel:

38 19 A4 9B = 25.09.2001 20:37 Uhr GMT (oder 25.09.2001 22:37 Uhr MESZ)

38 19 BF 7C = 25.09.2001 23:59 Uhr GMT (oder 26.09.2001 01:59 Uhr MESZ)

38 1A 00 01 = 26.09.2001 00:00 Uhr GMT (oder 26.09.2001 02:00 Uhr MESZ)

38 1A 52 BC = 26.09.2001 10:22 Uhr GMT (oder 26.09.2001 12:22 Uhr MESZ)

 

o       Die nächsten vier Bytes variieren.

 

o       Das folgende Byte ist immer 01 oder 11.

 

o       Die nächsten vier Bytes lauten immer 20 01 00 00.

 

o       Das folgende Byte variiert wieder. Der Headerinhalt ist hiermit zuende.

 

 

Dann folgt ein Byte, das die Länge des Nano-Blocks angibt.

 

Jetzt folgen bis zum Ende des Blocks Nanos (Nanos sind eine Art Befehle die auf der Smartcard ausgeführt werden).

Es gibt zwei unterschiedliche Typen von Nanos, nämlich Nanos mit Längenbyte und Nanos ohne Längenbyte.

 

Nanos mit Längenbyte:

Inhalt des ersten Bytes

Typischer Wert des Längenbytes

Bemerkung

38

03/05/07

Hier drei Beispiele:

08 00 18

08 00 1A 00 1D

08 00 93 00 91 00 1D

Dieses Nano kann mehrmals enthalten sein.

4D

0E

Hier drei Beispiele:

01 6C 39 01 00 00 00 00 00 A3 E3 00 D9 E4

25 9F 39 01 00 65 06 00 00 A3 E3 00 D9 E4

7E 36 39 02 00 65 06 00 01 45 E3 01 B1 E4

Dieses Nano kann mehrmals enthalten sein.

67

08

Signatur (kryptografische Prüfsumme über die vorherigen Bytes)

Dieses Nano ist immer enthalten.

7E

12

Dieses Nano enthält die verschlüsselten Controllwords:

Hier drei Beispiele:

00 00 00 00 00 00 00 00 (CW1?)

B9 43 44 F4 76 52 D5 D8 (CW2?)

00 00                   (?)

 

00 00 00 00 00 00 00 00 (CW1?)

E6 8F 31 76 76 12 DD D2 (CW2?)

00 00                   (?)

 

00 00 00 00 00 00 00 00 (CW1?)

28 4E 14 FE CA 4F 41 9F (CW2?)

00 00                   (?)

CW1 war bei mir immer leer. Woher weis der Decoder/CAM ob er das CW2 in das Even- oder in das Odd-Register schreiben soll? Ich habe eigendlich erwartet, dass z.B. CW1 = Even-CW und CW2 = Odd-CW ist oder umgekehrt.

7F

12

Dieses Nano könnte auch die verschlüsselten Controllwords enthalten. Manche Decoder verwenden anscheinend Nano 7E und andere Nano 7F.

Hier drei Beispiele:

24 39 4F 4E 1B 5A 66 AA (CW1)

BC 61 EE 38 5E 96 B8 44 (CW2)

F4 3D

 

B6 39 13 FB D0 F6 76 96 (CW1)

D3 45 A1 3A 5A 90 D2 3A (CW2)

94 75

 

95 06 2C AB 5F 9B 2F CA (CW1)

E1 FD 21 3B 6E 42 F8 DC (CW2)

65 B5

CB

02

Das ist der einzige Wert den ich gefunden habe:

FF FF

Dieses Nano ist immer enthalten.

 

Nanos ohne Längenbyte:

Inhalt des ersten Bytes

Anzahl weiterer Bytes die zum Nano gehören

Bemerkung

01

04

Setzte Datum (die ersten zwei Bytes) und Uhrzeit (die letzten zwei Bytes)

Beispiele:

38 19 A4 9B (25.09.2001 22:37 Uhr MESZ)

38 19 BF 7C (26.09.2001 01:59 Uhr MESZ)

38 1A 00 01 (26.09.2001 02:00 Uhr MESZ)

38 1A 52 BC (26.09.2001 12:22 Uhr MESZ)

02:00 Uhr MESZ entspricht 00:00 GMT.

02

01

Hier drei Beispiele:

00

43

80

Dieses Nano ist immer enthalten.

03

03

Die ersten zwei Bytes stehen für die Channel-ID. Aber was bedeutet das dritte Byte?

Hier drei Beispiele:

00 10 00

B7 21 00

B8 5B 00

Dieses Nano kann mehrmals enthalten sein.

Mindestens eine Channel-ID muss auf der Karte vorhanden (und noch nicht abgelaufen) sein damit die Karte die gecrypteten Controllwords (Nano 7E/7F) entschlüsselt und somit das Bild entschlüsselt wird.

04

00

Da dieses Nano keinen Datenteil hat, dient es lediglich als Flag, ob eine bestimmte Aktion ausgelöst werden soll. Aber Welche?

Dieses Nano kann mehrmals enthalten sein.

09

03

Das erste Byte gibt die Keynummer des Schlüssels an, mit der die kryptografische Prüfsumme (Nano 67) berechnet wurde. Aber was bedeuten die letzten zwei Bytes?

Hier das einzige Beispiel das ich gefunden habe:

10 10 00

Key 10 ist auf allen Karten identisch.

Dieses Nano ist immer enthalten.

24

00

Da dieses Nano keinen Datenteil hat, dient es lediglich als Flag, ob eine bestimmte Aktion ausgelöst werden soll. Aber Welche?

Dieses Nano kann mehrmals enthalten sein.

25

00

Da dieses Nano keinen Datenteil hat, dient es lediglich als Flag, ob eine bestimmte Aktion ausgelöst werden soll. Aber Welche?

48

00

Da dieses Nano keinen Datenteil hat, dient es lediglich als Flag, ob eine bestimmte Aktion ausgelöst werden soll. Aber Welche?

58

00

Da dieses Nano keinen Datenteil hat, dient es lediglich als Flag, ob eine bestimmte Aktion ausgelöst werden soll. Aber Welche?

Dieses Nano kann mehrmals enthalten sein.

 

 

 

Ich habe mal über 24 Std. einige NDS-Transponder geloggt. Herausgekommen ist eine Tabelle über welchen Transponder welche Channel-IDs abgefragt wurden. Einige CHIDs haben sich von Film zu Film geändert.

 

Frequenz

Pol.

Nano 03 Dateninhalt (die ersten zwei Bytes sind die Channel-ID)

11720000

H

00 1D 00

11739000

V

00 10 00, B7 3D 00, B7 5B 00

11758000

H

30 E4 00

11798000

H

00 1D 00

11817000

V

00 10 00, B7 44 00, B7 58 00, B7 5A 00

11836000

H

00 10 00, 74 BB C0, 7E 36 C0, B7 39 00, B7 57 00,

B7 58 00, B7 59 00, B7 5A 00, B7 5B 00, B7 73 C0,

B7 DE C0, B8 28 C0

11856000

V

00 10 00, 74 BB C0, 7E 36 C0, B7 39 00, B7 57 00,

B7 58 00, B7 59 00, B7 5A 00, B7 5B 00, B7 73 C0,

B7 E2 C0, B8 28 C0

11876000

H

00 10 00, B7 33 00, B7 58 00, B7 59 00

11895000

V

00 10 00, B7 2E 00, B7 5A 00

11914000

H

00 10 00, 39 D0 C0, 75 DD C0, B7 39 00, B7 57 00,

B7 58 00, B7 59 00, B7 5A 00, B7 5B 00, B7 73 C0,

B7 E8 C0, B8 28 C0

11934000

V

00 10 00, 6A 43 C0, 75 DD C0, B7 39 00, B7 57 00,

B7 58 00, B7 59 00, B7 5A 00, B7 5B 00, B7 73 C0,

B7 EB C0, B8 28 C0

11954000

H

00 10 00, 00 1D 00, B7 57 00, B7 58 00, B7 59 00,

B7 5A 00, B7 5B 00, B7 6F 00

11973000

V

08 00 1D, B7 9A 00

12032000

H

B8 42 00

12051000

V

00 10 00, B7 58 00, B7 5A 00, B7 74 00

12070000

H

00 10 00, 66 65 C0, 7D 42 C0, B7 39 00, B7 57 00,

B7 58 00, B7 59 00, B7 5A 00, B7 5B 00, B7 73 C0,

B7 F3 C0, B8 28 C0

12090000

V

00 10 00, 6B E4 C0, 7D 4E C0, B7 39 00, B7 57 00,

B7 58 00, B7 59 00, B7 5A 00, B7 5B 00, B7 73 C0,

B7 F5 C0, B8 28 C0

12129000

V

B7 77 00

12148000

H

00 10 00, 25 9F C0, 68 33 C0, B7 39 00, B7 57 00,

B7 58 00, B7 59 00, B7 5A 00, B7 5B 00, B7 73 C0,

B7 FE C0, B8 28 C0

12168000

V

B7 66 00

12188000

H

B7 21 00

12226000

H

00 10 00, 1C 6C C0, 68 84 C0, B7 39 00, B7 57 00,

B7 58 00, B7 59 00, B7 5A 00, B7 5B 00, B7 73 C0,

B8 04 C0, B8 28 C0

12266000

H

00 10 00, 01 6C C0, 19 80 C0, B7 39 00, B7 57 00,

B7 58 00, B7 59 00, B7 5A 00, B7 5B 00, B7 73 C0,

B8 10 C0, B8 28 C0

12324000

V

00 10 00, B8 58 00, B8 59 00, B8 5A 00, B8 5B 00

12344000

H

B8 3D 00

12363000

V

00 10 00, 10 F4 C0, 19 D2 C0, 2E 18 C0, 2E E4 C0,

2E F7 C0, 50 7C C0, B7 39 00, B7 57 00, B7 58 00,

B7 59 00, B7 5A 00, B7 5B 00, B7 73 C0, B8 14 C0,

B8 1E C0, B8 28 C0

12382000

H

00 10 00, B8 2C 00

12402000

V

B7 7F 00

12422000

H

B8 37 00

12441000

V

00 10 00, 00 1D 00, 08 00 91, B7 C8 00

12460000

H

30 E5 00

12480000

V

00 10 00, B7 39 00, B7 3B 00, B7 57 00, B7 58 00,

B7 59 00, B7 5A 00, B7 5B 00

 

 

 

Für Berichtigungen und Ergänzungen die Ihr an folgende E-Mail-Adresse schicken könnt colibri_dvb@lycos.com möchte ich mich schon mal im Voraus Bedanken.

 

Das aktuelle Dokument findet Ihr auf folgender Seite:

http://colibri.move.to/