MPCS
Was kann das Programm
MPCS ist ein multi-platform/multi-protokoll cardserver.
Am 19.11.2003 regte user Mode im streamboard-forum die Idee: Cardserver für Linux an. Aus den Diskussionen ging ein erster neuer Cardserver hervor, den dukat am 13.01.2004 vorstellte. Anlässlich der Weiterentwicklung dieses MPCS zur Version 0.7j schrieb dukat am 27.11.04:
"linux cardserver" ist natuerlich jetzt ein merkwuerdiger name für einen cardserver, der auf verschiedenen platformen laufen kann. ich habe ihn deshalb auf mp-cardserver umgetauft.(multi-platform/multi-protokoll.)
Welche Plattformen und Protokolle werden unterstützt
Plattformen
Linux mit den hauptsächlichen Derivaten einschließlich dbox2. Siehe Abschnitt Versionen!
Windows unter Verwendung von cygwin. Siehe Abschnitt Versionen!
Protokolle
camd3
Die Verwendung dieses Protokolls hat den Vorteil, dass auf der Seite der Clients, die auf der Basis von Camd3 arbeiten, keine Änderungen in den Konfigurationen nötig sind, sofern serverseitig auf diese Variablen Rücksicht genommen wird (z.B. in der mpcs.users). Erfolgreich getestet bis camd3 Vers. 3.902.
camd3.3
Entspricht auf Clientseite (camd3.servers) dem Eintrag unter cs378x (TCP) Vgl. camd3
camd3.5
Entspricht auf Clientseite (camd3.servers) dem Eintrag unter cs357x (UDP) Vgl. camd3
newcamd
gbox
radegast
Welche Hardware wird unterstützt (reader, receiver...)
Seriell
USB
Dateien für die Configuration und deren Variablenbeschreibung
Hinweis für alle Dateien: Komandozeilen können mit # auskommentiert werden. Das hat zur Folge, dass eine auskommentierte Zeile bei Ausführung des Programms nicht gelesen und damit auch nicht ausgeführt wird!
mpcs.conf
V1.0 (KrazyIvan Version)
[global] Nice = -1 ClientTimeout = 4 ClientMaxIdle = 60 CacheDelay = 0 FallbackTimeout = 1 BindWait = 10 ResolveDelay = 10 DyndnsInterval = 120 LogFile = stdout PidFile = /var/run/mpcs.pid MaxLogSize = 102400 showecmdw = 0 showemmdw = 0 disablecache1 = 0 disablecache2 = 0 disablecache = 0 Filter = 0 [newcamd] Key = 0102030405060708091011121314 Port = 23423@0604:000000; # -- camd 3.5x ---------------------------------------------------------------- # Port : Port-Number (0 disables this protocol) # ServerIP : bind service to ONE dedicated ip-address # ----------------------------------------------------------------------------- [cs378x] Port = 54343 [cs357x] Port = 54343
Variablenbeschreibung
Nice
Systempriorität. MPCS benötigt fast keine CPU-Leistung. Wenn aber CPU-Leistung benötigt wird, sollte diese sofort zur Verfügung stehen. Werte von 20 bis -20 sind möglich, wobei 20 gering und -20 sehr hoch ist. Wird der Parameter auskommentiert(#), wird diese Funktion nicht ausgerufen. Das ist wichtig z.B. für die dbox2, wenn die Fehlermeldung "relocation error:setpriority" erscheint. Vgl. Prioritätsscheduling
Nice = -1
ClientTimeout
Maximale Wartezeit des Clients in Sekunden auf eine Antwort.
ClientTimeout = 4
ClientMaxIdle
Maximale Zeit in Sekunden, die der Client inaktiv bleiben kann, bevor er automatisch abgemeldet wird.
ClientMaxIdle = 120
CacheDelay
Mindestzeit in Millisekunden, die ein Request brauchen muss. Hört sich zwar paradox an, betrifft aber das Problem, wenn die Antwort aus dem cache zu schnell an den Client übermittelt wird.
CacheDelay = 300
FallbackTimeout
Maximale Wartezeit des Cardservers in Sekunden auf primäre Reader, bevor der/die Fallback-Reader (falls vorhanden!) befragt werden.
FallbackTimeout = 1
BindWait
Maximale Zeit in Sekunden, die der Cardreader beim Start wartet, bis er den jeweiligen Netzwerk-Port in Zugriff bekommt. Falls der MPCS innerhalb dieser Zeit den Port nicht binden kann, terminiert er mit "Bind Request failed". Ursachen dafür sind
- Doppelbelegung von Ports
- Ein vormals abgestürzter MPCS der die Ports nicht wieder freigegeben hat
- der MPCS wurde mehrmals gleichzeitig gestartet
BindWait = 20
ResolveDelay
Zeit in Sekunden, gibt die Pause bei der Namensauflösung an.
ResolveDelay =
DyndnsInterval
bitte noch ergänzen!
LogFile
Hier kann die Logdatei eingestellt und Devices benannt werden.
LogFile = /dev/null (Es wird kein Logfile erzeugt) LogFile = /dev/tty (Bildschirmausgabe) LogFile = syslog (Die Ausgabe wird an den syslogd übergeben) LogFile = /var/log/mpcs.log (linux i386) LogFile = mpcs.log (im Verzeichnis, in dem MPCS enthalten ist)
PidFile
Hier kann ein Pidfile angegeben werden. Das ist eine ASCII-Datei, in der die Prozess-ID vom Hauptprozess des Cardservers enthalten ist. Dieser Eintrag kann dazu benutzt werden, um den Cardserver wieder "sauber" anzuhalten, wenn er im Hintergund läuft.
PidFile = /var/run/mpcs.pid (Linux i386) PidFile = /tmp/mpcs.pid (dbox2)
MaxLogSize
Mit diesem Parameter kann die maximale Größe der Logdatei festgelegt werden. Das ist bei umfangreichem Logbetrieb empfehlenswert. Die Logdaten werden dann im Verfahren First-In/First-out auf die festgelegte Größe begrenzt.
showecmdw
bitte ergänzen
showemmdw
bitte ergänzen
disablecache1
bitte ergänzen
disablecache2
bitte ergänzen
disablecache
bitte ergänzen
Filter
bitte ergänzen
[newcamd]
Für Newcamd-User selbsterklärend!
camd 3.5x
Selbsterklärend. Wegen Protokoll camd 3.5 siehe auch Abschnitt Protokolle Wichtig: Wenn hier ein Port eingetragen wird, muss dieser Port mit dem Eintrag in der camd3.servers bei den Clients übereinstimmen!
mpcs.user
V1.0 (KrazyIvan Version)
[account] User = user Pwd = 54546 Uniq = 1 Group = 1 AU = 1 EndDate = 2009/01/05 Betatunnel = 1833.0081:1702,1833.0082:1702
Variablenbeschreibung
[account]
Grundsatz: Es können mehrere [account]-sections erstellt werden. Jede vollständige section wird dann als account verwendet. So kann für jeden user ein separater Account mit unterschiedlichen Zugangsdaten und Berechtigungen angelegt werden. Z.B.: [dbox-Wohnzimmer] mit allen Rechten, jedoch [dbox-Kinderzimmer] nur mit Rechten, die den Jugendschutz berücksichtigen. Oder [Dyndns-IP], die nur ein bestimmtes PayTV- Paket erhalten soll.
User
User-Name. Muss gesetzt sein!
User = Max
Pwd
Passwort. Muss gesetzt sein!
Pwd = MaxPasswort
Uniq
Mit Uniq wird geregelt ob sich ein Client gleichzeitig nur einmal oder mehrmals anmelden darf
Uniq = 0 (disable) default Uniq = 1 (Client darf sich nur einmal anmelden per Username)
ab MPCS 1.0n
Uniq = 0 (disable) default Uniq = 1 (per IP) Uniq = 2 (per Port) Uniq = 3 (only 1 user allow for all port)
Group
Jeder User muss in einer oder mehrere Gruppen eingetragen sein. Damit lässt sich dann bestimmen, auf welche Reader, sofern mehrere vorhanden sind, dieser Client Zugriff haben soll. Gültige Werte 1-32
Group = <grp>[,<grp>][,<grp>]...
Group = 1 (eine Gruppe) Group = 1,4,5 (mehrere Gruppen)
AU
Mit den Eintragungen in diesem Abschnitt kann gesteuert werden, ob für bestimmte oder alle Reader AU zugelassen werden soll. Gültige Werte:
AU= 0 -> kein AU AU= 1 -> Auto (ab 1.0) AU= <gültiger Reader> -> AU für eingetragenen Reader
Zum AU ist im allgemeinen zu sagen:
- Sparsamer Umgang mit AU Clients ist besser für den MPCS
- Ein AU Client erhält die Kartendaten (Sicherheit)
- Benutzung der EmmCache Funktion vermeidet zu hohe Belastung des Readers
Enddate
bitte ergänzen
Betatunnel
Bis zur Version 0.9.e ist hier eine Betacrypt-Tunnelung möglich. Im Beispiel werden 1833.0081 und 1833.0082 jeweils auf 1702 getunnelt. Ab version 1.0n ist dieser Parameter nicht mehr erforderlich! bitte prüfen und eventuell überarbeiten!
mpcs.reader(V1.0)
Tritt an die Stelle von mpcs.server (bis einschließlich Version 0.9.e!)
V1.0 (KrazyIvan Version)
[reader] blockua = 1 blockga = 1 blocksa = 1 AU = 1 Enable = 1 Label = myreader Protocol = mouse Device = /dev/ttyS0 #pincode = 7291 #BaudRate = 16000 EMMCache = 1,1,10 Detect = CD Group = 1,2,3 Fallback = 0 CAID = 0666 ChID = 0666:02,03,04,05,06,07,0E
Variablenbeschreibung
[reader]
Grundsatz: Es können mehrere [reader]-sections erstellt werden. Jede vollständige section wird dann als reader verwendet. Beispiele: [NG²], [phoenix], [mastercrd] usw.
blockua
unique address-EMMs, entspricht D3 bei PW
blockua = 0 (nicht blocken) blockua = 1 (Blocke EMMs, die an die Karte direkt adressiert sind)
blockga
global address-EMMs, entspricht D0 bei PW
blockga = 0 (nicht blocken) blockga = 1 (Blocke EMMs, die an alle Karten gehen)
blocksa
shared address-EMMs, entspricht D2 bei PW
blocksa = 0 (nicht blocken) blocksa = 1 (Blocke EMMs, die an bestimmte Gruppen von Karten gehen)
AU
Zum AU ist im allgemeinen zu sagen:
- Sparsamer Umgang mit AU Clients ist besser für den MPCS
- Ein AU Client erhält die Kartendaten (Sicherheit)
- Benutzung der EmmCache Funktion vermeidet zu hohe Belastung des Readers
AU = 0 (Autoupdate aus) AU = 1 (Autoupdate ein)
Enable
Enable = 0 (Reader aus) Enable = 1 (Reader ein)
Label
Name der Readers. Pflichtfeld! Wird benötigt, um die Zuordnung von AU in mpcs.user zu ermöglichen.
Label = Mouse
Protocol
Kommunikationsprotokoll für den Reader.
Protocol = mouse (Lokaler Cardreader) Protocol = internal (Alle Cardreader mit einem "Device=/dev/sciX") Protocol = camd35 (Cascading - camd 3.5-kompatibler Remote-Server)
Device
Bei lokalem Reader (mouse-mode) das Device, an dem der Reader angeschlossen ist.
Device = /dev/ttyS0 (Reader an COM1 (bei Linux i386 und Windows)) Device = /dev/tts/1 (Reader an COM2 (Linux dbox2 mit multicam)) Device = /dev/ttyUSB0 (Reader an USB (Linux i386))
Hinweis: Der Zähler für die Device liegt immer um 1 hinter der Nummer des COM-Ports! Also ttyS0 = COM1, tts/1 = COM2. Bei Benutzung neuerer PC sind kaum noch serielle Anschlüsse vorhanden, sodass in diesen Fällen USB 2.0 benutzt werden muss. Hier am besten im Gerätemanager des PC (Windows) nachschauen, welcher COM-Port dem Reader zugewiesen wurde und in die Device den Port -1 eintragen!
pincode
Bei Readern, die mit einem Pincode arbeiten, muss dieser hier eingetragen werden.
Pincode = 12345
BaudRate
Für Reader, deren Geschwindigkeit über eine Baudrate eingestellt werden kann, kann hier ein Eintrag erfolgen.
Verwendet man am Reader eine höhere Taktfrequenz als für die Karte vorgesehen (Übertakten/ Overclocking), muß hier die Baudrate nach folgender Formel angepasst werden:
Baudrate = 9600 / originalCardMHz * newCrystalMHZ
Baudrate = 9600 (entspricht default) Baudrate = 16000 (6MHz-Karte wird mit 10MHz betrieben | 9600 / 6 * 10 = 1600)
Bei dem Gebrauch von USB-Wandlern ist darauf zu achten, dass der PL2303 nur Standardbaudraten unterstützt, und somit der Betrieb einer übertakten Karte nicht möglich ist. Es wird die Verwendung eines Wandlers mit FTDI empfohlen.
EMMCache
Definition des EMM-Caches für den Reader. Derzeit nur für lokale Reader. Betrifft die AU-Funktion. Damit kann entschieden werden, ob Update-Kommandos vom Provider immer oder nur unter bestimmten Voraussetzungen geschrieben werden. Format:
EmmCache = <usecache>,<rewritte>,<logging>
* <usecache> 0 = cache ein * <usecache> 1 = cache aus * <rewrite> n = Wie oft ein und das selbe Update-Kommando geschrieben wird. Gilt nur bei <usecache> 1 * <logging> 0 = Einträge im Logfile nur im Fehlerfall * <logging> 1 = Nur geschriebene Emm's keine verworfenen (skipped) * <logging> 2 = alle emm's werden im Log vermerkt
Empfehlung:
EmmCache = 1,3,2
Detect
Statusleitung für "Karte ist drin".
Detect = CD (Carrier Detect) Detect = DSR (Data Set Ready) Detect = CTS (Clear To Send) Detect = RING (Ring Indicator) Detect = NONE (Erkennung wird abgeschaltet, aber es wird immer ein "Karte ist drin" signalisiert!) Detect = gpio2 ... gpio7 (neu!)
- Inverse Leitung = "!" voranstellen (z.B. "Detect=!CTS")
Group
Jeder Reader muss in einer oder mehrere Gruppen eingetragen sein. Damit lässt sich bestimmen, welcher Client auf welchen Reader Zugriff hat. Gültige Werte 1-32
Group = <grp>[,<grp>][,<grp>]...
Group = 1 (eine Gruppe) Group = 1,4,5 (mehrere Gruppen)
Fallback
- 0 = Reader ist kein Fallback-Reader
- 1 = Reader ist Fallback-Reader
CAID
Liste gültiger caid's und mapping für diesen Reader.
- Format: CAID=<caid>[&<mask>][:<new caid>],...
- wird <mask> nicht angegeben, ist <mask> automatisch FFFF.
- wird <new caid> nicht angegeben, wird caid nicht vereändert.
- Beispiel: CAID=1702,1722 (dieser Reader wird nur für caid 1702 und 1722 benutzt)
- Beispiel: CAID=1702&FFDF (hat die gleiche Folge wie die vorhergehende Zeile)
- Beispiel: CAID=1702&FFDF:1702 (dieser Reader wird ebenfalls nur für caid 1702 und 1722 benutzt und die caid wird auf 1702 gemapped.)
- Beispiel: 0100,0600&FF00 (dieser Reader wird für caid 0100 und 0600-06FF benutzt.)
Dieser Parameter ist optional. Wird er nicht gesetzt, sind alle caid's gültig und werden nicht gemapped.
ChID
Es können zu einer caid ganz bestimmte ChID's zugelassen werden.
mpcs.server
V. 0.9.e (Team Edition)
[reader] Label = myreader Protocol = mouse Device = /dev/ttyS0 Detect = CD Account = user1,pwd1 EMMCache = 1,1,10 BlockNano = Group = 1,2,3 CAID = 0666
Variablenbeschreibung
Siehe Erläuterungen zu mpcs.reader!
Account
Benutzername und Passwort beim Zugriff auf Remote-Server.
- Beispiel: user1,pwd1
BlockNano
Definition für EMM-Blocking des Readers. Hiermit können bestimmte Update-Kommandos blockiert werden.
- Bei Verwendung ist es unumgänglich, sich mit der Materie gründlich vertraut zu machen!
- Empfehlung für Non-Cracks: Diesen Parameter nicht verwenden!
mpcs.services
[premiere] caid=1702,1722 srvid=000A,000B,002B,0009,0022,0029,0014,0204,0017,0010,002A,0203,0024,001C,0013,000E,000D,000F,000C,0016,0206,0018,00A8,0015,0012,0011,001B,0309,00D0,00D1,00D2,00D3,00D4,00DC,00DD,00DE,00F0,00F1,00F2,00F3,00F4
[premiere-familie] caid=1702,1722 srvid=000C,000D,000E,000F,0013,0015,0016,0018,001B,001C,001D,0020,0024,002A,0032,00A8,0203,0206
[pwhd] caid=1833 srvid=0081,0082
[arena] caid=1702,1722 srvid=0032,00F4,00DC,00E3,00E1,00F2,00F3,00D4
[kdhome] caid=1702,1722 srvid=C3B5,C3B6,C3B7,C3B8,C3B9,C3BA,C3BB,C3BC,C3BD,C3BF,C47D,C47E,C47F,C480,C481,C482,C483,C60E,C60F,C610,C612,C613,C614,C615,C616,D035,D036,D099,D09C,D09E,D0A1,D0A3,D0A4
[KD] provid=001101 caid=1801
[orf] caid=1702 srvid=32C9,32CA,32D4,32CB,32CC,32CD,32CE,32CF,32D0,32D1,32D2,32D3,32C9,4E27,3332
[tividi] caid=1702,1722 srvid=32C9,332F,3338,3332,3333,3334,3335,3337,5E25,5E27,5E29,5E2A,5E2C,5E2D,5E2E,5E38,5A3D,5A3F,5A49,2F45,0206,2F49,2F4A,2F4B,2F4C,2F4D,2F46,2F47,2F48,2F4E,2F4F,3EEB,2B5D,2B5E,2B5F,2B60,2B61,2B63,2B64,2B65,2B66,4AA8,4AA9,4AAA,3716,3719,371B,371F,3EE5,3EE6,3EE7,3EE8,3EE9,3EEA,4AA2,4AA3,4AA4,4AA5,4AA6,4AA7,5E30,3339,332D,371E,371D,D099
mpcs.srvid
0001:MTV Portugal 0002:MTV Polska 0003:Music Box Russia 0004:VH1 Polska 0005:VIVA Polska 0006:MTV 1 0007:VH1 0008:PREMIERE START 0009:PREMIERE 4 000a:PREMIERE 1 000b:PREMIERE 2 ... .. .
mpcs.ac
Cycles für Anticascading
Diese Datei wird nur benötigt wenn Anticascading eingeschaltet ist. Diese Liste dient als Referenz, in welchen Intervallen ECM Requests eingehen sollten. Der letzte Eintrag (*=7) setzt den Wert für "alle Anderen darüber nicht aufgeführten. Der Wert ist in Sekunden anzugeben.
0100:00003D=20 0100:000065=7 0100:00006A=13 0500:020910=30 0500:020A00=15 0500:020A10=15 0500:020A20=15 0500:020A30=15 0500:020A40=15 0500:021500=15 0604:000000=11 0919:000000=20 0961:000000=8 1702:FFFFFF=7 1722:FFFFFF=7 1801:000000=20 4A70:000000=14 *=7
mpcs.cert
# # this file contains needed Issuer Public Keys -or- Session Keys # (currently supported with cryptoworks only) # #CAID:reserved:KEY #sample with IPK for CAID 0D22 0D22:00000000:8000XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX #sample with Session Key for CAID 0D22 0D22:00000000:B5C7XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
mpcs.guess
# # mpcs caid guessing table (by len) # caid 0500 and 1801 not needed # format: <len>:<caid> # where <len> is length of ecm in hex # 29:1762 34:0604 36:0D05 3C:4A70 6E:0919 47:0D05 48:0D05 4C:0B00 50:0D05 51:0D05 54:1702 5A:0B00 67:0B00 71:0D0C 72:4AD0 73:090F 7C:090F 81:090F 85:0D02 91:4AD1 99:0D00 9C:0D02
mpcs.ird
;------------------------------------------- ; Irdeto guessing table (by signature) ; format: <byte3>:<byte4-7>:<caid>:<sid> ; all fields in hex
Versionen (Linux, WinPC, .....)
0.9e
0.9e Team Edition
1.0 (KrazyIvan Version)
Router
Fritzbox 7110
Fritzbox 7120
Fritzbox 7170
Speedport W920V
WRT
STB
Dbox2
Dreambox
Monitoring/ Remote Konfiguration
MicroMon
Der microMon kann die Loggingschnittstelle des MPCS mitschneiden und Statistiken über Clientzugriffe erheben. Zusätzlich ist die Konfiguration der Clients möglich. MicroMon bietet zudem die Darstellung der Logs von camd3, newCS, MBox und GBox an. Auch Syslog aus anderen Quellen (z.B. dbox2) kann dargestellt werden.
MPCS Control Center
Links zu den Threads im streamboard und zur database
Forum MPCS
http://streamboard.gmc.to/wbb2/board.php?boardid=214
Thread microMon
http://streamboard.gmc.to/wbb2/thread.php?postid=292726#post292726