STATIC_CAMKEY IRDETO.

Dlhé roky ide u nás irdeto v móde tzv. static_camkey. A dlhé roky mi to vŕtalo v hlave. No až teraz sa mi podarilo aspom trochu vniesť svetlo do tejto privátnej irdeto záležitosti. A keďže prežívame ťažkú korona dobu, chcel by som sa podeliť o získané inf. a možno tým niekoho potešiť.

Veľmi mi pri objasňovaní tohto mechanizmu pomohli zdrojáky tzv. descrambleru, čo je súčasť vynikajúceho softw. s názvom FFdecsawrapper, o ktorom som písal aj na inom mieste. Je tam prakticky všetko, len bolo potrebné sa cez to "prehrýzť". Tie zdrojáky(konkrétne práve napr. sc-irdeto.c) sú poriadne "bradaté" a pochádzajú pravdepodobne z pôvodného sasc-ng pluginu, ktrorý sa používal najmä v súvislosti s VDR_kom. A sú neuveriteľné.

Ak by som mal o tomto mojom bádaní(a veľmi často strádaní) písať dopodrobna, tak by to bolo na knižku. Takže to radšej skrátim a budem celkom stručný.

Systém statického camkey spočíva v tom, že na kartu sa pošle 0x40B encryptovaných dát(v oscame sa jedná o tzv. camkey_data) obsahujúcich camkey. Plain formát týchto dát je zrejmý práve zo spomínaných zdrojákov:

plain[0]=0x80;
  memset(plain+1 ,0x00,7);
  GenerateRandom(plain+16,16);
  memcpy(plain+8,plain+16,8);
  memset(plain+32,0xFF,31);
plain[63]=0x00;
nejak špeciálne som to neskúmal, čo tam musí a kde figurovať. V každom prípade plain+8(8B) je camkey.

V tejto súvislosti sa na niektorých fórach objavil pojem helperkey. Tento key je aj v zdrojákoch a podľa všetkého slúži na overenie validity a je súčasťou tzv. camkey výzvy(challenge). Takže helperkey je plain+24(8B).

Celé je to samozrejme o rsa. Tieto dáta sa encryptujú pomocou 0x40B rsa, ktorý sa získa z decryptu spojením tzv. cardfiles 2,3(0x80B), ktoré sa príslušnými ins. prečítajú z karty. Týchto 0x80B sa decryptuje tzv. irdeto certifikátom(0x80B). Tento som vyšpáral z jedného arabského oscamu a exp mi poskytol jeden macher na krypt.

Príklad:


Certifikát:
FFFFF7xxxxxxxxxxxxxxxxxxxx0699DA242BBACDA882B70B99AD34A8B3D36EB7174F2AE3E54753C7EE46FC8BCF0445648B35B7A28BB88AE0B2A7ED51148290359A7D31C31B1BDB34F1D792DBC4AA6148994B56A1936E1141638323806094CB3671AEDF078553DDD7C41FB9981E359D536573DE8A4824EAEA4866ADB2FDAD09CD 05_exp
CardFiles:
CE661DD62A41089E44BCD5D61C99F2E80FEFCE06CFF52D5B1E6F6A621285470FBADEB715982F4CE5274678A60C435409F01ACCB45BD5FA6906E09F540FFEC35074CF1FC8430599CF7AC465B2C30C59ED470906FFD7405B54B2AA3A7B63FDFAA9F27AF62C09FDD285707366ED2A60E16CD95EB43B6EED999D62B3DA246AE10088
Decrypt:
8000000000010000000001400600000000008DD415060FA515F7682CAA1076EBB12560416EEDE5F809AC5E32142B3BD6D228B0D2BD25FC1220E9B7B1C0F8518B80934561F038E3248CED5FC535000000000007F80000000000000000000000000000000000000000000000000000000000800000000001000000000140060000
Takže máme rsa - N(data+13,64,cardMod), exp(data+13+64,6,cardExp), pomocou ktorého si vypočítame camkey_data. Na N dáme xor FFFF...Potom:

Rsa:
FFFFFFFFFF722BEAF9F05AEA0897D355EF89144EDA9FBE91121A07F653A1CDEBD4C4292DD74F2D42DA03EDDF16484E3F07AE747F6CBA9E0FC71CDB7312A03ACB 07_exp
Plain:
8000000000000000B1B2B3B4B5B6B7B8B1B2B3B4B5B6B7B8B1B2B3B4B5B6B7B8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
Camkey_data:
AB722A8CAA9F58DE0D1CBB6FF329C961ED9DD759B103082D1BAE64C27A861D42E7F631891C2660EFA57484F80BBB4E0E8249A8368E31BD3FFC369FBE95160528
z toho je camkey:
B1B2B3B4B5B6B7B8
Karta na takúto výzvu(ak je validná) odpovedá 8B, ktoré sa po RevCamCrypt rovnajú spomínanému helperkey, v tomto prípade tiež B1B2B3B4B5B6B7B8.

Toť vsjo.

PS: potom to nejak pokračuje, ale ani boh nevie ako, a volá sa to L2b alias dynamic_camkey.