EMM

Aus Zebradem WIKI
Zur Navigation springenZur Suche springen

Das Board mit Freiheiten



EMM - How to block, save, select and write with OSCam

Begriffsbestimmung

EMM = Entitlement Management Messages werden mit dem TV-Stream ausgesendet und lösen durch Zusammenwirken von SmartCard und CardReader (ggf mit entsprechenden Interfaces) auf der Empfängerseite bestimmte Aktionen aus, wie z.B.

  • Aktivieren bzw. Freischalten der SmartCard
  • Verlängerungen der Gültigkeit
  • Hinzuwählen von bestimmten Sendungen
  • Pairen (verheiraten) mit einem bestimmten Receiver


OSCam unterscheidet vier Arten von EMM:

  • unique = nur für eine ganz bestimmte SmartCard eines Providers
  • shared = für eine bestimmte Gruppe von SmartCards eines Providers
  • global = für alle SmartCards eines Providers
  • unknown = unbekannte EMM


Dieses Wiki befasst sich mit den Möglichkeiten von OSCam, eingehende EMM für SmartCards auf dem Cardserver zu

  • blocken (block)
  • sichern (save)
  • filtern (select) und schließlich manuell auf die SmartCard zu
  • schreiben (write)


EMM-Aufbau:

  • Die 0x41er sind Unique, die bekannten. die 07er können eine CA- oder Box-ID enthalten und sind somit als "potenziell Gefährlich" einzustufen.
  • 8270 <länge> 41 <Karte> 0200 <länge> 90 <länge> <Befehl> <verschlüsselt>
  • 8270 <länge> 41 <Karte> 07 <länge> 05 31 <Karte> 2B <länge> 05 <Sub-EMM-Nr> <Box-ID oder 00..00> <länge> 90 <länge> <Befehl> <verschlüsselt> <<<nächstes Sub-EMM>>> <Checksum> 00
  • Dann gibt es noch 0xC1er, die sind für Receiver oder Modul. Laufen für OSCAM glaube als unknown? --- Eh unwichtig.
  • 8270 <Länge> C1 <Box-ID> <07oder0B> ...
  • Die 0x01er sind Global oder Shared haben zwei Aufbauten: --- Aber wieder unwichtig.
  • 8270 <länge> 01 0200 <länge> 90 <länge> <Befehl> <verschlüsselt>
  • 8270 <länge> 01 0206 02 7D 1A <Kartengruppe> <länge> 90 <länge> <Befehl> <verschlüsselt>
  • Ergänzung: <länge> ist generell Benannt, es gibt im EMM unterschiedliche Längen

EMM-Management

Die Configuration der oscam.server ermöglicht dem CardReader, die beim Client eingehenden EMM auf unterschiedliche Weise zu behandeln

block

Hiermit wird die Weiterleitung der EMM an die SmartCard blockiert. Sie wird also nicht auf die Karte geschrieben. Man kann die einzelnen EMM-Arten separat mit Setzen einer 1 blockieren:

  • blockemm-u = blockiert nur unique EMM
  • blockemm-s = blockiert nur shared EMM
  • blockemm-g = blockiert nur global EMM
  • blockemm-unknown = blockiert nur unbekannte EMM


Der Default-Wert ist bei allen 4 Parametern 0, also nicht geblockt!

Will man alle EMM an einer Weiterleitung zur SmartCard hindern, muss bei allen vier obengenannten Parametern eine 1 gesetzt werden!


Eine Sonderstellung nimmt folgender Parameter ein:

  • blockemm-bylen


Damit können EMM aller oben aufgeführten Arten mit einer bestimmten Länge blockiert werden. Eine Kombination zwischen den 4 EMM-Arten und blockemm-bylen ist nicht nur möglich sondern auch zweckmäßig.

Beispiel:
blockemm-u      =  0
blockemm-s      =  1
blockemm-g      =  1
blockemm-unknown = 1
blockemm-bylen = 50-60,100-110
Es werden alle unique EMM auf die SmartCard geschrieben mit Ausnahme der Längen 50 bis 60 und 100 bis 110



save

In bestimmten Fällen ist es zweckmäßig, die EMM zu prüfen, bevor sie auf die SmartCard geschrieben werden. Das kann man nicht, wenn man sie nur, wie oben beschrieben, blockt. Sie müssen also zunächst gesichert werden, damit man sie prüfen und ggf. manuell auf die SmartCard schreiben kann

Vorbedingung ist, dass in [[oscam.conf[g|oscam.conf[global]]] ein Pfad für die Sicherung der Logdaten festgelegt ist:


Beispiel:
/var/log/oscam/emm.log/

Oder im WebIF.


Wenn dort nichts eingetragen wird, gilt als Default-Wert das Verzeichnis, in dem die Config steht!



INFO:

Das Verzeichnis wird aber nicht von Oscam erstellt. Es muss bereits auf der Festplatte vorhanden sein.


In der oscam.server stehen folgende Speichermöglichkeiten zur Verfügung:

  • saveemm-u = speichern der unique EMM
  • saveemm-s = speichern der share EMM
  • saveemm-g = speichern der global EMM
  • save-unknown = speichern der unknown EMM


Defaultwert ist für alle 0 = keine Speicherung. Mit dem Setzen von 1 wird eine Speicherung unter dem in [[oscam.conf[g|oscam.conf[global]]] festgelegten Pfad vorgenommen.
Diese Parameter können auch im WebIf verwaltet werden:

select

Aus den gespeicherten EMM kann man nun die EMM heraussuchen, die man auf die SmartCard schreiben möchte. Das macht man am besten mit copy&paste (siehe nächster Abschnitt!).

write

Das WebIf bietet unter dem Tab Reader die Möglichkeit, einzelne EMM manuell auf die SmartCard zu schreiben:


Man erhält dann folgendes Bild:


In den oberen Abschnitt fügt man die gewünschte EMM mit copy&paste ein.

Die CAID muss nicht eingetragen werden!



Erläuterung:(Schelle76 StB)
Einen Pfad muss man nur angeben, wenn man eine EMM aus einer Datei (z.B. var/log/oscam/emm.log)schreiben will. Solange man es nur händisch macht, benötigt man keinen Pfad.

Beispiel NDS/Videogard V 14 SmartCard

Anhand einer V14 SmartCard (NDS/Videogard) soll die praktische Anwendung des EMM-Management beschrieben werden. Die nachfolgenden Ausführungen sind eine Zusammenfassung der wesentlichen Erkenntnisse aus diesem sehr umfangreichen streamboard-thread

block

Da die EMM, die die

  • Aktivierung bzw. Freischaltung
  • Verlängerung
  • Entitlements
  • Select Bestellungen
  • Pairing

auf der SmartCard veranlassen, alle kartenspezifisch, also unique sind, können die übrigen EMM-Arten geblockt werden.


Hinweis

Eine unique EMM erkennt man auch daran, dass sie die Serial-Nr. der SmartCard enthält!


Die oscam.server wird daher wie folgt konfiguriert:

blockemm-s = 1
blockemm-g = 1
blockemm-unknown = 1


Da wir (derzeit noch) nicht wissen, welche EMM das pairing mit dem Receiver bzw. CI verursachen und welche Längen diese EMM haben, werden die nach augenblicklichem Erkenntnisstand gefährlichen EMM herausgefiltert mit

blockemm-bylen = 1-31,36,38,40-41,65-72,74-124,126,128-129,131,141-255 


Damit wird folgenes erreicht:

  • Alle share, global und unknown EMM werden geblockt
  • Zur SmartCard werden nur die unique EMM durchgelassen
  • Diese unique EMM werden aber über den Parameter blockemm-bylen so gefiltert, dass nur gute EMM auf die SmartCard gelangen.


Mit diesen Vorkehrungen hat man nach dem augenblicklichen Stand der Erkenntnisse eigentlich schon alles getan, um eine Hochzeit zwischen SmartCard und Receiver bzw. CI zu verhindern.

save

Falls sich etwas bei den EMM von Provider-Seite ändert, ist es gut, wenn man sich diese EMM anschauen und bei Bedarf manuell auf die Smartcard schreiben kann.

Daher folgender Eintrag in die oscam.server:

saveemm-u = 1


Es besteht keine Notwendigkeit, auch die übrigen EMM (s,g,unknown) zu loggen und zu speichern

Hier ein FileZilla-Ausschnit, der anzeigt, was dort gespeichert wird:



  • Auf der *.bin sind die Logdaten im bin-Format. Diese Datei wird eigentlich nirgendwo mehr benötigt. Sie sollte im Rahmen der weiteren Programmpflege von OSCam wegfallen, da sie nur irritiert!
  • Die *.log sind die mit saveemm und ggf. mit blockemm-bylen gefilterten EMM. Die kann kann man sich am besten mit Wordpad oder einem anderen Editor anschauen und die ausgesuchten EMM dann mit copy&paste auf die Karte schreiben.



select

pepo83 hat eine Liste [1] im Streamboard-Forum angelegt, die etwas über die guten und bösen EMM aussagt.

write

Wenn man nicht eine Filterung über den Parameter blockemm-bylen vornimmt, sondern auch die unique EMM mit blockemm-u blockt, muss man die erforderlichen EMM anhand der Liste von pepo83 aus den mit saveemm-u gespeicherten EMM einzeln heraussuchen, auf die SmartCard schreiben (siehe oben!) und schauen, was dann passiert. Dies ist eine Methode, mit der man sich vorsichtig an die guten EMM herantasten kann und die auch bei der Schaffung dieser Liste im o.g. Thread Pate gestanden hat.

Hier noch eine Faustregel von derdaa aus dem StB:
EMM-BLOG und LOG

  • Freischalten lassen
  • 40 Minuten Warten
  • Log Auslesen, die EMM die nach 30 Minuten nicht mehr kommt Schreiben (das ist die Freischaltung)
  • die Kürzeste EMM (Im HEX 20-40 gesammt 108 Zeichen ist die Verlängerung)

Mehr nicht machen; da hat man dann meist um die 3 Monate ruhe und bis dahin gibt es evtl schon was neues!

Fusebyte

Das Fusebyte gibt darüber Auskunft, in welchem Aktivierungszustand sich die SmartCard befindet:

Format
15 48 xx
      00 nicht aktiviert
      05 aktiviert
      25 gepairt (mit Receiver verheiratet) <--- was wir unter allen Umständen vermeiden wollen!


Das Fusebyte findet man, wenn man im WebIF auf der Status-Seite unten den Debug-Modus ALL auswählt, danach den Reader neu startet und nach der Folge 15 48 XX sucht.



Ein Tipp von User kaggee aus dem StB:
Für alle, die das Fusebyte im Oscamlog nicht finden:
Die Standardgröße für das OSCam.log von 256 KB auf 1.500 KB erhöhen, dann kann man das Fusbyte sehen!


Payload

Über die Bedeutung dieses EMM-Bestandteils besteht noch keine Einigkeit. Es gibt Meinungen, die dem Payload eine größere Bedeutung als dem Fusebyte zumessen.

Sichtbar wird es im Log, wenn im WebIF Status-Seite unten im Debug-Level die Ziffern 2 und 4 ausgewählt werden:



Dann erscheint in der 2. Logzeile nach [videogard2]Decrypted eine HEX-Ziffernfolge

0F 06 02 30  vor dem Aktivieren der Karte
0F 06 00 10  nach dem Aktivieren der Karte
0F 06 00 00  beim Schreiben der Tiers


Weitere Erkenntnisse hierüber liegen noch nicht vor!

Configurationen

Nachfolgend einige Muster-Configurationen für die oscam.server
Hinweis: die mit *** gekennzeichneten Parameter sind benutzerspezifisch!

easymouse 2


[reader]
label                         = V_14
description                   = NDS-Reader
enable                        = 1
protocol                      = mouse
device                        = ***
boxid                         = 12345678
services                      = ***
detect                        = ***
blockemm-unknown              = 1
blockemm-u                    = 0
blockemm-s                    = 1
blockemm-g                    = 1
blockemm-bylen                = 1-31,36,38,40-41,65-72,74-124,126,128-129,131,141-255 
saveemm-u                     = 1
ins7e11                       = 13 (auch 15!)
ndsversion                    = 2



serial


[reader]
label                         = V14
protocol                      = smartreader
device                        = ***
services                      = ***
autospeed                     = 0
caid                          = ***
boxid                         = 12345678
ins7e11                       = 15
detect                        = cd
mhz                           = 480
cardmhz                       = 369
group                         = 1
emmcache                      = 1,1,2
blockemm-unknown              = 1
blockemm-s                    = 1
blockemm-g                    = 1
blockemm-u                    = 0
saveemm-u                     = 1
blockemm-bylen                = 1-31,36,38,40-41,65-72,74-124,126,128-129,131,141-255 
ndsversion                    = 2



smargo


# Sky V14 im Smargo FTDI muss aktiv sein
[reader]
Label                   = SkyV14
device                  = /dev/ttyUSB0
protocol                = mouse
caid                    = 098C
boxid                   = 12345678
ins7e11                 = 13
smargopatch             = 1
detect                  = cd
cardmhz                 = 368
mhz                     = 480
autospeed               = 0
group                   = 1
emmcache                = 1,1,2
saveemm-u               = 1
blockemm-unknown        = 1
blockemm-g              = 1
blockemm-s              = 1
blockemm-bylen          = 1-31,36,38,40-41,65-72,74-124,126,128-129,131,141-255 
ndsversion              = 2


# Sky V14 im Smargo USB:ID mit z.B. list_smargo auslesen
[reader]
Label                   = SkyV14
device                  = USB:ID
protocol                = smartreader
caid                    = 098C
boxid                   = 12345678
ins7e11                 = 13
detect                  = cd
cardmhz                 = 368
mhz                     = 480
autospeed               = 0
group                   = 1
emmcache                = 1,1,2
saveemm-u               = 1
blockemm-unknown        = 1
blockemm-g              = 1
blockemm-s              = 1
blockemm-bylen          = 1-31,36,38,40-41,65-72,74-124,126,128-129,131,141-255 
ndsversion              = 2


weiterführende links

Quellenangaben

http://streamboard.tv/wiki/OSCam/de

[ Zurück zu Hauptseite ]