EMM

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-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