HowTo - Anleitung Camd3

Aus Streamboard Wiki
Zur Navigation springen Zur Suche springen

Inhaltsverzeichnis

Einleitung/Vorwort

Was ist die camd3 ?

Die camd3 ist ein Smartcard-Emulator für verschlüsselte, digitale TV- und Radiosender. Sie unterstützt aber auch originale Smartcards. Ebenso kann man mit ihr Cardsharing via Heimnetzwerk und via Internet betreiben, und sie unterstützt das Multicam...

Was heisst denn camd3 überhaupt?

CAM steht für "Conditional Access Module", was übersetzt etwa heisst "Modul für bedingten Zugang"... Das Teil ist im Grunde ein Datenfilter, der sich nur dann angesprochen fühlt, wenn tatsächlich die Sprache an ihm vorbeirauscht, die er auch versteht. Das macht er nur für die Smartcard (aufopferungsvoll), weil die sonst so überfordert wäre... Was nun ein MultiCAM sein soll erklärt sich von selbst dann ;-) Kann halt mehr "Sprachen"... Und kann somit auch mit anderen Smartcards umgehen. Super, weil sonst müsste man für jede Originalkarte die mit einer anderen Verschlüsselungstechnik arbeitet, eine Extra-Settopbox kaufen, bzw. ein Extra-CAM (falls das bei dem jeweiligen Receiver überhaupt geht), bzw. ein CI-Modul (Conditional Interface Module; da kann man die Smartcard direkt ins Modul schieben; is aber im Grunde intern dieselbe Technik)

Und dann gibts ja noch die camd... der Daemon zum CAM (deswegen der Name), also ein Stück Software, bzw. eine Software-Schnittstelle zwischen CAM (Hardware) und dem Tuxbox-Betriebssystem (Software). Könnte man vielleicht als "Treiber" fürs CAM bezeichnen. Wenn man in die Dbox2 reinguckt, dann sieht man allerdings nicht viel konventionelles CAM. Nur so ein paar festverlötete Hardwarebrocken. Die "cam-alpha.bin" spielt auch noch als "Treiber" mit (manche sagen es wäre das CAM-an-sich)... Jedenfalls bestimmt die cam-alpha.bin schonmal von wo das Signal kommt (Kabel oder SAT; die entsprechende Version von ihr muss ins jeweilige Image, sonst geht nix). Danach reiht sich der CAM-Daemon ein. Man könnte die camd so manipulieren, dass das interne "CAM" auch andere "Sprachen" durchlässt. Z.B. Seca oder sowas, statt immer nur Betacrypt. Mithilfe eines MultiCAMs geht das hardwareunterstützt mit Originalkarten. Aber was ist, wenn man keine Originalkarte hat ? Geht das auch softwareunterstützt ? Tatsächlich: Das geht ! Nennt sich dann camd-Emulator oder auch Emulator bzw. Emu ! Ohne Keys geht aber nix; also eine Schnittstelle in den Emulator, der dann die zu entschlüsselnden Keys nicht mit der Smartcard aushandelt, sondern mit ein paar Dateien, die sich im Image befinden; also ein Emu-Image ! Jetzt isses aber so, dass diese Emu-camd auch nur eine Software ist, die wieder Libraries und weitere externe Dateien benötigt, die ausserdem nur in bestimmten Pfaden liegen sollen/können/dürfen. Gibt viele Hacker-camds... z.B. camd3, newcamd, gbox, evocamd, mgcamd, etc. Da es privat-geschriebene Tools sind, und es keine Emu-Union gibt *rofl* ist es halt so, dass man jeden Emu irgendwie anders ins Image frickeln muss...

Der CAM-Daemon (camd), der von der offiziellen Tuxbox-Developer-Crew geschrieben wurde, nennt sich camd2 und in den meisten Images ist schon eine camd2 drinnen; jedoch bietet jener (jene ?) keinen Premiere-Support, was soviel bedeutet, dass man zwar eine originale Premiere-Karte in die DBox2 stecken kann, jedoch Premiere dunkel bleibt ! Es sei denn man hat noch die Betanova am Laufen ;-) Der Grund: Premiere hat dies bei der Tuxbox-Developer-Crew erwirken können, da sie sonst keine Lizenzen für Hardcore-Erotik in Deutschland bekommen hätten. Denn mit der Betanova-Alternativ-Software Tuxbox kann man die Jugendschutz-Sperre umgehen. Deswegen hat die Tux-Crew kurzerhand den [u]gesamten Premiere-Empfang[/u] in ihrer camd2 abgeschaltet !

Wer nun nur Premiere mit einer originalen Premiere-Karte auf einer DBox2 mit Tuxbox-Firmware gucken möchte, muss eine gepachte camd2 einspielen. Oder man spielt sich die camd3 ein, welche das auch kann (neben noch weiteren Features ;-) Zwar zählt die camd3 auch zur Kathegorie "Emu", aber wer auch ein Geplagter ist, der die Betanova-Firmware Schei**e findet, und dennoch Premiere unter Tuxbox-Oberflächen schauen möchte, findet in der camd3 eine Alternative zur gepatchten camd2 ;)

Info über die Image-Arten, und welche Werkzeuge benötigt werden

Welche Image-Arten gibt es ?

Es gibt die unterschiedlichsten Images ! Sie unterscheiden sich idR. erstmal durch 1xI oder 2xI (die Bezeichnung bedeutet, dass eine DBox2 entweder *einen* FlashROM-Baustein hat, oder *zwei* ! Das "I" steht für Intel, welches in den meisten DBoxen verbaut wurde. Es gibt auch AMD-FlashROMs. In dem Fall müsste es eigentlich 2xAMD heissen, aber der Kern-Unterschied liegt nicht am Hersteller, sondern an der Chip-Anzahl...) Und in diesen FlashROMs kann die Firmware "Tuxbox" (sei es neutrino oder enigma oder both-in-one) in mittlerweile drei Filesystemen stecken. Das sind JFFS2, CramFS und Sqaush. Ersteres ist re-writable, die anderen beiden sind read-only, aber enthalten eine bessere Realtime-Komprimierung als JFFS2 ! Squash die Beste ! Wenn mans genau nimmt, sollte man eigentlich nur noch entweder über Squash, oder JFFS2 nachdenken. Squash weils am besten komprimiert, JFFS2, weils auch re-writable ist ! Wer zwar JFFS2 haben möchte (wegen Beschreibbarkeit), aber mehr Platz braucht, kann sb-shrink zurhilfe nehmen. Mag zwar verwirrend sein, aber in eigentlich jedem CramFS/Squash-Image liegt auch mind. eine JFFS2-Partition. Warum ? Weil dort so Dinge wie Channel-Search, zuletzt geschauter Kanal, oder Auto-Update-Keys irgendwo gespeichert werden müssen, bevor die Box ausgeschaltet wird. Ein JFFS2-Only ist was anderes... Dort ist wirklich *alles* wiederbeschreibbar ! Jedenfalls wenn die camd2 in /bin liegt (was nur innerhalb eines JFFS2-Only-Images beschreibbar ist), dann führt kein Weg am Re-Imaging vorbei. Sofern es sich um ein JFFS2-Only-Image handelt, kann man das weglassen. Aber sobald man z.B. in einem Squash-Image die camd2 ersetzen will, und jene nicht im beschreibbaren Bereich (z.B. /bin) liegt, dann muss halt gebastelt werden, leider ! (wie das geht, wird hier beschrieben)


Wichtig wäre es natürlich als Erstes einmal nachzuschauen ob überhaupt noch genügend Platz im Image zur Verfügung steht ! Verbindet Euch mal mit Telnet oder Putty auf eure Box (wie das funktioniert steht gleich darunter) und gebt mal "df" ein. Werte bei knapp 90% sind idR. Ende der Fahnenstange ! Dann müsst Ihr Plugins/Spiele rausschmeissen, sonst gehts nicht ! Oder Ihr müsst anderwärtig aufräumen (z.B. sb-shrink nehmen, etc.). Durch Eingabe von "ps" unter Telnet/Putty sieht man hier schon meistens wie die eingebaute camd heisst und wo sie liegt ! In seltenen Fällen wird nur der Symlink der laufenden camd angezeigt (muss man dann selbst ausfindig machen). Symlinks sind mittels "ls" unter Telnet/Putty idR. unsichtbar ! Eingabe "ls -la" zeigt dann wirklich alles an ! Mittels FTP kann man auch einiges angezeigt bekommen...

Also zuerst benötigt Ihr ein FTP-Programm (für Windows z.B. Total Commander; Download hier http://www.ghisler.com/ ; für Linux gehts auch mit dem Midnight-Commander [mc], der idR. vorinstalliert ist), oder Telnet (Boardmittel unter Windows und Linux) .Telnet lässt sich mit Windows via Start-Button/"Ausführen" aufrufen. Alternative für Windows ist Putty... Download hier http://www.uni-giessen.de/hrz/software/putty/ !!

FTP-Verbindung zur DBox2 herstellen:

Windows: Total-Commander starten. Netz/neue Verbindung/dbox-Namen eingeben (zb "meine dbox"), IP der DBox eingeben; Login "root" und "dbox2" als Passwort (Achtung: Passwort kann auch ein anderes, oder auch ohne PW sein) !! Mit "ok" abschliessen und verbinden ! Linux: Durch Eingabe von "mc" den Midnight-Commander starten. Dann F9 drücken, mit den Cursortasten zu dem Menüeintrag "Links"- oder "Rechts" gehen, "FTP-Verbindung" auswählen und "root@192.168.x.y"(IP der Box) eingeben, und mit Eingabe des Passwortes abschliessen (wenn kein PW, dann einfach ENTER). Als Alternative könnt Ihr auch kbear verwenden - der ist sehr einfach und intuitiv zu verwenden

Jetzt solltet Ihr auf Eurer DBox2 via FTP eingeloggt sein !


Telnet/Putty-Verbindung zur DBox2 herstellen

(Anmerkung: Nur eins der folgenden Varianten wird benötigt !)


Putty: Bei "Host-Name" gebt Ihr die IP der DBox2 ein; darunter auf Telnet klicken (Port 23) und unter "saved sessions" gebt Ihr zb "meine dbox" ein. Dannach auf "save" ! Nun Doppelcklick auf "meine dbox", root/dbox2 (oder Euer eigenes Passwort eingeben)... Nun seid Ihr auch mit Putty auf der DBox2 !! Telnet unter Windows: Start-Button/Ausführen/Eingabe: "telnet (IP der DBox2)", dann root/dbox2 (oder anderes PW, bzw. auch ohne PW)... Nun seid Ihr auch unter Windows mit Telnet auf der DBox2 eingeloggt ! Telnet unter Linux (grafische Oberfläche): Ein Konsolen-Fenster öffnen. Eingabe dort: "telnet (IP der DBox2)", dann root/dbox2 (oder anderes PW, bzw. auch ohne PW)... Nun seid Ihr mit Telnet in der DBox2 eingeloggt ! Telnet unter Linux (Textkonsole): Mittels ALT-F2 auf eine zweite Konsole wechseln (für später: zurück gehts mit ALT-F1). Dort einloggen. Eingabe dort: "telnet (IP der DBox2)", dann root/dbox2 (oder anderes PW, bzw. auch ohne PW)... Nun seid Ihr mit Telnet in der DBox2 eingeloggt !

Welche Werkzeuge werden noch benötigt ?

- mkfs.jffs2, mkcramfs, mksquashfs (je nach Image-Art nur das zutreffende benötigt; liegt alles dem Anhang bei) - Optional: NewTuxBoxFlashTools (NTBFT) <--- gibts hier in der Database ! - DBox2-Boot-Manager... Hiermit kann man unter Windows Images flashen, aber auch Bootlogs erstellen und Win-Partitionen mounten (und vieles mehr)... (Download: http://dbox.feldtech.com ) - Un-TAR Utilities für Windows zum enttaren von Files ! Kann man machmal brauchen... Auch Files mit .gz und .bz2 Endung sind hiermit unter Windows entpackbar (Download: http://dbox.feldtech.com ) - Linux auf dem PC ! Optional: Eine der vielen Linux-Emulationen unter Windows wie cygwin oder Bochs; oder VMware oder Virtual-PC als "PC-Emulator" für einen PC-im-PC in dem ein Linux unter Windows läuft , etc. - Optional zum Editieren von Texten unter Windows im Linux-Format: Ultraedit (Download: http://www.ultraedit.com/ )

Einbau/Update der camd3 ins DBox2-Image

Einbau der camd3 (Image ist noch ohne camd3)

Wie bereits erwähnt, ist die camd3 die Alternative zur "offiziellen" camd2 ! Das einfachste wäre nun, einfach die camd3 in camd2 umzubenennen, und im Image unter /bin zu überschreiben. Bei einem JFFS2-Only-Image wär das dann auch schon fast alles. Augenzwinkern Da aber bei allen anderen Images das Verzeichnis /bin in einem NICHT-beschreibbaren Bereich liegt, sollte man sich was anderes ausdenken...

Jedes Image verfügt über einen beschreibbaren Bereich (JFFS2)... Auch ein Cramfs- oder ein Squash-Image (!) Idee also, die camd3 in den JFFS2-Bereich eines Cramfs/Squash-Images abzulegen ! Was aber machen, wenn das Image beim Booten bereits die "offizielle" camd2 startet und die camd3 hinterher ? Das geht leider nicht... Geht immer nur eins (!) Lüftung des Geheimnisses ist die Datei "start_neutrino" oder "start_enigma" ! Dort könnte man alle Einträge "/bin/camd2" einfach in /var/camd3" abändern ! Fehlt dann nur noch die Konfiguration (detaillierter beschrieben unter Punkt 5.) Einige Image-Ersteller haben da sogar schonwas vorbereitet; lies´ weiter unter Punkt 3.1. (!)

Nachdem wir das Binary eingebaut haben kommen nun die Konfigs

Ein erster Test...

Einbau der camd3_start,stop.pcamd!

Update einer neueren camd3-Version (Image hatte bereits camd3 an Board)

Bearbeiten eines Nicht-Beschreibbaren Bereiches im Image

Bearbeiten eines CRamFS-Images mit New-Tux-Flash-Tools unter WinXp

Bearbeiten eines CRamFS-Images

Bearbeiten eines Squash-Images

Konfiguration der camd3

Folgende Dateien MÜSSEN (neben der binären camd3) in Euer Image:

camd3.config
camd3.keys
camd3.users (muss für Cardsharing auf den Server)
camd3.servers (muss für Cardsharing auf den Client)

Alle Dateien müssen nach /var/keys kopiert werden !!!

camd3.config

Beispieldatei von DOZ21

# Wenn Parameter gebraucht wird - '#' entfernen und eure Werte reinsetzen!!!!!
#
#
# 
# Boxtyp(optional):  1-dbox2, 2-dm7000, 3-dm7020, 4-dm500, 5-dm56xx/Triax;  Default ist 2
# BOXTYPE=1
#
# UDP Port(optional);  Default - 20248
#UDP_PORT=24110

# TCP Port(optional);  Default - 0 (TCP-server ausgeschaltet)
#TCP_PORT=24110

# Log(optional): 0 - keine Ausgaben, 1-Datei, 2 - Console, 4 - UDP(syslog), 3 - Console+Datei, 5 - UDP+Datei, 6 - UDP+Console, 7-UDP+Console+Datei;  Default ist 2;
#LOG=2

# Host für UDP-logging
#LOG_HOST=192.168.1.1

# Port für UDP-logging(optional);  Default ist 514
#LOG_PORT=514

# Logfile
#LOG_FILE=/mnt/hdd/var/log/camd3.log

# DNS cache in sekunden; Default ist 600 sec
#DNS_CACHE=600

# Pfad zum User-File(optional);  Default ist /var/keys/camd3.users
#USERS=/var/keys/camd3.users

# Pfad zum Server-File(optional);  Default ist /var/keys/camd3.servers
#SERVERS=/var/keys/camd3.servers

# Pfad zum Key-File(optional);  Default ist /var/keys/camd3.keys
#KEYS=/var/keys/camd3.keys

# Pfad zum Socket-File(optional);  Default ist /tmp/camd.socket
#SOCKET=/tmp/camd.socket

# Multichannel mode (optional): 0-aus, 1-ein;  Default ist 0
#MULTI=1

# Kartenslots (anzahl beliebig)
# je eine Zeile für Slot:
# SLOT=devicename:type:au_g:au_s:au_u:port:username:password:deskey
#
# deskey für normale Slots ist optional, aber port,username und password müssen immer angegeben werden!!!
#
# devicename: Pfad (volständig) zum Device, oder Hostname von cardserver(newcamd)
# type: 1-serial, 2-intern(dreamox), 4-cardserver(newcamd)
# au_g: 1-eingeschaltet, 0-ausgeschaltet
# au_s: 1-eingeschaltet, 0-ausgeschaltet
# au_u: 1-eingeschaltet, 0-ausgeschaltet
# port: port
# username: loginname
# password: loginpassword
# deskey: cardserver deskey (14 byte)

# für Dreambox
# Serial
#SLOT=/dev/tts/0:1:1:1:1:997:mastercrd:password1
# Slot oben
#SLOT=/dev/sci1:2:1:1:1:998:slotoben:password2
# Slot unten
#SLOT=/dev/sci0:2:1:1:1:999:slotunten:password3
# Newcamd Cardserver
#SLOT=localhost:4:1:1:1:22222:dummy:dummy:0102030405060708091011121314

# für dbox2
# Serial
#SLOT=/dev/tts/0:1:1:1:1:997:mastercrd:password1
# Multicam
#SLOT=/dev/tts/1:1:1:1:1:998:multicam:password2

# Au für den original Slot der dbox2: 0-aus, 1-an; Default ist 1
#DBOX2_AU=0

Was bedeutet Boxtyp ?

Mit Hilfe des Boxtyp stellt man die verwendete Box ein auf der ihr die camd3 installieren wollt, ändert einfach die Zahl entsprechend der verwendeten Box.

Für was ist der UDP / TCP Port ?

Die Übertragung wird bei der camd3 entweder über das Protokoll UDP oder TCP gemacht. Bei einer der Serverbox legt dies die udp oder tcp_Portnummer fest, unter der der Server auf eingehende Anfragen lauscht. Genau der gleiche muß bei den Clients in der camd3.servers eingetragen werden damit eine Kommunikation ermöglicht wird. Weiterhin wird über den Porteintrag in camd3.config festgelegt, auf welchem Absende-Port der Client seine Anfragen an den Server stellt.

Beispiel: Die Serverbox hat Port 20248, Clientbox Port 20250 in der camd3.config und Port 20248 in der camd3.servers stehen. Der Client sendet nun mit Absendeport 20250 an den Zielport 20248 des Servers. Bei der Antwort ist es umgekehrt. Der Server nutzt Port 20248 als Absender und schickt seine Daten an Port 20250 der Clientbox.

Für was ist der Logeintrag ?

Die camd3 gibt verschiedene Informationen aus die z.B. Informationen über die Cardsharinganfragen und Verarbeitung enthalten. Dabei gibt es verschiedene Möglichkeiten diese Infromationen anzeigen zu lassen welche mit diesem Eintrag geregelt werden können.

Datei: Die Loginformationen werden in einer Datei auf der Box gespeichert

Console: Gibt die Informationen über Telnet aus wenn man die camd3 manuell über Telnet gestartet hat.

UDP: Die Loginformationen werden über einen UDP Port an eine beliebige IP gesendet und können dann z.B. am PC abgefragt werden.


Was bedeutet LOG_HOST ?

Hier wird die IP Adresse angegeben an welche die Log-Informationen gesendet werden sollen fall UDP als Logart gewählt wurde.


Was bedeutete LOG_PORT ?

Dies regelt den Port über welchen das Log an die zuvor eigestellt IP gesendet wird.


Was bedeutet LOG_FILE ?

Hiermit wird der Speicherort der Logdatei angegeben fall Datei als Logart gewählt wurde.


Bedeutung der Log-Ausgaben:

00 - ECM (request)
01 - ECM (response)
02 - EMM (für client - set EMM, für server - EMM data) -> veraltet, bleibt aus Kompatibilitätsgründen
03 - ECM (cascading request)
04 - ECM (cascading response)
05 - Kartendaten zum Client (eingehend beim Client) 
06 - EMMs (eingehende EMM-Daten beim Server)

Normales Sharing Client - Server:

172.16.0.121 = Client
172.16.0.123 = Server

Auf dem Server eingehende Anfrage:

Oct  5 00:54:26 camd3: UDP 00 -> 1702:000000:100A:000A 0.286008s from 172.16.0.121 ( User1 ) decoded on /dev/sci1

die Antwort des Servers auf dem Client:

Oct  5 00:54:28 camd3: UDP 01 -> 1702:000000:100A:000A 0.002755s from 172.16.0.123 ( User1 )

Sharing mit kaskadierten Servern:

172.16.0.121 = Client
172.16.0.123 = 1. Server
172.16.0.124 = 2. Server

Anfrage des Clients beim 1. Server:

Oct  5 00:54:26 camd3: UDP 00 -> 1702:000000:100A:000A 0.286008s from 172.16.0.121 ( User1 ) 

Anfrage des 1. Servers bei einem 2. Server

Oct  5 00:54:28 camd3: UDP 03 -> 1702:000000:100A:000A 0.286008s from 172.16.0.123 ( User2 ) decoded on /dev/sci1

Antwort des 2. Servers an den 1. Server:

Oct  5 00:54:30 camd3: UDP 04 -> 1702:000000:100A:000A 0.286008s from 172.16.0.124 ( User2 )

Eingehende Anwort beim Client:

Oct  5 00:54:32 camd3: UDP 01 -> 1702:000000:100A:000A 0.286008s from 172.16.0.123 ( User1 )

Was bedeuten die Pfad angaben?

Die camd3 nimmt an, dass die key, server und user Dateien sich im Ordner var/keys befinden, falls dies jedoch nicht der Fall sein sollte kamm man hier den Ort angeben an dem sich die Dateien befinden.

Was bedeutet DNS cache in Sekunden?

Hiermit kann man die Zeit in Sekunden einstellen in welchen Abständen DNS aktualisiert werden soll.

Was ist der Multichannel mode ?

Die camd3 ab Version 3.800 unterstützen den Multichannel mode, dabei kann man z.B. einen verschlüsselten Kanal aufnehmen und dennoch weitere verschlüsselte Sender auf dem gleichen Transponder entschlüsseln. Der Eintrag MULTI aktiviert oder deaktiviert diese Funktion.


Welcher slot steht für was?

DBox2:

/dev/tts/0 externe com mit Cardreader
/dev/tts/1 Multicam

Ab camd3.807 wird wieder der original Slot der dbox2 unterstützt, dieser ist immer aktiviert, er wird nicht über die Config geregelt. Er kann nicht für CS genutzt werden.

Dreambox:

/dev/tts/0 externe com mit Cardreader
/dev/sci0 unterer Slot
/dev/sci1 oberer Slot

Des weiteren gibt es noch die Möglichkeit sich mit der camd3 am Newcamd Cardserver anzumelden um auf dessen Karten zuzugreifen, dies geschiet mit dem Eintrag:

SLOT=localhost:4:1:1:1:22222:dummy:dummy:0102030405060708091011121314

Warum liest die camd3 meine Original Karte nicht?

Eine Möglichkeit wäre, dass ihr vergessen habt den entsprechenden Slot in der camd3.config zu aktivieren, überprüft also ob die # vor dem Slot entfernt ist.


Was ist das Kommando D0,D2 bzw. D3?

D0 -> G=Global -> Globale Kommandos an alle Karten
D2 -> S=Shared -> Shared Kommandos an die eigene Kartengruppe
D3 -> U=Unique -> Unique Kommandos nur an die eigene Karte

Wie blocke ich um z.B. mein Abo zu verlängern?

Um die Karte zu blocken müßt ihr das Autoupdate der Karte deaktivieren, dies geschiet in der SLOT Zeile:

SLOT=/dev/sci0:2:1:1:1:999:slotunten:password3

Ändert dazu die fetten Zahlen 1:1:1 in 0:1:0 und die Karte wird nur noch D2 Zeitverlängerungskommandos erhalten und ist somit geblockt.

Falls ihr die Smartkarte im original Schacht der dbox2 verwendet und diese blocken wollt müßt ihr überprüfen ob der Eintrag:

DBOX2_AU=0

aktiviert und auf 0 gesetzt ist. Damit ist die Karte geblockt.

Welchen Sinn machte es, bei der Multicam und dem com-Port nochmal in G,U und S zu unterteilen?

Weil es eben "Sinn" macht entweder nur D0, D2, D3 oder eben auch "alles" durchzulassen! So kann man regelt ob man nur Kommandos speziell für seine Karte durchlassen will oder auch Globale Kommandos.

camd3.keys

Beispieldatei von DOZ21

# 
# Eine Zeile - Ein Eintrag, der so aussehen muss:
# [-]AAAA:BBBBBB:CCCCCCCCCC:DD:[-]E............
# oder so:
#
# [-]AAAA:BBBBBB:CCCCCCCCCC:DD:FILE=filename:OFFSET=0xXXXX:SIZE=0xYYYY
#
# AAAA - caid
# BBBBBB - provider
# CCCCCCCCCC - ppua
# DD - keynr
# EEE...... - data
# X - offset
# Y - SIZE
# wenn '-' vor caid -> wird das Keys aus DB gelöscht(wenn vorhanden)
# wenn '-' vor data -> wird das Datateil bytesweise rotiert
#
# oder SO:
# 
#
# Für OP.keys muss provider 0000000000 sein

# Beispiel Seca
0100:0000A8:0000000000:0C:1234567890ABCDEF
0100:0000A8:0000000000:0D:1234567890ABCDEF
0100:0000A8:0000000000:0F:1234567890ABCDEF


# Beispiel Conax
0B00:000000:0000000000:E0:1234567890ABCDEF1234567890ABCDEF1234567890ABCDEF1
234567890ABCDEF1234567890ABCDEF1234567890ABCDEF.....
0B00:000000:0000000000:B0:1234567890ABCDEF1234567890ABCDEF1234567890ABCDEF1
234567890ABCDEF1234567890ABCDEF1234567890ABCDEF.....
0B00:000000:0000000000:E1:1234567890ABCDEF1234567890ABCDEF1234567890ABCDEF1
234567890ABCDEF1234567890ABCDEF1234567890ABCDEF.....
0B00:000000:0000000000:B1:1234567890ABCDEF1234567890ABCDEF1234567890ABCDEF1
234567890ABCDEF1234567890ABCDEF1234567890ABCDEF.....

# Beispiel Nagra
1800:007001:0000000000:00:6FF06F47E957D3C8
1800:007001:0000000000:01:BD422C6AD2B58C24
1800:007001:0000000001:00:... - PK0_E1
1800:007001:0000000001:01:... - PK0_N1
1800:007001:0000000001:02:... - PK2_E1
1800:007001:0000000001:03:... - PK2_E1
1800:007001:0000000001:04:... - PK_N2
1800:007001:0000000001:05:... - EMMK1

# Beispiel Via2
0500:015000:0000000000:08:11223344556677881122334455667780

# Beispiel AES
0500:007C00:0000000000:80:11223344556677881122334455667781
0500:007C00:0000000000:81:11223344556677881122334455667782
.....
0500:007C00:0000000000:8A:1122334455667788112233445566778

# Beispiel BISS AAAA - service id (hexadizimal)
2600:00AAAA:0000000000:00:112233445566

# Beispiel ConstandDW AAAA - service id (hexadizimal)
0100:00AAAA:0000000000:00:11223344556677881122334455667788

Die Datei "camd3.keys" muss zwingend !! ins Verzeichnis /var/keys. Grundsätzlich könnte man dort auch einen symbolischen Link anlegen, der auf eine in einem anderen Verzeichnis abgelegte "camd3.keys" zeigt. Spätestens nach der Aktualisierung der Datei durch eine Autoupdate eines Senders wird allerdings der Link gelöscht und die Datei in /var/keys abgelegt.


Heimnetz-Sharing/Internet-Sharing

camd3.servers

(wird nur in der Clientbox benötigt)

Beispieldatei von DOZ21

# cs357x - UDP
#	cs378x - TCP
#
# Sende alle ECMs
#cs357x://benutzer1:password1@132.23.78.133:32897
#
# Sende gefiltert nach Services (z.B nur Start und Film)
#
#cs357x://benutzer3:password3:SERVICES=/var/keys/pw_start.services&SERVICES=/var/keys/pw_film.services@www.myhost.com:16663
#
#
#
# Sende alle ECMs via TCP
#cs378x://benutzer1:password1@132.23.78.133:32897

Via LAN:

cs357x:// => UDP-Protokoll
cs378x:// => TCP-Protokoll

benutzer1:password1 => name und passwort zur authentifizierung am Server

Hier ist ein Filter nach Services gesetzt:

:SERVICES=/var/keys/pw_start.services&SERVICES=/var/keys/pw_film.services

IP und Port des Servers; Client und Server regeln voll automatisch welche Anfragen per CS gesendet werden und welche nicht:

@132.23.78.133:32897

Der eingetragene Port muß identisch sein mit dem Port aus der "camd3.config" der Serverbox.

Die rausgehende Anfragen kann man einschränken, in dem man z.B. ":SERVICES=/var/keys/pw_start.services&SERVICES=/var/keys/pw_film.services" hinter dem Passwort anhängt, somit lässt er z.B. nur Anfragen raus die vorher in der services Datei eingetragen wurden. Damit kann man manuell den Netzverkehr reduzieren, da z.B. eine Anfrage für einen Kanal, welcher nicht in der Services Datei steht,erst gar nicht an den Server geschickt wird, sondern rein lokal über den passenden Key in der Datei "camd3.keys" beanwortet wird, falls möglich.


Via Internet:

Sieht die camd3.servers genauso aus, man muss nur die Netzwerk-IP durch eine Internetadresse ( zB. www.myhost.com ) ersetzen.

camd3.users

(wird nur in der Serverbox benötigt)

Beispieldatei von DOZ21

# Alle services erlaubt, IN_CASC erlaubt, OUT_CASC erlaubt
benutzer1:password2

# REMM
#benutzer1:password2:REMM=/dev/sci1 (kann auch mit FROM und(oder) SERVICES benutzt werden)

# nur Start
#benutzer2:password2:SERVICES=/var/keys/pw_start.services

# nur Fim
#benutzer3:password3:SERVICES=/var/keys/pw_film.services

# nur Start UND Film
#benutzer3:password3:SERVICES=/var/keys/pw_start.services&SERVICES=/var/key
s/pw_film.services

# Cascadingungsabfragen von benutzer5 werden akzeptiert und local bearbeiteit, wenn es in services steht
#benutzer5:password5:SERVICES=/var/keys/pw_start_in

# Cascading für benutzer6 aktiviert
#benutzer6:password6:SERVICES=/var/keys/pw_start_out.services

#Cascadingungsabfragen von benutzer7 werden akzeptier, local bearbeiteit und anderen Server weitergeleitet
#benutzer7:password7:SERVICES=/var/keys/pw_start_all.services

# Nur Anfragen von einer bestimmten IP-Adresse sind erlaubt (kann auch mit REMM und(oder) SERVICES benutzt werden)
#benutzer8:password8:FROM=sein.hostname.tv
#benutzer9:password9:FROM=192.168.1.210

# DISABLE=1 -> Sende Disable-Service, wenn nicht in Service-List (kann mit Anderen Parameters kombiniert werden)
benutzer110:password10:DISABLE=1&SERVICES=/var/keys/pw_start.services

# DISABLE=2 -> Sende Fake-DW, wenn nicht in Service-List (kann mit Anderen Parameters kombiniert werden)
benutzer110:password10:DISABLE=2&SERVICES=/var/keys/pw_start.services 

Hinweis: Bei der dbox2 kan man nur mit multicam bzw. Cardreader und geladenem "multicam.o" Modul einen Server mit Cardsharing betreiben. Grundsätzlich kann "camd3" auch ohne Cardsharing Server für jegliches Cryptsystem spielen. So ist es denkbar, dass in einem lokalen Netz eine Box Server für andere Boxen spielt, aber keine Karte shared. Dies erspart z.B. Arbeit beim Pflegen der "camd3.keys", da man nur auf einer Box die Datei pflegen muss.


In der camd3.user sind die freigegebenen Clienten, welche mit "camd3" kommunizieren dürfen.

benutzer1:password2 => alle eingehenden Anfragen von den Clienten werden von camd3 angenommen


Filtern mit Service Dateien

SERVICES=/var/keys/pw_start.services => Dem User wird nur erlaubt Sender zu sehe welche in der pw_start.services Datei eingetragen sind. Alle anderen Anfragen werden von der camd3 ignoriert.

SERVICES=/var/keys/pw_start.services&SERVICES=/var/keys/pw_film.services => Dem User wird nur erlaubt Sender zu sehe welche in der pw_start.services UND der pw_film.services Datei eingetragen sind. Alle anderen Anfragen werden von der camd3 ignoriert.


REMM - Remote EMM

Über diesen zusätzlichen Parameter in der Datei "camd3.users" wird gesteuert, von welchem Benutzer Auto-Update Daten für die Karte die geshared wird angenommen werden.

Hinweis: REMM funktioniert zur Zeit nur bei Verwendung des UDP Protokoll, also wundert euch nicht wenn bei TCP keine Kartenupdates per REMM kommen ;) Des weiteren funktioniert REMM bis jetzt nur mit Irdeto (und seine Abarten, also Betacryt oder getunneltes Nagar) Seca und seit 3.812 mit Cryptoworks.

Es gibt folgende Einstellungen:

DBox2:

REMM=/dev/tts/0 => remote EMMs gehen an den seriellen Port = Karte im externen Kartenleser
REMM=/dev/tts/1 => remote EMMs gehen an das Multicam = Karte im Multicam der dBox2

Dreambox:

REMM=/dev/tts/0 => remote EMMs gehen an den seriellen Port = Karte im externen Kartenleser
REMM=/dev/sci1 => remote EMMs gehen an den oberen Slot = Karte im oberen Slot der Dreambox
REMM=/dev/sci0 => remote EMMs gehen an den unteren Slot = Karte im unteren Slot der Dreambox

Das Senden von Remote-EMMs muss beim Client nicht extra aktiviert werden.

Bei korrekter Konfiguration liefert der Server nach der ersten Verbindung seine Kartendaten (HEX-Seriennummer) an den Client, dieser filtert anhand der übermittelten Kartendaten die zutreffenden EMMs aus dem Datenstrom heraus und übermittelt die Daten an den Server. Dort werden je nach AU-Konfiguration D0, D2 oder D3 an die Karte weitergeleitet.

Bei erfolgreicher Weiterleitung schickt der Server eine "Quittung" an den Client.

Wenn man die Logausgabe aktiviert hat, sieht man folgende Sequenzen im Log:

"Paket von .... CMD=05 ..." => beim Client eingehende Kartendaten
"Paket von .... CMD=06 ..." => beim Server eingehende EMMs

Im Erfolgsfalle protokolliert der Server folgendes:

"Oct  5 01:18:26 camd3: emm D0 auf Slot /dev/tts/1 erfolgreich" ( ... oder D2 bzw. D3)


Was ist cascading

Wenn ihr einen Server betreibt, welcher eine CW-Anfrage eines Clients nicht beantworten kann (da er die nicht entschlüsseln kann), kann die Anfrage an einen anderen Server weitergereicht werden (der muss sich dann in camd3.servers befinden). Die Anfrage kann maximal 3 mal an einen anderen Server weitergereicht werden. Seit der Version 3.668 wird Cascading User-bezogen gesteuert, d.h die Berechtigungen werden einzelnen Benutzern erteilt

Falls keine weiteren Parameter bei einem User angegeben sind ist Cascading in & out für diesen User aktiviert. Falls man für einen User Cascading regeln will muss man eine Services Datei für diesen Anlegen und dem Usernamen zuweisen s.o. Das Cascading selber wird dann in der services Datei geregelt.


Services Datei

Beispieldatei von doz21:

[QUOTE]
# AAAA:BBBBBB:CCCCCC:D:E
#
# AAAA		caid
#	BBBBBB	provider
#	CCCC		service
#	D				IN_CASC (1-ja, 0-nein)
#	E				OU_CASC	(1-ja, 0-nein)
#
#
#
# Start
1702:000000:0008:0:0
1722:000000:0008:0:0

1702 & 1722 => Sind die ChannelIDs, hier Premiere für Sat und Kabel.

000000 => Ist der Provider

0008 => ist der Services oder anders gesagt die Hex des Kanals. 0008 steht z.B. für Premiere Start. Mit dem Eintrag FFFF als Platzhalter werden alle Services aktiviert, so dass nicht alle Sender einzeln eingetragen werden müssen (seit 3.812)

0:0 => regelt das Cascading In und Out. 1 erlaubt dem User Cascading 0 unterbindet dieses.

Die Anfragen können nicht beliebig oft weitergeleitet werden, da sonst irgendwann der Traffic zu groß wird. Der Server der die Anfrage weiterleitet wird muss einem Zugriff erlauben. (Der Client muss also dort in der camd3.users eingetragen sein). Weiterhin muss natürlich der weiterleitende Server selbst als Client bei einem anderen Server eingetragen sein.

"IN_CASC" und "OUT_CASC" muss nur bei weiterleitenden Servern hinter dem 1. Server aktiviert sein. Beim 1. Server muss nur OUT_CASC aktiviert sein, da die eingehende Anfrage des Clients eine "normale" Anfrage ohne Cascading-Kennung ist. Beim Client selbst müssen keine Cascading-Parameter aktiviert sein, da dieser ja nur eine Anfrage an "seinen" Server stellt und eine normale Antwort erhält. Beim letztendlichen Server, der die Anfrage beantwortet, muss nirgends mehr "OUT_CASC" stehen, da er nicht mehr weitere Server befragt, mindestens eine Nutzerkennung muss aber "IN_CASC" aktiviert haben, da sonst Kaskadeanfragen nicht bearbeitet werden.


Beispiel: Ein Client möchte ein Programm sehen, das der Server nicht entschlüsseln kann, dann gibt er(der Server) die Anfrage weiter an einen anderen Server, wo er (der erst angefragte Server) vorher als Client eingetragen wurde. Dieser entschlüsselt dann das Signal und schickt es, über den erst angefragten Server, an den Client zurück.


Verschlüsselung: Weiterhin wird die Kombination aus Username und Passwort zur Generierung eines Verschlüsselungsstrings genutzt. In den aktuellen Versionen von camd3 wird die Übertragung zwischen Client und Server immer verschlüsselt. Vor allem beim Cardsharing über das Internet ist dies mit Sicherheit von Interesse. Bei der Vorgängerversion musste noch ein Schlüssel "von Hand" eingegeben werden und die Verschlüsselung konnte auch abgeschaltet werden. Wenn die Kennungen auf Client- und Serverseite nicht übereinstimmen ist es nicht nur so, dass der Server wegen fehlender Berechtigung keine Antwort gibt, er kann die Anfrage erst gar nicht "verstehen".


Konfiguration der camd3

Konfigdateien/Localhost/etc.

Heimnetz-Sharing/Internet-Sharing

Nachtrag/Credits/Dateianhang

---


Die camd3 ist ein Smartcard-Emulator für verschlüsselte, digitale TV- und Radiosender. Sie unterstützt aber auch originale Smartcards. Ebenso kann man mit ihr Cardsharing via Heimnetzwerk und via Internet betreiben, und sie unterstützt das Multicam...

[span=seagreen][COLOR=yellow][B]Was heisst denn camd3 überhaupt ?[/B][/COLOR][/span]