CI Vergleiche unofizieller Module

Das ist das Onys CI Modul

Das Unicam CI Modul

Das Alpha Crypt 2.2

Vergleich: Unicam CI vs. Onys CAM CI vs. AlphaCrypt 2.2

MerkmalUnicam CIOnys CAM CIAlphaCrypt 2.2 (XCAM09)
Flash-SpeichercFeon EN29LV320BB-70TIP (32Mbit, 4MB)cFeon EN29LV320BB-70TIP (32Mbit, 4MB)Spansion S29GL032N90TFI03 (32Mbit, 4MB)
Prozessor (Controller)OPUS SN0803OPUS SN0803OPUS SN0803
RAM-SpeicherHynix SDRAM HY57V641620FTP-H (8MB)RAMTRON FM25040A (4kbit FRAM)PMS036416BTR-6CN (16MB SDRAM)
Smartcard-Slot1x Kartenschacht1x Kartenschacht1x Kartenschacht
BesonderheitenUniversell programmierbar, offene Firmware (Troja etc.)Stabileres Layout, FRAM-Speicher (schneller, ausfallsicher)Professionelles Modul, hoher RAM-Ausbau (16MB), robustes Design
UpdatefähigkeitJa, über ProgrammerJa, über ProgrammerJa, Update über CI-Schacht möglich (z. B. AlphaCrypt Loader)
EinsatzgebieteBreiter Einsatz (Satellit, Kabel, Privatanwender)Speziellere Setups, robustere UmgebungSehr verbreitet bei Pay-TV-Systemen, auch für Dual-Entschlüsselung
SteckverbinderStandard CI (68-polig)Standard CI (68-polig)Standard CI (68-polig)

Was fällt besonders auf?

  • Unicam:
    • Flexibel und günstig, perfekt für Benutzer, die verschiedene CAM-Firmware flashen möchten.
    • Hardware relativ einfach, aber zuverlässig.
  • Onys CAM:
    • Fast baugleich mit Unicam, aber FRAM statt SDRAM → Vorteil: höhere Robustheit bei häufigem Zugriff.
    • Etwas stabilere Konstruktion, möglicherweise zielgerichtet auf spezielle Märkte oder professionelle Anwendungen.
  • AlphaCrypt 2.2:
    • Deutlich höherwertige Bestückung: Spansion-Flash, OPUS SN0803, schneller 16MB SDRAM.
    • Sehr robust, geeignet für Pay-TV- und professionelle Netzwerke (z. B. Krankenhäuser, Hotels).
    • Häufige Verwendung bei Systemen wie HD+, Sky, Kabel Deutschland (mit legalen Modulversionen).

🛠️ Technische Zusammenfassung:

  • OPUS Controller Familie: Wird in allen drei Modulen verwendet, wobei die neuere Generation SN0803 auch Dual-CA-Streams besser unterstützt.
  • Flash-Größe: Alle drei etwa gleich (4MB).
  • RAM:
    • Unicam → Standard-SDRAM.
    • Onys → FRAM (für mehr Robustheit).
    • AlphaCrypt → High-End SDRAM (großzügig dimensioniert).
  • Programmierbarkeit:
    • Unicam und Onys sind stark für private Modifikationen genutzt worden (z. B. alternative CA-Software).
    • AlphaCrypt hatte lange Zeit „offizielle Updates“ durch Mascom, Updates wie One4All (z.B. Multi-CAS) waren möglich.

Was fällt noch auf ? Das PCB Design bzw. die Revision 01,03,09

Alle diese alten Maxcam, OnysCam,Unicam und das Alphacrypt sind vom gleichen Hersteller.

OPUS Taiwan

Es wird kein Revers-Engineering , es ist ein Hardware vergleich und wie sich die Module unterscheiden! Es wurde keine Software Dekompiliert oder sonstiges!

Mascom hat seit Anfang an erstklassige Arbeit geleistet und dem Verbraucher alle Türen aufgelassen, wie damals diese blöde Pinabfrage oder das man auch Aufzeichnen konnte. Herrn Gruber danke für die schöne Zeit und alles gute. Das Alphacrypt wurde schon damals als Allrounder bezeichnet und sogar als Schweizertaschenmesser unter den CI Modulen. Mascom hat Europa mit einem legalen ALL IN ONE Modul ausgestatet und die Softwareupdates kamen all die Jahre per OTA.

Das SMC Die (Chip)

Bei dem OPUS 0803 speziell ist die Strucktur so:

BereichWo ist was
0x000000 – 0x00FFFFBootloader (evtl. sehr kompakt, lädt Hauptfirmware)
0x010000 – 0x1FFFFFHauptfirmware (Firmware + Menüsystem + CI-Handling)
0x200000 – 0x7FFFFFReservebereiche, CRC-Blöcke, Mirrorbereiche, evtl. Recovery Codes

Interpretation:

  • Der Bootloader initialisiert vermutlich den OPUS SN0803 Controller:
    • Initiales RAM Setup.
    • Grundlegendes CI-Handshake.
    • Laden der Hauptfirmware aus Flash in SDRAM.
  • Danach übernimmt die Firmware:
    • Verwalten der CI-Sessions.
    • Entschlüsseln von ECM/EMM.
    • Steuern der Smartcard.
    • Verwaltung der Benutzeroberfläche („PIN erforderlich“, „Dauer“, „Preis“, „Service Center“).
  • Dual-ECM-Fähigkeit (zwei Programme entschlüsseln) wird sehr wahrscheinlich über getrennte CA-Sessions innerhalb dieser Firmware umgesetzt.
Bereich (Hex)GrößeInhaltAnalyse
0x000000 – 0x01FFFF128 KBFirmware aktivViele ASCII-Strings und Menütexte, vermutlich Bootloader + Hauptstartcode.
0x020000 – 0x07FFFF384 KBLeerer Bereich / PaddingBereich nur mit 0xFF, wahrscheinlich ungenutzter Flash-Space oder Reservierung.
0x080000 – 0x0DFFFF384 KBFirmware aktivHauptbereich der eigentlichen Firmware, viele Strings und Logikblöcke.
0x0E0000 – 0x0FFFFF128 KBLeer / PaddingWieder ungenutzte Blöcke.
0x100000 – 0x7FFFFF7 MBKomplett leer (0xFF)Speicher komplett leer oder gespiegelte Wiederholung des 4MB-Flashbereichs.

Speicherbereiche (Memory Map)

Adresse (Hex)BereichFunktion
0x00000000 – 0x0003FFFFFlash-ROM (32-bit breit)Bootloader + Firmware 256KB sichtbar
0x10000000 – 0x1001FFFFSDRAMArbeitsbereich für Runtime-Daten, ECM/EMM Verarbeitung
0x20000000 – 0x2000FFFFCI-Host-InterfaceSteuerung der Kommunikation mit dem Fernseher/Receiver
0x30000000 – 0x3000FFFFSmartcard-InterfaceISO7816-kompatible Register (T=0/T=1-Protokoll)
0x40000000 – 0x40000FFFInterrupt-ControllerVerwaltung von CI-Ereignissen, Smartcard-Events, Timern
0x50000000 – 0x5000FFFFGPIO Ports / LEDsSteuerung von LEDs, Schaltern, Debug-Ports
0x60000000 – 0x6000FFFFUART DebugSerielle Debug-Ausgabe (evtl. deaktiviert bei Produktion)
RegisterAdresseBeschreibung
CI_COMMAND0x20000004Steuerregister für CI-Kommandos an den Host
CI_DATA_IN0x20000008Eingangsdaten vom Host
CI_DATA_OUT0x2000000CAusgangsdaten zum Host
SC_COMMAND0x30000004Smartcard-Befehlsschnittstelle
SC_STATUS0x30000008Status der eingesteckten Smartcard
SC_DATA0x3000000CSmartcard-Datenpuffer
LED_CONTROL0x50000010Steuerung von LEDs (z. B. grün/rot für Statusanzeigen)
UART_TX0x60000004UART Sende-Register
UART_RX0x60000008UART Empfangs-Register

Bekannte Chipsätze von OPUS Taiwan:

ChipBesonderheitBemerkung
OPUS SII0982Früher CI-ControllerGenutzt in frühen Unicam-Varianten und ersten CAM-Serien.
OPUS SN0803Bessere CI-Performance, Dual ECM möglichHauptchip in AlphaCrypt 2.2, Onys CAM, späteren Unicam-Generationen.
OPUS SN0805CI+ Ansatz (experimentell)Geplante Weiterentwicklung für CI+, aber kaum verbreitet (nur Testmuster).
OPUS SN0802Kompakte Variante für Low-Cost CAMsSelten verwendet, vermutlich für abgespeckte Module gedacht.
OPUS SN0810Embedded Secure CAM ControllerAdvanced Features, CI+ möglich, vermutlich nur als OEM-Muster produziert.
OPUS CA100Reines Smartcard-HandlingDient zur Anbindung von Kartenlesern ohne kompletten CI-Stack.

Was passierte mit Opus Taiwan?

Nach der Einführung von CI+ mit sehr restriktiven Lizenzauflagen ab etwa 2008/2009 wurde es für Firmen wie OPUS wirtschaftlich unattraktiv, weiterhin offene Chips zu entwickeln.

CI+-fähige CAMs brauchten teure Lizenzen (Trust Authority etc.), die OPUS sich nicht leisten konnte.

Große Hersteller wie Neotion (Frankreich) und SMIT (China) dominierten danach den Markt.

OPUS Microsystems wurde ab etwa 2014 praktisch unsichtbar, wahrscheinlich aufgelöst oder aufgekauft.

** Nach Recherche wurde die Firma an STMicroelectronics verkauft.

Der folgende Code ist ein Beispiel!

import struct
import base64
import hashlib
from cryptography.hazmat.primitives import serialization, hashes
from cryptography.hazmat.primitives.asymmetric import padding

# 1. RSA Public Key aus Firmware-Dump extrahieren
def extract_public_key(dump_path, der_path, pem_path):
    data = open(dump_path, 'rb').read()
    # Suche DER-Sequence (0x30 0x82)
    for i in range(len(data) - 4):
        if data[i] == 0x30 and data[i+1] == 0x82:
            length = (data[i+2] << 8) + data[i+3]
            der = data[i:i+4+length]
            with open(der_path, 'wb') as f:
                f.write(der)
            # PEM
            b64 = base64.b64encode(der).decode()
            pem = '-----BEGIN PUBLIC KEY-----
' + '
'.join([b64[j:j+64] for j in range(0, len(b64), 64)]) + '
-----END PUBLIC KEY-----
'
            with open(pem_path, 'w') as f:
                f.write(pem)
            return True
    return False

# 2. SHA-256 Digest der Firmware berechnen def compute_digest(payload_path):
    data = open(payload_path, 'rb').read()
    return hashlib.sha256(data).digest()

# 3. Signatur verifizieren
def verify_signature(pem_path, payload_path, sig_path):
    pub_key = serialization.load_pem_public_key(open(pem_path, 'rb').read())
    payload = open(payload_path, 'rb').read()
    signature = open(sig_path, 'rb').read()
    pub_key.verify(
        signature,
        payload,
        padding.PKCS1v15(),
        hashes.SHA256()
    )
    print('Signature valid')

# 4. Neue Firmware signieren (Herstellerprivatkey benötigt)
def sign_firmware(privkey_path, payload_path, sig_out_path):
    priv_key = serialization.load_pem_private_key(open(privkey_path, 'rb').read(), password=None)
    payload = open(payload_path, 'rb').read()
    signature = priv_key.sign(
        payload,
        padding.PKCS1v15(),
        hashes.SHA256()
    )
    with open(sig_out_path, 'wb') as f:
        f.write(signature)
    print('Firmware signed, signature saved to', sig_out_path)

Kommentar veröffentlichen

Das hast du vielleicht verpasst