Avancerade Multimedia Center (9 / 15 steg)
Steg 9:5. [Frivilligt] Installera oscam server för att titta på krypterade kanaler
Obs: titta på krypterade kanaler är inte olagligt. Titta på
krypterade kanaler om du inte har ett abonnemangskort är olagligt och straffbart enligt lag. Svårighetsgraden ökar, om du delar ditt abonnemangskort med andra. Detta dokument kommer att anta att en giltig prenumerationskort används och som ägs och som kortet delas endast inom det lokala nätverket. Detta dokument är också ett proof-of-concept och är avsedd endast för akademiska.
Installation och konfiguration av OSCAM card-servern är inte en lätt process, och bara del som installation och de som rör ansluta den med tvheadend servern kommer att diskuteras här, på grund av anteckningen från ovan. Ytterligare information kan hittas på internet.
Oscam server kan laddas ner som en binär från en databas eller kan byggas från källor. Som det hela tiden utvecklas, är det bättre att ha det byggs från källor, som binära bygger är oftast föråldrade.
För att bygga, måste ytterligare paket installeras innan. Följande steg kommer att omfatta installation av bygga verktyg, oscam, start stop skript och automatisk uppdatering skript:
en) Installera bygga verktyg, libs
apt-get update
apt-get - y installera apt-utils dialogrutan usbutils
apt-get - y install gcc g ++ wget
apt-get - y installera build-essential subversion libpcsclite1 libpcsclite-dev
apt-get - y install libssl-dev cmake göra
apt-get - y installera libusb-1.0-0-dev nano
lämplig-få installera pcscd pcsc-tools
b) installera oscam från förråd
CD/home/osmc
SVN checkout http://www.streamboard.tv/svn/oscam/trunk oscam-svn
mkdir bygga
chmod 755 bygga
CD-build
cmake...
Om det finns ingen konfigurationsfel, skall göra skript exekveras:
göra
se installera
Efter installation, skall en systemd tjänsteskript skapas:
nano /etc/systemd/system/oscam.service
Innehållet i filen:
[Enhet]
Beskrivning = oscam
After=Network.target
[Tjänster]
Typ = gaffel
PIDFile=/run/oscam.pid
ExecStart = / usr/local/bin/oscam - b - r 2 -B /run/oscam.pid - c /var/etc/oscam -p 512
ExecStop = / usr/bin/rm /run/oscam.pid
Starta om = alltid
RestartSec = 5
[Installera]
WantedBy = multi-user.target
För att automatiskt starta den på system stöveln tid, skall följande kommando exekveras:
systemctl aktivera oscam.service
Filerna placeras i följande mapp:
/var/etc/Oscam
mkdir /var/etc
mkdir /var/etc/oscamchown osmc.osmc /var/etc/oscam-R
För att starta oscam server, skall följande kommando exekveras:
systemctl start oscam.service
Nu vi skapa och bil-uppdatera skriptet:
Nano /usr/local/bin/oscam_update.sh
Skriptet behöver behörigheter för att köras:
chmod 755 /usr/local/bin/oscam_update.sh
Innehållet i filen:
#! / bin/sh
ECHO "Igång oscam update"
CD/home/osmc /
om [! -d "$DIRECTORY"]; sedan
SVN checkout http://www.streamboard.tv/svn/oscam/trunk oscam-svn
Fi
CD oscam-svn
svn update
om [! -d "build"]; sedan
# Kontroll kommer in här om $DIRECTORY inte finns.
mkdir bygga
Fi
CD-build
cmake...
göra
systemctl stop oscam
se installera
systemctl restart oscam
sova 10
Detta skript checkar ut den senaste versionen från online-databasen, om det finns för närvarande ingen befintlig, eller kommer att utföra en uppdatering till senaste filerna, om det är redan existerande, efteråt kommer att försöka skapa paketet. I slutändan, det kommer att stoppa den pågående versionen, installerar nybyggda versionen och i slutändan kommer att starta om tjänsten.
Vi kan testa skriptet genom att köra:
/usr/local/bin/oscam_update.sh
För att köra skriptet med jämna mellanrum, kommer att vi skapa en post till cron's Schemaläggaren:
crontab-e
Om du uppmanas vi skall välja som redaktör, nano, och när filen öppnas, kan vi lägga till följande rader:
#update oscam på 04:02, 5: e dagen i veckan
2 4 ** 5 /usr/local/bin/oscam_update.sh >/dev/null
Som servern är ständigt utvecklas, kan det hända att det finns också minnesläckor som förbrukar systemresurser över tiden. För att lösa detta hinder, kan vi skapa ett skript för automatisk omstart:
Nano /usr/local/bin/oscam_autorestart.sh
För att kunna utföra den, skall vi ställa in rätt behörigheter:
chmod 755 /usr/local/bin/oscam_autorestart.sh
Innehållet i filen:
#! / bin/sh
systemctl stop oscam.service
sova 5
systemctl start oscam.service
Vi kan testa skriptet genom att köra:
/usr/local/bin/oscam_autorestart.sh
För att köra skriptet med jämna mellanrum, kommer att vi skapa en post till cron's Schemaläggaren:
crontab-e
och Lägg till följande rader till det:
#restart oscam på 3:54
54 3 *** /usr/local/bin/oscam_autorestart.sh >/dev/null
Från denna punkt ytterligare kommer vi anta att vi har en fungerande Oscam server på våra raspberry Pi, eller på vårt interna nätverk, men på annan maskin. Vi kommer att utveckla detta senare för att se varför detta är också ok.
Använda oscam till avsnittet de krypterade kanalerna, måste vi göra en anslutning mellan tvheadend server och oscam server.
Tvheadend har stort stöd för CAs (villkorad tillgång); Vi kan hitta inställningarna under konfigurationen -> CAs-menyn, pekar
Vad är viktigt för oss är newcamd protokollet eller dvbapi-protokollet.
Om vi har bara en CAID (kort-id – varje provider har minst ett kort-id, men kan ha också mer), då vi kan också använda en newcamd anslutning mellan tvheadend och oscam.
Eftersom vi utgår från att vi skulle vilja se mer kanal från olika leverantörer, kommer att vi använda protokollet från dvbapi, de som allmänt stöds på en hel del Enigma-baserade STBs.
Innan vi går vidare, lite kort bakgrund info om kryptering från wikipedia:
"
Detta uppnås genom en kombination av hastigt och kryptering. Dataströmmen är kodade med ett 48-bitars hemlig nyckel, kallas ordet kontroll. Att veta värdet på kontrollen ordet vid en given tidpunkt är av relativt ringa värde, som under normala förhållanden, tillhandahållare av innehåll kommer att ändra kontroll ordet flera gånger per minut. Ordet kontroll genereras automatiskt så att successiva värden inte är oftast förutsägbara; DVB specifikationen rekommenderar att man använder en fysisk process för detta.
För mottagaren för att avkoda dataströmmen, måste det vara permanent informerade om det aktuella värdet av ordet kontroll. I praktiken informeras det något i förväg, så att ingen visning avbrott inträffar. Kryptering används för att skydda kontroll ordet under överföringen till mottagaren: kontroll ordet är krypterad som ett rätt kontrollmeddelande (ECM). Delsystemet CA i mottagaren kommer att dekryptera kontroll ordet endast när behörig att göra detta; denna myndighet skickas till mottagaren i form av en rätt hantering meddelande (EMM). EMMs är specifika för varje abonnent, som identifierats av smartkortet i sin mottagare, eller för grupper av prenumeranter, och utfärdas mycket mindre ofta än ECMs, oftast månatliga mellanrum. Detta är tydligen inte tillräckliga för att förhindra obehörig, sänkte TPS intervallet ner till ca 12 minuter. Detta kan vara olika för varje leverantör, BSkyB använder en mandatperiod på 6 veckor. När Nagravision 2 var hackad, Digital + började skicka en ny EMM obehörig var tre dagar att göra som tittar på mer omständligt.
Innehållet i ECMs och EMMs är inte standardiserad och som sådana de beror på de system för villkorad tillgång används.
"
Mer info här kan hittas här:
https://en.wikipedia.org/wiki/Conditional_access
I ett nötskal, i mottagna innehållet kommer vi att skicka ECM till giltig prenumerationskort och få tillbaka dekrypteringsnyckeln. Detta innebär, tvheadend servern måste kunna kommunicera med oscam server, som måste kommunicera med kortläsaren där det finns en giltig prenumeration kort. Nu, den del som hanterar oscam kommunikation med kort och/eller fjärrservrar kommer inte att diskuteras här, det är omdebatterade på internet i flera forum.
Vi måste ställa in tvheadend skicka ECMs och begära dekrypteringsnycklarna från oscam server. Som sagt tidigare, vi använder dvapi-protokollet, men tyvärr, vi har fler varianter också här:
en) i förflutnan, Enigma2 baserade linux mottagare skapat en socket fil, vanligtvis i mappen/tmp kallas camd.socket. Genom denna uttaget CAM (ca-modul) baserade server och Enigma2 set-top-box används för att utbyta data. Detta har en nackdel: den CAM server behövs för att utföra pollning efter nya uppgifter varje gång, därför detta var inte en bra design. Dock detta hölls i evigheter, och tyvärr denna metod används ofta som exempel på olika forum. Lyckligtvis finns det bättre sätt nu, och, som framgår också på webbplatsen tvheadend, den nya som skall användas: http://docs.tvheadend.org/webui/config_caclient/... Äldre CAM servrar som CCcam endast stöd för denna metod. Modernare CAM servrar, som oscam stöder också nyare och bättre metoder.
Tyvärr, det finns också en äldre guider på internet som förvirrar användaren.
b) uttaget filen var inte en bra design, på grund av de problem som räknas upp ovan, och oscam genomförs de bättre dvbapi protokoll. Nu, det kan använda en TCP/IP baserade klient-server inställning (eller UDP, men redan deprecated) att etablera kommunikation mellan oscam och tvheadend server. I det här fallet servern skapas på oscam sida och tvheadend kommer att ansluta till det som en klient, om endast nödvändigt. Därför finns det ingen röstningen, och det bästa, oscam server kan vara på en annan maskin än tvheadend (fortfarande, det bör vara på samma nätverk och isolerade från utsidan, så det finns ingen autentiseringsmekanism som genomförs mellan dem - så vem som helst kan ansluta).
Detta innebär att även om din tvheadend server är på en annan dator, kan du begära dekodering nycklarna från oscam utan att förlora ett hopp. Humle är en del av hur oscam dela verk, också är inte i fokus i detta dokument. Om vi vill använda oscam på samma hallon, måste vi installera och konfigurera den som beskrivs i kapitlet ovan.
När du har en fungerande oscam server körs i nätverket, vi går vidare till konfigurera anslutningen med tvheadend. Detta kan göras även från oscam server web interface manu, men i slutändan måste vi sluta med följande konfiguration i oscam.conf filen: [dvbapi] aktiverad = 1 au = 1 #if du vill passera EMM data för abonnemanget uppdateringar pmt_mode = 4 request_mode = 1 listen_port = 9000 användare = dvbapi boxtype = pc
Omstart oscam, och vi bör vara beredd på serversidan oscam.
Obs: Om vi kör oscam på en annan maskin än tvheadend, vi måste se till att korrekt konfigurera brandväggen för att tillåta TCP-anslutningar på port 9000.
På tvheadend sida, Under konfigurationen -> CAs-menyn, pekar vi lägga till en ny klient för villkorad tillgång, och från listan valde CAPMT (Linux DVBAPI).
Här får vi ställa upp som i skärmdumpen bifogas detta steg.
Förklaring:
-kundens namn, kommentar kan vara allt.
-Mode: detta är den svåra biten. Använda den så kallade läge 5, eller protokollversion 2, måste vi ha en något ny oscam bygga. Stöds på det sättet också av oscam, andra metoder kommer att tas bort i framtiden. Så rekommenderas det starkt att uppgradera oscam till en nyare version, för att inte nämna att en hel del frågor togs upp i dessa. Om du fortfarande har att hålla sig till en äldre version, valde oscam tcp. Det är inte rekommenderat för att använda den gamla camd.socket metoden, därför det kommer inte att presenteras här.
-I skärmdumpen kan vi se 192.168.1.3, som på denna setup, oscam server körs på en separat dedikerad server, och den hallon tvheadend ansluter till den. I vårt fall vi kör oscam på samma maskin (dvs. RPi2), då vi kommer att använda 127.0.0.1 som värdnamn.
-Lyssna på porten skall 9000, eftersom detta är den som används i oscam server. Vi kan ändra till annat värde, men se till att porten är gratis. Vi måste också se till att vi ändrar det också på oscam sida, annars anslutningen inte upprättas.
När allt har ställts in, vi spara inställningarna och vi bör se att anslutningen är upprättad.
Obs:
1) Felsökningskonsolen längst ner på sidan kan öppnas någon gång och vi kan konsultera utdata genereras.
2) aldrig någonsin öppna 9000 porten till WAN, dvs utanför ditt lokala nätverk. Vem som helst kan ansluta till den och inte bara vi kommer inte att kunna ansluta, men främlingar kan också bedrägligt använda vår server, eller ännu värre, kontrollera att vi kör på oscam server.
När detta är inställt, bör vi kunna se kodade kanaler, på samma sätt som vi gör det på din enigma2 baserade låda.