Kategorie:Cardserver

Aus Streamboard Wiki
Zur Navigation springen Zur Suche springen

OSCAM

Was kann das Programm?

Das Wichtigste zuvor: OSCam ist Open Source

OSCam steht für Open Source Conditional Access Modul und ist eine non-profit Gemeinschaftsarbeit zahlreicher Entwickler aus dem In- und Ausland. Die Entwicklungsarbeit ist öffentlich. Der Fortschritt kann über die Oscam-Timeline http://streamboard.gmc.to:8001/timeline anhand der changesets und tickets verfolgt werden. Die Entwicklungsschritte werden in sogenannten svn's in aufsteigender Nummerierung festgehalten und stehen für ein entsprechende Compilierung zur Verfügung (siehe unter Plattformen).

"work in progress" bedingt aber auch, dass in dieser Dokumentation natürlich immer nur Momentaufnahmen der Entwicklung berücksichtigt werden können, bei deren Bearbeitung die Mithilfe der user gefragt ist!

Begonnen hat die Entwicklung von OSCam als reiner Card-Server. Später ist auch die Client-Seite hinzu gekommen. Damit soll schließlich gewährleistet werden, das möglichst alles "aus einer Hand" kommt.


Cardserver

Wie der Vorgänger MPCS ist OSCam in der Hauptsache ein protokoll- und plattformübergreifender Cardserver.

Client

Welche Plattformen werden unterstützt?

Linux

ARM Coolstream
ARM Dockstar Openwrt
ARM NSLU Openwrt
ARM Slug OS
intel Mac OS X
i386/i686
Mips Fritzbox / TP-Link WRT1043NS
Mipsel AZbox
Mipsel Fritzbox
Mipsel DD-WRT
Mipsel TUXBOX
PPC TUXBOX
SH4
SH4 QboxHD
SH4 STAPI
sheevaplug
X64

Ein aktualisiertes Verzeichnis wird hier bereit gehalten:

http://streamboard.gmc.to:8001/wiki/DeviceList

Windows

Cygwin

Die aktuellen Binaries werden hier geposted:

http://streamboard.gmc.to/wbb2/board.php?boardid=236

Mac OS X

Welche Protokolle werden unterstützt?

Bei den Protokollen gibt es UDP und TCP basierende.

  • UDP bedeutet das es keine fixe Verbindung zwischen Client und Server gibt. Der Client/Server sendet seine Anfrage/Antwort in der Hoffnung das sie ankommt. Es wird keine Überprüfung gemacht ob alle Datenpakete ankommen.
  • TCP bedeutet das eine fixe Verbindung über so genannte Sockets zwischen Client und Server aufgebaut wird. Bei dieser Verbindung wird sichergestellt das gesendete Daten beim Empfänger auch ankommen. Es hat dadurch etwas mehr overhead als UDP und ist etwas langsamer. Bei den für CS übertragenen Datenmengen ist dies jedoch irrelevant. Der große Vorteil von TCP ist das selbst bei qualitativ schechten Internetleitungen eine stabile Verbindung möglich ist.
camd 3.3x (TCP)
camd 3.5x (UDP & TCP)
Newcamd (TCP) mit AU-Support, Cascadib/remote server ECM support
Radegast (?)
Cccam (TCP) 
GBox (?)
serial (HSIC, SSSP, BOMBA, DSR 9500)
DVB API mit AU, Multituner, und PIP-Support

Welche Card Reader werden unterstützt?

Seriell

  • Reader mit Mouse Protokoll 3,5 bzw. 6 Mhz Taktfrequenz
  • interne Reader (z.B. Dreambox)
  • Reader können auch über einen Serial-USB Adapter angeschlossen werden.

USB

  • Reader mit FTDI Chipsatz
  • Reader mit Prolific Chipsatz, kein Übertakten möglich
  • Smargo Smartreader+

Welche Cards werden unterstützt?

Ein aktualisiertes Verzeichnis wird hier bereit gehalten:

http://streamboard.gmc.to:8001/wiki/CardsList

Konfigurationsdateien und deren Variablen

oscam.conf

Dies ist die Hauptfigurationsdatei für OSCam. Sie enhält globale Parameter z.B. für das Debuggen, Loggen, den Monitor, die Protokolle und das Anti-Cascading. Die einzelnen Sektionen sind für Sondereffekte bestimmt. Nur die Sektion [global] ist Pflichtbestandteil, alle übrigen Sektionen sind optional (also nur bei Bedarf) zu verwenden.

Globale Parameter

Folgende Parameter gibt es im global Abschnitt:

[global]
serverip             =
cachedelay           =
logfile              =
disablelog           =
disableuserfile      =
usrfile              =
usrfileflag          = 
cwlogdir             =
clienttimeout        =
fallbacktimeout      =
clientmaxidle        =
bindwait             =
netprio              =
resolvegethostbyname =
resolvedelay         =
clientdyndns         =
failbantime          =
sleep                =
unlockparental       =
nice                 =
serialreadertimeout  =
waitforcards         =
preferlocalcards     =
readerestartseconds  =
saveinithistory      =
double_check         =
lb_mode              =
lb_save              =
lb_nbest_readers     =
lb_nfb_readers       =
lb_min_ecmcout       =
lb_max_ecmcount      =
lb_reopen_seconds    =

Achtung: Ist ein Paremeter leer oder wird er nicht im Konfigurationsfile angeführt dann gelten die Default Werte!

serverip

Bei einem Server mit mehreren Netzwerkkarten und daher mehreren unterschiedlichen IP Adressen kann es gewünscht sein das OSCam nur antwortet wenn die Anfrage auf einer betimmten IP Adresse kommt. Mit diesem Parameter kann man festlegen auf welche IP Adresse der OSCam Prozess "hört".

Beispiel:

serverip = 192.168.178.1

Default:

serverip =

OSCam hört auf ALLE IP Adressen.

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.

Beispiel:

cachedelay = 300

Default:

cachedelay = 0

logfile

Beispiel:

logfile =

Default:

logfile = /var/log/oscam.log

disablelog

Beispiel:

disablelog =

Default:

disablelog = 0

disableuserfile

Beispiel:

disableuserfile =

Default:

disableuserfile = 0

usrfile

Beispiel:

usrfile =

Default:

usrfile =

usrfileflag

Beispiel:

usrfileflag =

Default:

usrfileflag = 0

cwlogdir

Beispiel:

cwlogdir =

Default:

cwlogdir =

clienttimeout

Beispiel:

clienttimeout =

Default:

clienttimeout = 5

fallbacktimeout

Beispiel:

fallbacktimeout =

Default:

fallbacktimeout = 2500

clientmaxidle

Beispiel:

clientmaxidle =

Default:

clientmaxidle = 120

bindwait

Beispiel:

bindwait =

Default:

bindwait = 120

netprio

Beispiel:

netprio =

Default:

netprio =

resolvegethostbyname

Beispiel:

resolvegethostbyname =

Default:

resolvegethostbyname = 0

resolvedelay

Beispiel:

resolvedelay =

Default:

resolvedelay = 30

clientdyndns

Beispiel:

clientdyndns =

Default:

clientdyndns = 0

failbantime

Beispiel:

failbantime =

Default:

failbantime = 0

sleep

Beispiel:

sleep =

Default:

sleep =

unlockparental

Beispiel:

unlockparental =

Default:

unlockparental = 0

nice

Beispiel:

nice =

Default:

nice = 99

serialreadertimeout

Beispiel:

serialreadertimeout =

Default:

serialreadertimeout = 1500

waitforcards

Beispiel:

waitforcards =

Default:

waitforcards = 1

preferlocalcards

Beispiel:

preferlocalcards =

Default:

preferlocalcards = 0

readerestartseconds

Beispiel:

readerestartseconds =

Default:

readerestartseconds = 5

saveinithistory

Beispiel:

saveinithistory =

Default:

saveinithistory = 0

double_check

Beispiel:

double_check =

Default:

double_check = 0

lb_mode

Beispiel:

lb_mode =

Default:

lb_mode = 0

lb_save

Beispiel:

lb_save =

Default:

lb_save = 0

lb_nbest_readers

Beispiel:

lb_nbest_readers =

Default:

lb_nbest_readers = 1

lb_nfb_readers

Beispiel:

lb_nfb_readers =

Default:

lb_nfb_readers = 1

lb_min_ecmcout

Beispiel:

lb_min_ecmcout =

Default:

lb_min_ecmcout = 5

lb_max_ecmcount

Beispiel:

lb_max_ecmcount =

Default:

lb_max_ecmcount = 500

lb_reopen_seconds

Beispiel:

lb_reopen_seconds =

Default:

lb_reopen_seconds = 900

Monitor

Hier sind nur dann Eintragungen erforderlich, wenn ein Monitor benutzt wird!

[monitor]
port                 =
serverip             =
nocrypt              =
aulow                =
monlevel             =
hideclient           =
appendchaninfo       =

WebIf

Eintragungen sind nur dann erforderlich, wenn das Web-Interface (by Alno) als Modul ausgewählt wurde.

[webif]               =
httpport              =
httpcert              =
httpuser              =
httppwd               =
httpcss               =
httptpl               =
httprefresh           =
httpscript            =
httpallowed           =
httpdyndns            =
httpsavefullcfg       = 
httpreadonly          =

Camd 33 (TCP)

Abschnitt nur dann erforderlich, wenn camd33 als Client Protokoll notwendig ist.

[camd33]
port                  =
serverip              =
nocrypt               =
passive               =
key                   =

port

Parameter wird benötigt

Hier wird der Port festgelegt von dem aus Camd 33 Anfragen beantwortet werden. Dieser Port muss ggf. auch am Router geöffnet werden.

Beispiel:

port = 15000

serverip

Parameter ist optional

Bei einem Server mit mehreren Netzwerkkarten und daher mehreren unterschiedlichen IP Adressen kann es gewünscht sein das OSCam nur antwortet wenn die Anfrage auf einer betimmten IP Adresse kommt. Mit diesem Parameter kann man festlegen auf welche IP Adresse der OSCam Prozess "hört".

Beispiel:

serverip = 192.168.178.1

Default:

serverip = 

nocrypt

Parameter ist optional

Eine bestimmte IP Adresse oder ein Adressbereich der unverschlüssel übertragen wird.

Beispiel:

nocrypt = 127.0.0.1,192.168.0.0-192.168.255.255

Default:

nocrypt = 

passive

Parameter ist optional

Definition für aktiven oder passiven Client. Generell geht das Camd3.3x-Protokoll von einem aktiven Client aus. Es kann aber unter bestimmten Umständen bei manchen Clients (meistens plugin) zur Schwierigkeiten kommen. In diesem Fall

Beispiel:

passive = 1

Default:

passive = 0

key

Schlüssel der für die Verschlüsselung verwendet wird. (128bit Verschlüsselung)

Beispiel:

key = 01020304050607080910111213141516

Default:

key =

Camd 35 bzw. cs357x (UDP)

Abschnitt nur dann erforderlich, wenn camd35 bzw. cs357x als Client Protokoll notwendig ist. Dieses Protokoll verschlüsselt grundsätzlich und bildet den Schlüssel aus dem Benutzernamen.

[camd35]
port                   =
serverip               =
suppresscmd08          =
[cs357x]
port                   =
serverip               =
suppresscmd08          =


port

Parameter wird benötigt

Hier wird der Port festgelegt von dem aus Camd Anfragen beantwortet werden. Dieser Port muss ggf. auch am Router geöffnet werden.

Beispiel:

port = 15000

serverip

Parameter ist optional

Bei einem Server mit mehreren Netzwerkkarten und daher mehreren unterschiedlichen IP Adressen kann es gewünscht sein das OSCam nur antwortet wenn die Anfrage auf einer betimmten IP Adresse kommt. Mit diesem Parameter kann man festlegen auf welche IP Adresse der OSCam Prozess "hört".

Beispiel:

serverip = 192.168.178.1

Default:

serverip =

suppresscmd08

Parameter ist optional

Aktiviert die Unterdrückung für den CMD08.

Beispiel:

suppresscmd08 = 1 (aktiviert)
suppresscmd08 = 0 (deaktivert)

Default:

suppresscmd08 = 0

cs378x (TCP)

Abschnitt nur dann erforderlich, wenn cs378x als Client Protokoll notwendig ist.

[cs378x]
port                   =
serverip               =
suppresscmd08          =

port

Parameter wird benötigt

Hier wird der Port festgelegt von dem aus Camd Anfragen beantwortet werden. Dieser Port muss ggf. auch am Router geöffnet werden.

Beispiel:

port = 15000

serverip

Parameter ist optional

Bei einem Server mit mehreren Netzwerkkarten und daher mehreren unterschiedlichen IP Adressen kann es gewünscht sein das OSCam nur antwortet wenn die Anfrage auf einer betimmten IP Adresse kommt. Mit diesem Parameter kann man festlegen auf welche IP Adresse der OSCam Prozess "hört".

Beispiel:

serverip = 192.168.178.1

Default:

serverip =

suppresscmd08

Parameter ist optional

Aktiviert die Unterdrückung für den CMD08.

Beispiel:

suppresscmd08 = 1 (aktiviert)
suppresscmd08 = 0 (deaktivert)

Default:

suppresscmd08 = 0

Newcamd (TCP)

Abschnitt nur dann erforgerlich, wenn newcamd als Client Protokoll notwendig ist.

[newcamd]
mgclient              =
key                   =
port                  =
serverip              =
allowed               =
keepalive             =

mgclient

Parameter ist optional

Aktiviert das Extendet Newcamd Protokol um mehrer CIAD's über einen Port zu schicken

Beispiel:

mgclient = 1 (aktiviert)
mgclient = 0 (deaktiviert)

Default:

mgclient = 0

key

Parameter wird benötigt

Schlüssel für die Newcamd Verbindung zum Client.

Beispiel:

key = 0102030405060708091011121314

Default:

key =

port

Parameter wird benötigt

Hier wird der Port festgelegt von dem aus Newcamd Anfragen beantwortet werden. Dieser Port muss ggf. auch am Router geöffnet werden.

Beispiel:

port = 15000@1234:000000 (CAID 1234 ist über Port 15000 erreichbar)
port = 15000@1234:000000;15001@5678:000000 (CAID 1234 ist über Port 15000 erreichbar CAID 5678 über Port 15001)

Default:

port = port@caid:ident

serverip

Parameter ist optional

Hat der Server mehrere IP Adressen werden nur Anfragen die an die konfigurierte IP gehen beantwortet.

Beispiel:

serverip = 192.168.178.1

Default:

serverip =

allowed

Parameter ist optional

Eine bestimmte IP Adresse oder ein bestimmter IP Bereich der sich auf den Newcamd Server verbinden darf.

Beispiel:

allowed = 127.0.0.1,192.168.0.0-192.168.255.255

Default:

allowed =

keepalive

Parameter ist optional

Der Server versucht die Newcamd Verbindung am leben zu halten.

Beispiel:

keepalive = 1 (aktiviert)
keepalive = 0 (deaktiviert)

Default:

keepalive = 1

Radegast (?)

Abschnitt nur dann erforderlich, wenn radegast als Client Protokoll notwendig ist.

[radegast]
port                  =
serverip              =
user                  =

Serial

Abschnitt nur dann erforderlich, wenn eine serielle Reader-Schnittstelle notwendig ist.

[serial]
device                =

Cccam (TCP)

Abschnitt nur dann erforderlich, wenn Cccam als Client Protokoll notwendig ist.

[cccam] 
port                  =
version               =
build                 =
reshare               =
ignorereshare         =
minimizecards         =
updateinterval        =
keepconnected         =

GBox (?)

Abschnitt nur dann erforderlich, wenn GBox als Client Protokoll notwendig ist.

[gbox]
password              =
maxdist               =
ignorelist            =
onlineinfos           =
cardinfos             =
locals                =

Achtung: Das GBox Modul ist Closed Source und daher NICHT im OSCam SVN enthalten! Das OSCam Team hat das GBox Modul NICHT und kann daher auch keine entsprechenden Binaries zur verfügung stellen.

DVBapi

Abschnitt nur dann erforderlich, wenn dvbapi als Client Protokoll notwenig ist, also es sich um eine Konfiguration als Client handelt!

[dvbapi]
enabled               =
user                  =
ignose                =
priority              =
au                    =
pmt_mode              =
boxtype               =

Anticasc

Abschnitt nur dann erforderlich, wenn Anticascading als Schutz vor unbefugtem Weiterreichen von Cardsharing angewendet werden soll.

[anticasc]
enabled               =
numusers              =
samples               =
penalty               =
aclogfile             =
fakedelay             =
denysamples           =

oscam.server

Diese Konfigurationsdatei enthält Reader-Parameter für OSCam. Die Abschnitte dürfen sich wiederholen (mehr als ein Reader möglich). Es muss aber in jedem Fall mindestens ein reader konfiguriert sein!

Reader

[reader]
device                 =
device_out_endpoint    =
enable                 =
key                    =
premium                =
account                =
password               =
services               =
inactivitytimeout      =
reconnecttimeout       =
disableserverfilter    =
label                  =
fallback               =
logport                =
caid                   =
audisabled             =
auprovid               =
detect                 =
cardmhz                =
mhz                    =
deprecated             =
mode                   =
protocol               =
ident                  =
provid                 =
class                  =
maxqlen                =
group                  =
emmcache               =
ratelimitseconds       =
blocknano              =
blockemm-u             =
blockemm-s             =
blockemm-unknown       =
savenano               =
readnano               =
lb_weight              =
cccversion             =
cccmaxhops             =
cccwantemu             =
ccckeepalive           =
pincode                =
chid                   =
force_irdeto           =
nagra_read             =
n3_rsakey|rsakey       =
n3_boxkey|boxkey       =
tiger_rsakey           =
aeskey                 =
aeskeys                =
showcls                =
boxid                  =
ndsversion             =

Oscam.user

Diese Datei enthält Userdefinitionen. Für jeden User muss ein Abschnitt erstellt werden.

Account

[account]
user                   =
pwd                    =
hostname               =
betatunnel             =
uniq                   =
sleep                  =
sleepsend              =
caid                   =
au                     =
group                  =
services               =
ident                  =
class                  =
monlevel               =
expdate                =
disabled               =
allowedtimeframe       =
numusers               =
penalty                =
failban                =
suppresscmd08          =
keepalive              =
cccmaxhops             =
cccreshare             =

user

Parameter wird benötigt

Hier wird der Benutzername eingefügt. (Clientname)

Beispiel:

user = user1

Default:

user =

pwd

Parameter wird benötigt

Hier wird der das Passwort festgelegt.

Beispiel:

pwd = pwuser1

Default:

pwd =

hostname

Parameter ist optional


Beispiel:

hostname = pwuser1

Default:

hostname =

betatunnel

Parameter ist optional


Beispiel:

betatunnel = 
betatunnel = <CAID>.<ServiceID>:<target CAID>

Default:

betatunnel =

uniq

Parameter ist optional


Beispiel:

uniq = 1

Default:

uniq = 0

oscam.dvbapi

Konfigurationsdatei für DVBapi

P: CAID:[provider ID]:[service ID]:[ECM PID] [continue]
I: CAID:[provider ID]:[service ID]:[ECM PID]
D: CAID:[provider ID]:[service ID]:[ECM PID] delay
M: CAID:[provider ID]:[service ID]:[ECM PID] CAID:[provider ID]
P = Settings für Priority, 
    continue = 1       mit Vorrang behandeln
               default ist ohne Vorrang
I = Settings für Ignore
D = Settings für Delay in Millisekunden für das Schreiben der CW's (wenn der Server zu schnell liefert ;-)
M = Settings für Mapping
Beispiele:
P: 0100:123456       CAID 0100 mit Provider 123456 hat Vorrang
P: :::1234           ECM mit Provider ID 1234 hat auf jedem Service Vorrang
P: 0200              CAID 0200 hat Vorrang
P: 0300:9ABC         CAID 0300 hat nur auf Service 9ABC Vorrang
M: 0400 0500:123456  Mapped CAID 0400 und 0500 ständig zu provider ID 123456
D: 0600 200          Wartet 200 ms bevor CW für CAID 0600 geschrieben wird
I: :654321           Ignoriert Provider ID 654321 für jeden service
I: 0                 Ignoriert jede CAID, die nicht zuvor bearbeitet wurde

oscam.ac

Anti-Cascading Tabelle

Durch Verwenung dieser Tabelle wird vermieden, dass ein User die empfangenen CW's [Controlwords] unerlaubt an weitere User reicht (cascadiert).

<CAID>:<provider ID>=<seconds>

oder

<CAID>:<provider ID>*=<seconds>

Es wird der zeitliche Abstand beim Wechsel der CW's in Bezug auf CAID und provider ID in Sekunden festgelegt. Zusätzlich kann bestimmt werden, für wieviel Zyklen diese Vorgabe gilt

Beispiel:
0100:000000=10
*=7

Für CAID 0100 mit dem Provider 000000 wird der Abstand auf 10 Sekunden festgelegt. Der Zyklus soll 7 mal durchlaufen werden.

oscam.cert

Issuer Publik Keys (IPK)

CAID:reserverd:IPK
Beispiel:
0100:00000000:010203040506070809A0B0C0D0E0F

Ermöglicht ein mapping zwischen CAID und IPK/sessions keys in hex

Hinweis

Derzeit nur für Cryptoworks!

oscam.guess

Tabelle zur Feststellung der CAID

Nur für BOMBA Protocol

<length of ECM>:<CAID>

Leitet die CAID aus len in hex ab. Wird nur für Protokolle benötigt, die CAID nicht weitergeben (z.B. BOMBA).

Beispiel:
12:3456

oscam.ird

Für Irdeto

Tabelle zur Feststellung der CAID über die Signature.

<byte3>:<byte4-7>:<CAID>:<SID>
Beispiel:
12:000000a:12ab:cd01

oscam.services

Definition von services für OSCam

[service name]  =  
caid            =
provid          =
srvid           =

[service name]

Dieses Feld muss einen unverwechselbaren Namen haben und leitet jeweils die Angaben für diesen Service ein

caid

Hier werden eine oder mehrere CAID's für diesen Service in hex aufgelistet.

provid

Hier werden eine oder mehrere Provider ID's in hex aufgelistet.

srvid

Hier werden die Service ID's in hex aufgelistet.

Beispiel:
[myservice]
CAID=0100,0200,000A
provid=000001,ABCDEF
srvid=0001,0002,000A,000B

Eine umfangreiche Liste wird hier laufend gepflegt:

[[1]]

oscam.srvid

Diese Datei wird nur benötigt, wenn Monitor und Webinterface betrieben werden!

Es findet ein Mapping zwischen CAID, Service ID, Provider, Name, Art und Beschreibung des Servives statt. Das Logging und die Anzeigen im Webinterface erhalten durch die Klartextbezeichnungen eine bessere Aussagekraft. Abhängigkeiten zwischen Server, Reader und User sind schneller und besser erkennbar.

CAID[,CAID]...service ID|[provider]|[name]|[type]|[description]
Beispiele:
0001,0002,0003:000a|my provider 1|tv name|tv|my tv package
0004,0005,0006:000a|my provider 2|radio name 2|radio|my radio package
0006:000b|my provider 3|tv name 3|

Eine umfangreiche oscam.srvid wird hier bereitgestellt und gepflegt:

[[2]]

oscam.tiers

Es findet ein Mapping zwischen CAID und Tier statt und es wird eine beschreibung hinzugefügt.

CAID[,CAID]...:TIER ID|description
Beispiele:
0001,0002,0003:000a|may TIER 1
0004:000b|my TIER 2
0005:000b|ny TIER 3

Monitoring

Webinterface

MicroMon

Beispiel-Konfigurationen

Fehlersituationen

Seiten in der Kategorie „Cardserver“

Folgende 12 Seiten sind in dieser Kategorie, von 12 insgesamt.