OScam Komut Ekosistemi: Mimariye Genel Bakış
Bu bölüm, OScam’in komut yapısının temel mimarisini ve temel bileşenlerini inceleyerek, yazılımın işleyişine dair bütüncül bir anlayış sunmayı amaçlamaktadır.
Sorgunun Analizi: “OScam Komutları” Ne Anlama Gelir?
“OScam Komutları” terimi, tek bir komut satırı arayüzünden ziyade, yazılımın işlevselliğini yöneten çok katmanlı bir kontrol mimarisini ifade eder. OScam’in gücü, bu farklı kontrol katmanları arasındaki karmaşık etkileşimde yatmaktadır. Bu rapor, söz konusu komut yapısını dört ana kategoriye ayırarak inceleyecektir:
- Sistem Seviyesi Komutlar: Yazılımın derlenmesi, kurulması, çalıştırılması ve Docker gibi konteyner ortamlarında yönetilmesi için kullanılan kabuk (shell) komutları.
- Çalışma Zamanı Argümanları: OScam çalıştırılabilir dosyasına (
oscam
binary) başlangıç anında iletilen ve yapılandırma dosyalarındaki ayarları geçersiz kılabilecek veya onlara ek olarak çalışabilecek parametreler. - Yapılandırma Direktifleri: OScam’in davranışını kalıcı olarak tanımlayan,
.conf
,.server
,.user
gibi dosyalarda yer alan anahtar-değer çiftleri şeklindeki yönergeler. - Programatik Kontrol (API Çağrıları): OScam’in Web Arayüzü (WebIf) üzerinden sunduğu JSON veya XML tabanlı API’ler aracılığıyla yazılımı programatik olarak izlemek ve yönetmek için kullanılan komutlar.
Bu katmanlı yapı, yazılımın basit bir kart sunucusundan (MPCS) çok protokollü, karmaşık bir softcam’e evriminin bir yansımasıdır. Bir kullanıcının etkili bir şekilde sorun giderebilmesi için bu hiyerarşiyi ve katmanların birbirini nasıl etkilediğini anlaması kritik öneme sahiptir. Örneğin, bir başlangıç argümanı ile belirtilen bir ayar, bir yapılandırma dosyasındaki ilgili direktifi geçersiz kılabilir ki bu durum, yeni başlayanlar için yaygın bir kafa karışıklığı kaynağıdır.
Anlam Ayrımı: OScam (Softcam) ve OSCAM.UK (Drone Hizmetleri)
“OSCAM” terimi üzerine yapılan bir araştırma, Birleşik Krallık merkezli bir drone operasyonları şirketine ait sonuçlar da üretebilmektedir. Ancak, “Oscam Komutları” sorgusunun bağlamı ve mevcut teknik verilerin büyük çoğunluğu, bu raporun konusunun “Open Source Conditional Access Module” (Açık Kaynak Koşullu Erişim Modülü) yazılımı olduğunu kesin olarak ortaya koymaktadır. Dolayısıyla, bu rapor yalnızca softcam yazılımı olan OScam’e odaklanacaktır.
Çekirdek Mimari: Cardserver, Softcam ve Arayüzler
OScam, temel olarak iki ana rolü üstlenen modüler bir yapıya sahiptir: Cardserver (Kart Sunucusu) ve Softcam (Yazılım Tabanlı CAM).
- Cardserver: Bu rolünde OScam, set üstü cihazına (receiver) veya sunucuya takılı olan fiziksel akıllı kartları (smartcard) yönetir. Sağlayıcıdan gelen Yetkilendirme Yönetim Mesajlarını (EMM) işleyerek kartın aboneliğini güncel tutar ve şifrelenmiş yayınları çözmek için gerekli olan Kontrol Kelimelerini (Control Words – CW) üretir. Bu CW’leri talep eden istemcilere (softcam’ler) sunar.
- Softcam: Bu rolde OScam, şifreli bir TV yayınını izlemek isteyen bir istemci gibi davranır. Yayını çözmek için gerekli olan CW’leri bir kart sunucusundan (bu sunucu aynı cihazdaki OScam’in kendisi veya ağdaki başka bir sunucu olabilir) talep eder.
Bu çift rollü mimari, OScam’e hem tek bir cihazda yerel kart okuyucu olarak çalışma hem de ağ üzerinden başka cihazlara hizmet verme veya başka sunuculardan hizmet alma esnekliği tanır.
Kullanıcılar ve yöneticiler, bu mimariyi iki ana arayüz üzerinden kontrol eder:
- Web Arayüzü (WebIf): Kullanıcıların bir web tarayıcısı üzerinden OScam’in durumunu izlemesine, yapılandırma dosyalarını düzenlemesine, kullanıcıları ve okuyucuları yönetmesine olanak tanıyan grafiksel bir arayüzdür.
- Monitör Arayüzü: Windows veya Android gibi platformlarda çalışan özel istemci programlarının OScam’den bilgi almasını ve bazı ayarları değiştirmesini sağlayan bir arayüzdür.
Dağıtım ve Yönetim için Sistem Seviyesi Komut Referansı
Bu bölüm, OScam’in derlenmesi, kurulması ve çalıştırılması süreçlerinde kullanılan temel sistem komutlarını ve modern dağıtım yöntemlerini detaylandırmaktadır.
Debian Tabanlı Sistemlerde Kaynaktan Derleme
OScam’in en esnek kurulum yöntemi, kaynak kodundan derlemektir. Bu, özellikle standart dışı mimariler veya kaynakların kısıtlı olduğu gömülü sistemler için gereklidir. Bu süreç, belirli bağımlılıkların kurulmasını ve cmake
yapılandırma aracının kullanılmasını içerir.
Ön Koşul Kurulumu
Başarılı bir derleme işlemi için, derleyici araçları, kütüphaneler ve kaynak kod yönetim aracı gibi bir dizi paketin sisteme kurulması gerekir. Aşağıdaki komut, Debian veya Ubuntu tabanlı sistemlerde gerekli olan temel paketleri kurar :
Bash
apt-get install build-essential cmake libpcsclite-dev libssl-dev subversion dialog
Bu paketlerin her birinin özel bir rolü vardır:
build-essential
:gcc
,g++
vemake
gibi temel derleme araçlarını içerir.cmake
: Kaynak koddan platforma özgü yapılandırma dosyaları (örn. Makefile) oluşturan bir derleme sistemi aracıdır.libpcsclite-dev
: PC/SC (Personal Computer/Smart Card) standardını destekleyen USB akıllı kart okuyucularla iletişim kurmak için gereken geliştirme kütüphanelerini sağlar.libssl-dev
: HTTPS üzerinden Web Arayüzü gibi güvenli iletişim özellikleri için OpenSSL geliştirme kütüphanelerini içerir.subversion
: OScam kaynak kodunu resmi depodan indirmek için kullanılan SVN istemcisidir.dialog
:make config
komutuyla kullanılan metin tabanlı bir yapılandırma arayüzü sağlar.
Kaynak Kodunu Edinme
En güncel OScam kaynak kodu, Streamboard SVN deposundan svn checkout
komutu kullanılarak indirilir :
Bash
svn checkout http://www.streamboard.tv/svn/oscam/trunk oscam-svn
Bu komut, oscam-svn
adında bir dizin oluşturur ve en son geliştirme sürümünü bu dizine indirir. Mevcut bir kaynak kod ağacını güncellemek için tekrar checkout
komutu kullanılmamalıdır; bunun yerine, oscam-svn
dizini içindeyken svn update
komutu çalıştırılmalıdır.
CMake ile Derleme Süreci
OScam, derleme sürecini yönetmek için CMake kullanır. Derleme işlemi, kaynak kod dizininden ayrı bir “build” dizini içinde gerçekleştirilir. Bu, kaynak kodun temiz kalmasını sağlar.
Bash
cd oscam-svn
mkdir build
cd build
cmake..
cmake..
komutu, bir üst dizindeki (oscam-svn
) CMakeLists.txt
dosyasını okur ve mevcut sistem için bir Makefile oluşturur. Bu aşamada, derleme seçenekleri -D
bayrağı ile belirtilebilir. En yaygın kullanılan seçenek, Web Arayüzünü etkinleştiren -DWEBIF=1
seçeneğidir. OScam’in modüler yapısı, bu derleme aşamasında hangi özelliklerin dahil edileceğini belirlemeye olanak tanır. Örneğin, kaynakların çok kısıtlı olduğu bir yönlendirici (router) gibi bir cihaz için, Web Arayüzü veya kullanılmayan kart okuyucu modülleri devre dışı bırakılarak çok daha küçük ve verimli bir çalıştırılabilir dosya elde edilebilir. Bu, config.sh
betiği veya make config
komutu aracılığıyla yapılabilen ileri düzey bir optimizasyon tekniğidir.
Derleme ve Kurulum
Yapılandırma dosyaları oluşturulduktan sonra, make
komutu ile derleme işlemi başlatılır. Kurulum için ise make install
komutu kullanılır.
Bash
make
make install
Bu komutlar, oscam
adlı çalıştırılabilir dosyayı derler ve genellikle /usr/local/bin
dizinine kopyalar. Son olarak, dosyanın çalıştırılabilir olduğundan emin olmak için izinleri ayarlanmalıdır :
Bash
chmod 755 /usr/local/bin/oscam
Docker ile Konteynerize Dağıtım
Modern sunucu yönetimi yaklaşımları, bağımlılık yönetimi ve derleme karmaşıklığını ortadan kaldıran konteynerizasyonu tercih etmektedir. OScam için, LinuxServer.io tarafından sağlanan Docker imajı popüler ve güvenilir bir çözümdür. Bu yöntem, özellikle standart x86-64 veya ARM64 mimarilerinde hızlı ve tekrarlanabilir bir kurulum sunar.
docker run
Komutu
OScam konteynerini çalıştırmak için kullanılan temel docker run
komutu, port yönlendirmesi, yapılandırma dosyaları için kalıcı depolama ve donanım erişimi gibi kritik ayarları içerir :
Bash
docker run -d \
--name=oscam \
-p 8888:8888 \
-v /path/to/oscam/config:/config \
--device /dev/ttyUSB0:/dev/ttyUSB0 \
--restart unless-stopped \
lscr.io/linuxserver/oscam:latest
Bu komutun dökümü:
-p 8888:8888
: Konteyner içindeki OScam Web Arayüzü portunu (sağdaki) ana makinenin 8888 portuna (soldaki) yönlendirir.-v /path/to/oscam/config:/config
: Ana makinedeki bir dizini, konteyner içindeki/config
dizinine bağlar. Bu,oscam.conf
gibi yapılandırma dosyalarının konteyner yeniden başlatıldığında veya güncellendiğinde kaybolmamasını sağlar.--device /dev/ttyUSB0:/dev/ttyUSB0
: Ana makineye bağlı bir USB akıllı kart okuyucuyu (/dev/ttyUSB0
) konteyner içine aktarır, böylece OScam donanıma erişebilir.
docker-compose
Yapılandırması
Daha karmaşık veya birden fazla servisin olduğu ortamlar için docker-compose
kullanmak daha pratiktir. Aşağıdaki docker-compose.yml
dosyası, docker run
komutuyla aynı yapılandırmayı deklaratif bir formatta tanımlar :
YAML
version: "3.8"
services:
oscam:
image: lscr.io/linuxserver/oscam:latest
container_name: oscam
environment:
- PUID=1000
- PGID=1000
- TZ=Etc/UTC
volumes:
- /path/to/oscam/config:/config
ports:
- 8888:8888
devices:
- /dev/ttyUSB0:/dev/ttyUSB0
restart: unless-stopped
Yönetim Komutları
Çalışan OScam konteynerini yönetmek için standart Docker komutları kullanılır :
- Logları Görüntüleme:
docker logs -f oscam
- Konteyner İçinde Kabuk Başlatma:
docker exec -it oscam /bin/bash
- Durdurma ve Kaldırma:
docker stop oscam
vedocker rm oscam
- Güncelleme:
docker pull lscr.io/linuxserver/oscam:latest
Çalıştırılabilir Dosya Argümanları
OScam çalıştırılabilir dosyası, başlatma sırasında bir dizi komut satırı argümanı kabul eder. Bu argümanlar, özellikle sorun giderme ve geçici yapılandırma değişiklikleri için son derece kullanışlıdır. En önemlisi, bu argümanlar oscam.conf
dosyasındaki ilgili ayarları geçersiz kılar. Aşağıdaki tablo, FreeBSD man sayfasından alınan en yaygın kullanılan argümanları özetlemektedir.
Argüman | Açıklama |
-a , --crash-dump | Bir segmentasyon hatası (segfault) durumunda oscam.crash döküm dosyası oluşturur. GDB kurulu olmasını gerektirir. |
-b , --daemon | OScam’i arka planda başlatır ve geçici bir dizine başlangıç zamanı ve sürüm bilgilerini içeren oscam.version dosyasını yazar. |
-B , --pidfile <dosyaadı> | PID (Process ID) dosyasını belirtir. Bu, oscam.conf içindeki pidfile ayarını geçersiz kılar. |
-c , --config-dir <dizin> | Yapılandırma dosyalarının okunacağı dizini belirtir. Varsayılan dizini geçersiz kılar. |
-d , --debug <seviye> | Hata ayıklama (debug) seviyesini bir maske değeri olarak ayarlar. Her bit farklı bir bileşeni temsil eder (örn: 2=ECM, 8=İstemci trafiği, 64=EMM, 128=DVBAPI). 65535 tüm hata ayıklama mesajlarını etkinleştirir. |
-h , --help | Kullanım bilgilerini ve mevcut argümanların bir listesini gösterir. |
-r , --restart <seviye> | Yeniden başlatma davranışını kontrol eder. 0 : devre dışı, 1 : WebIf’ten yeniden başlatmaya izin verir (varsayılan), 2 : segmentasyon hatalarında da otomatik yeniden başlatır. |
-S , --show-sensitive | Loglarda kart seri numaraları gibi hassas bilgilerin filtrelenmesini engeller. |
-V , --build-info | OScam sürüm ve derleme bilgilerini gösterir. |
-w , --wait <saniye> | Başlangıçta sistem saatinin doğru şekilde ayarlanması için belirtilen saniye kadar bekler. |
E-Tablolar’a aktar
Çekirdek Yapılandırma Direktifleri: Derinlemesine Bir İnceleme
OScam’in işleyişi, üç temel yapılandırma dosyası tarafından yönetilir: oscam.conf
(genel ayarlar), oscam.server
(okuyucular) ve oscam.user
(kullanıcılar). Bu dosyalar, tek başlarına değil, birbiriyle ilişkili bir sistem olarak çalışır. Bu sistemin temelini, kullanıcıları okuyuculara bağlayan group
parametresi oluşturur. Bir kullanıcının bir okuyucudan anahtar talep edebilmesi için, her ikisinin de en az bir ortak gruba atanmış olması gerekir. Bu ilişkisel model, OScam’de erişim kontrolünü yönetmenin temel konseptidir.
Global Sunucu Yapılandırması (oscam.conf
)
oscam.conf
, sunucunun genel davranışını, ağ arayüzlerini ve ana modüllerini kontrol eden merkezi yapılandırma dosyasıdır.
[global]
Bölümü
Bu bölüm, sunucunun temel çalışma parametrelerini içerir. En kritik direktiflerden bazıları şunlardır:
logfile
: Log mesajlarının yazılacağı dosyayı,syslog
‘u veya standart çıktıyı (stdout
) belirtir. Örnek:logfile = /var/log/oscam.log;syslog
.pidfile
: OScam’in işlem kimliğini (PID) saklayacağı dosyayı tanımlar. Servis yönetimi için önemlidir.clienttimeout
: Bir istemciden cevap alınamadığında bağlantının ne kadar süre sonra zaman aşımına uğrayacağını milisaniye cinsinden belirler.fallbacktimeout
: Birincil okuyucudan cevap alınamadığında yedek (fallback) bir okuyucuya ne kadar süre sonra geçileceğini belirler.nice
: OScam işleminin sistem önceliğini ayarlar.-20
(en yüksek öncelik) ile+20
(en düşük öncelik) arasında bir değer alır.
[webif]
Bölümü
Bu bölüm, tarayıcı tabanlı yönetim arayüzü olan WebIf’in ayarlarını kontrol eder :
httpport
: Web arayüzünün dinleyeceği TCP portunu belirtir. Genellikle 8888 veya 8081 gibi değerler kullanılır.httpuser
: Web arayüzüne giriş için kullanılacak kullanıcı adını belirler.httppwd
: Belirtilen kullanıcı için parolayı ayarlar.httpallowed
: Güvenlik için en kritik parametrelerden biridir. Yalnızca belirtilen IP adreslerinin veya IP aralıklarının Web arayüzüne bağlanmasına izin verir. Örnek:httpallowed = 127.0.0.1,192.168.0.0-192.168.255.255
.
[dvbapi]
Bölümü
Bu bölüm, OScam’in doğrudan set üstü cihazının DVB donanımıyla (tuner) iletişim kurmasını sağlayan DVB-API modülünü yapılandırır.
enabled
: DVB-API modülünü etkinleştirmek için1
olarak ayarlanır.user
: DVB-API istemcisi olarak hareket edecek olan veoscam.user
dosyasında tanımlanmış olan kullanıcıyı belirtir.boxtype
: Kullanılan set üstü cihazının türünü belirtir. Bu ayar, OScam’in cihazla nasıl iletişim kuracağını belirler. Olası değerler arasındadreambox
,vuplus
,pc
,pc-nodmx
bulunur.pmt_mode
: Program Map Table (PMT) dosyasının nasıl işleneceğini belirler. Farklıboxtype
ve sürücü kombinasyonları farklı modlar gerektirebilir.
Okuyucu ve Proxy Yapılandırması (oscam.server
)
oscam.server
dosyası, OScam’in şifre çözme anahtarlarını nereden alacağını tanımlar. Bu kaynaklara “okuyucu” (reader) denir. OScam mimarisinin güçlü bir yönü, hem fiziksel donanımları (kart okuyucular) hem de ağ üzerindeki diğer sunucuları (proxy’ler) tek bir “okuyucu” soyutlaması altında birleştirmesidir. Hangi tür kaynağın kullanıldığı, yalnızca protocol
parametresi ile belirlenir. Bu, yerel kartları birden çok farklı protokole sahip uzak sunucularla sorunsuz bir şekilde birleştiren hibrit ve esnek yapılandırmalara olanak tanır.
[reader]
Bloğu Yapısı
Her okuyucu, [reader]
ile başlayan bir blok içinde tanımlanır. Tüm okuyucular için ortak olan temel parametreler şunlardır :
label
: Okuyucu için benzersiz ve açıklayıcı bir isim.enable
: Okuyucuyu etkinleştirmek (1
) veya devre dışı bırakmak (0
) için kullanılır.protocol
: Okuyucunun kullanacağı protokolü belirtir. Bu, okuyucunun türünü (fiziksel veya ağ) belirleyen en önemli parametredir.group
: Okuyucuyu bir veya daha fazla gruba atar. Bu,oscam.user
dosyasındaki kullanıcılarla eşleştirme yapmak için kullanılır.
Fiziksel Okuyucu Yapılandırması
Fiziksel bir akıllı kart okuyucusu yapılandırılırken kullanılan yaygın protokoller ve parametreler şunlardır :
- Protokoller:
internal
: Dreambox gibi cihazların dahili kart okuyucuları için.mouse
/smartreader
: Phoenix/Smartmouse uyumlu seri veya USB okuyucular için.pcsc
: PC/SC standardını destekleyen USB okuyucular için.
- Parametreler:
device
: Okuyucunun sistemdeki aygıt yolunu belirtir. Örnek:/dev/sci0
(dahili okuyucu) veya/dev/ttyUSB0
(USB okuyucu).mhz
/cardmhz
: Okuyucunun ve kartın çalışma frekansını ayarlar. Bazı kartlar için hız aşırtma (overclocking) veya kararlılık için bu değerlerin ayarlanması gerekebilir.
Ağ Proxy Yapılandırması
Başka bir OScam veya farklı bir sunucu yazılımına (örn. CCcam) bağlanmak için bir ağ proxy okuyucusu yapılandırılır :
- Protokoller:
cccam
,newcamd
,camd35
. - Parametreler:
device
: Sunucunun IP adresini veya alan adını ve port numarasını virgülle ayırarak belirtir. Örnek:server.domain.com,12000
.user
: Uzak sunucuya bağlanmak için kullanılacak kullanıcı adı.password
: Belirtilen kullanıcı için parola.
Karta Özgü Direktifler
Bazı şifreleme sistemleri, kartın düzgün çalışması için ek parametreler gerektirir. Örneğin, Nagra ve bazı Irdeto sistemleri için boxkey
ve rsakey
parametrelerinin doğru bir şekilde girilmesi zorunludur.
Kullanıcı ve Güvenlik Yönetimi (oscam.user
)
oscam.user
dosyası, OScam sunucusuna bağlanacak istemcilerin (kullanıcıların) kimlik bilgilerini ve yetkilerini tanımlar. Her kullanıcı bir [account]
bloğu içinde yapılandırılır.
[account]
Bloğu
Bir kullanıcı hesabının temel ve gelişmiş ayarları bu blokta yer alır :
user
: Kullanıcı adı.pwd
: Parola.group
: Kullanıcının ait olduğu grupları virgülle ayırarak belirtir. Bu, kullanıcının hangi okuyuculara erişebileceğini belirler.hostname
: Güvenliği artırmak için, kullanıcının yalnızca belirtilen IP adresinden veya ana bilgisayar adından bağlanmasına izin verir.services
: Kullanıcının erişebileceği kanalları (servisleri) sınırlar. Bu,oscam.services
dosyasında tanımlanan servis gruplarına referans verir.caid
/ident
: Kullanıcının yalnızca belirli CAID (Conditional Access ID) ve Provider ID’lere sahip kanalları talep etmesine izin verir.
Anti-Cascading Yapılandırması
Anti-cascading, bir kullanıcının aldığı erişimi yetkisiz bir şekilde başka kullanıcılarla paylaşmasını (resharing) engellemeye yönelik bir mekanizmadır. İlgili parametreler şunlardır :
numusers
: Bir hesabın aynı anda kaç farklı istemciden kullanılabileceğini belirler.penalty
:numusers
limiti aşıldığında uygulanacak cezayı belirler. Seçenekler arasında yalnızca loglama (0
), sahte CW gönderme (1
) veya hesabı geçici olarak devre dışı bırakma (2
) bulunur.
Gelişmiş Modüller ve Performans Ayarları
OScam, basit bir sunucunun ötesine geçerek, çoklu okuyucu ortamlarında performansı optimize etmek ve özel kullanım senaryolarını desteklemek için gelişmiş modüller sunar. Bu modüller, yüksek performanslı bilgi işlem ve içerik dağıtım ağlarında (CDN) görülen ilkelere benzer şekilde çalışır. Yük Dengeleyici (Load Balancer) ve Önbellek Değişimi (Cache Exchange), OScam’i tek bir sunucudan dağıtık bir şifre çözme sistemine dönüştürür.
Yük Dengeleyicide Uzmanlaşma
Çok sayıda okuyucunun (yerel kartlar veya uzak proxy’ler) bulunduğu bir sistemde, gelen tüm istekleri tek bir okuyucuya yönlendirmek, o kaynağın aşırı yüklenmesine ve yanıt sürelerinin artmasına neden olur. Yük dengeleyici, bu istekleri akıllıca dağıtarak performansı optimize eder.
lb_mode
Parametresi
oscam.conf
dosyasındaki [global]
bölümünde yer alan lb_mode
parametresi, yük dengeleme algoritmasını belirler :
- Mode 0: Yük dengeleme devre dışıdır. Bir ECM isteği, uygun tüm okuyuculara gönderilir.
- Mode 1: En hızlı okuyucu önceliklidir. OScam, istatistiklere dayanarak en düşük yanıt süresine sahip okuyucuyu seçer.
- Mode 2: Yerel kartları tercih et. İstekler önce yerel (fiziksel) okuyuculara gönderilir, cevap alınamazsa ağ proxy’lerine yönlendirilir.
- Mode 3: En düşük kullanım seviyesi. İstekler, o an en az meşgul olan (en az istek alan) okuyucuya yönlendirilir.
- Mode 10: CAID ve sağlayıcı bilgilerini kullanarak en uygun okuyucuyu bulmaya çalışır.
Yük Dengeleyici İstatistiklerini Yorumlama
OScam, her okuyucunun performansı hakkında ayrıntılı istatistikler tutar. Bu istatistikler, Web Arayüzü üzerinden veya lb_savepath
ile belirtilen dosyadan (lb_stat
) incelenebilir. ECM yanıt süreleri, bulunan (ok
), bulunamayan (not found
) ve zaman aşımına uğrayan (timeout
) isteklerin sayısı gibi metrikler, sistemin sağlığı hakkında önemli bilgiler verir. Bu veriler, oscam.server
dosyasındaki her okuyucu için lb_weight
parametresini ayarlayarak yük dengeleme algoritmasına ince ayar yapmak için kullanılabilir. Daha yüksek bir lb_weight
değeri, OScam’in o okuyucuyu daha fazla tercih etmesine neden olur.
Önbellek Değişimi (cacheex
) ile Optimizasyon
Cache Exchange, bir OScam sunucusunun daha önce çözdüğü bir kanalın CW’sini (şifre çözme anahtarı) kendi önbelleğinde saklaması ve bu bilgiyi diğer OScam sunucularıyla (peer’ler) paylaşması prensibine dayanır. Bu, aynı kanalı talep eden başka bir kullanıcı için fiziksel karta veya uzak sunucuya tekrar istek gönderilmesini engelleyerek hem kart üzerindeki yükü azaltır hem de yanıt süresini önemli ölçüde düşürür.
Cache Exchange Modlarının Açıklaması
Cache Exchange’in üç ana çalışma modu bulunur ve bu modlar, oscam.server
içindeki okuyucu ve oscam.user
içindeki kullanıcı ayarlarında cacheex
parametresi ile yapılandırılır :
- Mode 1 (Pull – Çekme): İstemci (OScam A), sunucunun (OScam B) önbelleğinden bir CW talep eder. Eğer CW, OScam B’nin önbelleğinde varsa gönderilir. Yoksa, istek reddedilir ve OScam B kendi kartlarına veya proxy’lerine sormaz.
- Mode 2 (Push – İtme): Sunucu (OScam B), kendi önbelleğindeki CW’leri proaktif olarak istemciye (OScam A) gönderir. İstemci, bu CW’leri kendi önbelleğine alır ve gerektiğinde kullanır.
- Mode 3 (Reverse Push – Ters İtme): Her iki sunucu da birbirine hem istemci hem de sunucu olarak davranır. Her ikisi de kendi önbelleklerini birbirine iter. Bu, en yaygın ve güçlü yapılandırmalardan biridir ve karşılıklı bir önbellek paylaşım ağı oluşturur.
Önbellek Performans Ayarları
oscam.conf
dosyasındaki [cache]
bölümünde yer alan parametreler, önbelleğin davranışını ve kaynak kullanımını kontrol eder :
max_cache_time
: Bir CW’nin önbellekte ne kadar süre (saniye cinsinden) kalacağını belirler. Düşük değerler önbelleğin daha taze kalmasını sağlarken, yüksek değerler isabet oranını (hit rate) artırabilir.max_cache_count
: Önbellekte saklanabilecek maksimum CW sayısını belirler. Bu değer, OScam’in bellek kullanımı üzerinde doğrudan bir etkiye sahiptir.
Emülatör Komut Seti (OSCam-Emu)
OSCam-Emu, standart OScam kaynak koduna uygulanan bir yama veya bu yamayı içeren bir çatal (fork) sürümdür. Temel işlevi, fiziksel bir akıllı kart veya uzak bir sunucu olmadan, bir anahtar dosyasından (SoftCam.Key
) okunan anahtarları kullanarak şifreli yayınları çözme yeteneği eklemektir. Bu, OScam’e bir “emülatör” işlevi kazandırır. Bu özelliğin kullanımı, yayıncıların abonelik sözleşmelerine aykırı olabilir ve yasal sonuçlar doğurabilir.
Emu Okuyucu Yapılandırması
OSCam-Emu kullanıldığında, oscam.server
dosyasına sanal bir “emülatör” okuyucusu eklenir. Bu okuyucu, SoftCam.Key
dosyasını okumak üzere yapılandırılır.
SoftCam.Key
Dosya Formatı
SoftCam.Key
dosyası, farklı şifreleme sistemleri için anahtarları içeren basit bir metin dosyasıdır. Her sistemin kendi anahtar formatı vardır :
- BISS: Sabit anahtarlı kanallar için kullanılır. Formatı genellikle şu şekildedir:
F <service_id><ecm_pid> <key_number> <key>
F
: Anahtar türünün BISS olduğunu belirtir.<service_id>
: Kanalın Servis ID’si (hex).<ecm_pid>
: Kanalın ECM PID’i (hex).<key_number>
: Genellikle00
veya01
.<key>
: 16 haneli (8 byte) onaltılık anahtar.
- PowerVu: Bu sistem için format biraz daha farklıdır ve genellikle otomatik güncelleme (AU) mekanizmalarıyla birlikte kullanılır. Anahtar formatı şöyledir:
P <group_id><srvid> <key_number> <key>
P
: Anahtar türünün PowerVu olduğunu belirtir.<group_id>
: Aynı servis ID’sine sahip kanalları ayırt etmek için kullanılan bir grup kimliği.<srvid>
: Kanalın Servis ID’si (hex).<key_number>
:00
(çift) veya01
(tek) anahtar.<key>
: ECM anahtarı.
Güvenlik ve Programatik Kontrol
OScam sunucusunun güvenliği ve otomasyonu, hem dahili yapılandırma direktifleri hem de harici araçlarla sağlanır. OScam’in güvenlik modeli, yöneticiye güvenen ancak kötü niyetli dış aktörlere karşı savunma mekanizmaları sunan bir yapıya sahiptir.
OScam Ortamını Güvenli Hale Getirme
Bir OScam kurulumunun güvenliğini sağlamak, uygulama içi ayarları yapılandırmayı ve sunucunun çalıştığı işletim sistemini güçlendirmeyi içerir.
Web Arayüzü Güvenliği
OScam Web Arayüzü (WebIf), sunucunun tam kontrolünü sağladığı için birincil saldırı vektörlerinden biridir. Güvenliği için aşağıdaki adımlar zorunludur:
- Güçlü Kimlik Bilgileri:
oscam.conf
dosyasındaki[webif]
bölümündehttpuser
vehttppwd
için tahmin edilmesi zor, karmaşık parolalar kullanılmalıdır. - IP Kısıtlaması:
httpallowed
parametresi, WebIf’e yalnızca güvenilir IP adreslerinden veya yerel ağdan erişilebilecek şekilde yapılandırılmalıdır. Örneğin:127.0.0.1,192.168.1.0-192.168.1.255
. - İnternete Maruz Bırakmama: En önemli güvenlik önlemi, WebIf portunu asla doğrudan internete açmamaktır. Uzaktan erişim gerekiyorsa, bu mutlaka bir VPN (Sanal Özel Ağ) tüneli üzerinden yapılmalıdır. OScam’in dahili web sunucusu, internetten gelebilecek saldırılara karşı güçlendirilmemiştir ve ağ düzeyinde korumaya dayanır.
Fail2ban ile Kaba Kuvvet Saldırılarına Karşı Koruma
Fail2ban, sunucu log dosyalarını izleyerek şüpheli etkinlikleri (örneğin, tekrarlanan hatalı giriş denemeleri) tespit eden ve bu etkinliklerin kaynaklandığı IP adreslerini sistem güvenlik duvarı (firewall) aracılığıyla otomatik olarak engelleyen bir yazılımdır. OScam ile entegrasyonu, WebIf arayüzünü kaba kuvvet saldırılarına karşı korur.
- OScam’i Yapılandırma:
oscam.conf
dosyasının[global]
bölümünde, hatalı giriş denemelerini loglamak ve bir yasaklama süresi belirlemek içinfailbancount
vefailbantime
parametreleri ayarlanır. - Fail2ban Filtresi Oluşturma:
/etc/fail2ban/filter.d/oscam.conf
gibi bir dosyada, OScam’in log dosyasındaki hatalı giriş denemesi satırlarını tanıyacak bir düzenli ifade (regex) tanımlanır. - Fail2ban Hapishanesi (Jail) Oluşturma:
/etc/fail2ban/jail.local
dosyasına, OScam için yeni bir “jail” eklenir. Bu bölüm, oluşturulan filtreyi, izlenecek log dosyasının yolunu (/var/log/oscam.log
gibi) ve yasaklama eylemini tanımlar.
Kullanıcı Hesaplarını Güçlendirme
oscam.user
dosyasındaki ince ayarlar, güvenliği önemli ölçüde artırabilir:
- Hostname Kısıtlaması: Her
[account]
bloğundakihostname
parametresi, o kullanıcının yalnızca belirli bir IP adresi veya DNS adından bağlanmasına izin vererek hesap hırsızlığı riskini azaltır. - Reshare Kontrolü: CCcam protokolü kullanılıyorsa,
cccmaxhops
parametresini düşük bir değere (örneğin1
veya2
) ayarlamak, kullanıcının aldığı erişimi kontrolsüz bir şekilde daha fazla kişiye yaymasını engeller.
WebIf API ile Etkileşim
OScam, resmi olarak kapsamlı bir şekilde belgelenmemiş olsa da, otomasyon ve izleme için güçlü bir JSON tabanlı API sunar. Bu API’nin yapısı, kaynak kodunu inceleyerek ve WebIf’in çalışma mantığını analiz ederek ortaya çıkarılabilir.
API’yi Keşfetme
Streamboard proje sayfaları, bir “WebIf ve XMLApi”nin varlığını doğrular. OScam kaynak kodunun webif
dizini incelendiğinde, api.json
ve api.xml
gibi alt dizinler ve bu dizinlerde status.json
, reader.json
, user.json
gibi şablon dosyaları bulunur. Bu yapı, API’nin modüler olduğunu ve farklı veri türleri için ayrı uç noktalara sahip olduğunu göstermektedir.
JSON API Uç Noktaları ve Kullanımı
Bu dosya yapısından yola çıkarak, API’nin temel sorgu formatının http://<oscam_ip>:<port>/api.json?part=<bölüm>
şeklinde olduğu anlaşılabilir.
- Durum Bilgisi: Sunucunun genel durumunu, bağlı istemcileri ve logları almak için:
curl --user "kullanici:parola" "http://127.0.0.1:8888/api.json?part=status"
- Okuyucu Bilgisi: Tüm okuyucuların durumunu ve istatistiklerini almak için:
curl --user "kullanici:parola" "http://127.0.0.1:8888/api.json?part=reader"
Bu komutlar, sunucu durumunu izleyen özel panolar (dashboard) veya harici izleme sistemleri (örneğin Nagios, Zabbix) için komut dosyaları oluşturmak amacıyla kullanılabilir.
API Eylemleri
Veri çekmenin yanı sıra, API belirli eylemleri tetiklemek için de kullanılabilir. Bu eylemler genellikle action
parametresi ile URL üzerinden tetiklenir. module-webif.c
kaynak kodunun analizi, aşağıdaki gibi eylemlerin varlığını ortaya çıkarabilir :
- Sunucuyu Yeniden Başlatma:
http://.../shutdown.html?action=restart
- Kullanıcıları Yeniden Yükleme:
http://.../userconfig.html?action=reinit
- Sunucuyu Kapatma:
http://.../shutdown.html?action=shutdown
Bu uç noktalar, OScam’i programatik olarak yönetmek, örneğin bir çökme durumunda otomatik yeniden başlatma betikleri oluşturmak veya yapılandırma değişikliklerinden sonra kullanıcı veritabanını yeniden yüklemek için kullanılabilir.
Sonuç ve En İyi Uygulamalar
Bu rapor, “OScam Komutları” teriminin çok katmanlı yapısını analiz ederek, sistem seviyesi yönetimden çalışma zamanı argümanlarına, çekirdek yapılandırma direktiflerinden gelişmiş modüllere kadar OScam’in kontrol mimarisini kapsamlı bir şekilde incelemiştir.
Komutların Sentezi ve Öncelik Sırası
OScam’in kontrol hiyerarşisi açıktır: Başlatma sırasında kullanılan Çalıştırma Zamanı Argümanları, kalıcı Yapılandırma Dosyalarındaki direktiflere göre önceliklidir. Örneğin, -c /yeni/dizin
argümanı ile başlatılan bir OScam, oscam.conf
dosyasında ne yazarsa yazsın, yapılandırma dosyalarını /yeni/dizin
içinde arayacaktır. Bu öncelik sırasını anlamak, sorun gidermenin temel adımıdır.
Kararlılık için Önerilen Yapılandırma
Genel amaçlı ve kararlı bir OScam kurulumu için aşağıdaki temel yapılandırma prensipleri önerilmektedir:
- Loglama:
logfile
parametresi ile logları kalıcı bir dosyaya yazdırın vemaxlogsize
ile log dosyasının aşırı büyümesini engelleyin. - Zaman Aşımları:
clienttimeout
vefallbacktimeout
için makul değerler (örneğin, sırasıyla 5000ms ve 2500ms) belirleyerek yanıt vermeyen istemcilerin veya okuyucuların sistemi meşgul etmesini önleyin. - Kullanıcı Yönetimi: Her kullanıcı için
group
ataması yapın veuniq = 1
parametresi ile aynı hesabın birden fazla yerden kullanılmasını engelleyerek temel güvenliği sağlayın.
Performans için Önerilen Yapılandırma
Yüksek trafikli veya çok sayıda okuyucunun bulunduğu ortamlar için performans odaklı ayarlar şunları içerir:
- Yük Dengeleme:
lb_mode = 1
(en hızlı okuyucu) genellikle en iyi zapping (kanal geçiş) süresini sağlar. Okuyucu istatistiklerini (lb_stat
) düzenli olarak izleyerek velb_weight
parametresini ayarlayarak performansı optimize edin. - Önbellek Değişimi (Cache Exchange): Birden fazla OScam sunucusu çalıştırılıyorsa,
cacheex = 3
modunu kullanarak karşılıklı bir önbellek ağı kurmak, kartlar üzerindeki yükü önemli ölçüde azaltır ve yanıt sürelerini iyileştirir.max_cache_time
vemax_cache_count
değerlerini, sistemin bellek kapasitesini göz önünde bulundurarak ayarlayın. - Optimize Edilmiş Derleme: Gömülü sistemlerde, kullanılmayan protokolleri, okuyucu modüllerini ve hatta Web Arayüzünü derleme sırasında devre dışı bırakarak kaynak kullanımını en aza indirin.
Güvenlik için Önerilen Yapılandırma
Bir OScam kurulumunu güvence altına almak için aşağıdaki adımlar bir kontrol listesi olarak uygulanmalıdır:
- Web Arayüzü Erişimi:
httpallowed
parametresini yalnızca yerel ağınızı kapsayacak şekilde ayarlayın. - Güçlü Parolalar:
httppwd
ve tüm kullanıcı hesapları (pwd
) için güçlü ve benzersiz parolalar kullanın. - Harici Erişim: Web Arayüzünü asla doğrudan internete açmayın. Uzaktan erişim için bir VPN kurun.
- Fail2ban Entegrasyonu: Web Arayüzünü kaba kuvvet saldırılarına karşı korumak için Fail2ban’ı yapılandırın.
- Kullanıcı Kısıtlamaları:
hostname
,services
vecaid
parametrelerini kullanarak her kullanıcının erişimini yalnızca ihtiyaç duyduğu kaynaklarla sınırlayın.
OScam ve Kart Paylaşımının Geleceği
OScam projesi, aktif geliştirme faaliyetleriyle varlığını sürdürmektedir. Ancak, yayıncılık endüstrisi, geleneksel akıllı kart tabanlı sistemlerden uzaklaşarak kartız (cardless) çözümlere ve daha güçlü şifreleme yöntemlerine yönelmektedir. Tehditler, akıllı kart hack’lemekten, internet üzerinden anahtar paylaşımı (key-sharing) ve yasa dışı akış (illegal streaming) gibi daha karmaşık yöntemlere evrilmiştir. Bu değişim, OScam gibi yazılımların gelecekteki rolünü ve adaptasyon yeteneğini şekillendirecektir. Yazılımın modüler yapısı ve aktif topluluğu, bu yeni güvenlik önlemlerine karşı adaptasyon potansiyeli taşısa da, endüstrinin kartız ve bulut tabanlı güvenlik modellerine geçişi, geleneksel kart paylaşımı yöntemlerinin etkinliğini zamanla azaltabilir.