Aktuelles
Digital Eliteboard - Das Digitale Technik Forum

Registriere dich noch heute kostenlos, um Mitglied zu werden! Sobald du angemeldet bist, kannst du auf unserer Seite aktiv teilnehmen, indem du deine eigenen Themen und Beiträge erstellst und dich über deinen eigenen Posteingang mit anderen Mitgliedern unterhalten kannst! Zudem bekommst du Zutritt zu Bereichen, welche für Gäste verwehrt bleiben

Registriere dich noch heute kostenlos, um Mitglied zu werden! Sobald du angemeldet bist, kannst du auf unserer Seite aktiv teilnehmen, indem du deine eigenen Themen und Beiträge erstellst und dich über deinen eigenen Posteingang mit anderen Mitgliedern unterhalten kannst! Zudem bekommst du Zutritt zu Bereichen, welche für Gäste verwehrt bleiben

LABERTHREAD zum Thema: Umstellung der SAT-Verschlüsselung bei Sky (Geschlossen)

Status
Für weitere Antworten geschlossen.
Aktuelles zur Änderung der Verschlüsselung seitens Sky



Aktuelles zum Verhalten im Thema:​

 
Zuletzt bearbeitet von einem Moderator:
So da ich mir in den letzten Tagen mal den dimeno_magic angesehen habe, hab ich mich mal dran versucht Oscam den AES-Overcrypt beizubringen (Ist ja ähnlich bzw. gleich).
Ob es wirklich funktioniert kann ich leider nicht sagen, da mir der AES-Key meiner V15 nicht bekannt ist :(
Mit einem zufälligen Key bekomme ich ein found mit natürlich schwarzem Bild auf der Dreambox (CW falsch).
InsightTV Mode 80 geht mit dem Patch weiterhin 1A und auch Eurosport1 und Cartoon Network via ACL-Keyset läuft normal mit Bild.
Der Patch zeigt euch im AES-Modus aber auf jeden Fall das komplette eCW (1Teil CW + 2 Teil Tag56) an.

Angewendet werden kann der Patch so (Code im Spoiler in aes.patch Datei kopieren): patch reader-videoguard2.c < aes.patch
Hab mir mal den astrokey Platzhalter ausgeliehen, ist in dem Kontext vielleicht inhaltlich falsch. Klar man könnte da jetzt auch was neues definieren, aber dann wäre der Patch größer :)

C:
diff --git a/reader-videoguard2.c b/reader-videoguard2.c
index 4f523cc40..8f620339f 100644
--- a/reader-videoguard2.c
+++ b/reader-videoguard2.c
@@ -1244,7 +1244,7 @@ static int32_t videoguard2_do_ecm(struct s_reader *reader, const ECM_REQUEST *er
                        uint8_t buff_0F[6] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
                        uint8_t buff_56[8] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
                        uint8_t buff_55[1] = { 0x00 };
-                       uint8_t tag, t_len;
+                       uint8_t tag, t_len, tag_56_set;
                        uint8_t *t_body;
                        int32_t payloadLen = rbuff[4];
                        int32_t ind = 8 + 6; // +8 (CW1), +2 (cw checksum) + 2 (tier used) +2 (result byte)
@@ -1274,6 +1274,9 @@ static int32_t videoguard2_do_ecm(struct s_reader *reader, const ECM_REQUEST *er
                                                break;

                                        case 0x56: // tag data for astro
+                                               if(memcmp(buff_56, t_body, 8) != 0){
+                                                       tag_56_set = 1;
+                                               }
                                                memcpy(buff_56, t_body, 8);
                                                break;

@@ -1369,12 +1372,14 @@ static int32_t videoguard2_do_ecm(struct s_reader *reader, const ECM_REQUEST *er
                                        if((buff_55[0] >> 1) & 1) //case 55_01 xx where bit1==1, unique Pairing
                                        {
                                                rdr_log_dbg(reader, D_READER, "classD3 ins54: CW is crypted, trying to decrypt unique pairing mode 0x%02X", buff_55[0]);
-                                               if(er->ecm[0] & 1){ //log crypted CW
-                                                       rdr_log_dbg(reader, D_READER, "crypted CW is: 0000000000000000%02X%02X%02X%02X%02X%02X%02X%02X", ea->cw[0], ea->cw[1], ea->cw[2], ea->cw[3], ea->cw[4], ea->cw[5], ea->cw[6], ea->cw[7]);
+                                               if(tag_56_set){ //log crypted CW
+                                                       rdr_log_dbg(reader, D_READER, "crypted AES CW is: %02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X", ea->cw[0], ea->cw[1], ea->cw[2], ea->cw[3], ea->cw[4], ea->cw[5], ea->cw[6], ea->cw[7], buff_56[0], buff_56[1], buff_56[2], buff_56[3], buff_56[4], buff_56[5], buff_56[6], buff_56[7]);
+                                               } else if(er->ecm[0] & 1){
+                                                       rdr_log_dbg(reader, D_READER, "crypted (3)DES CW is: 0000000000000000%02X%02X%02X%02X%02X%02X%02X%02X", ea->cw[0], ea->cw[1], ea->cw[2], ea->cw[3], ea->cw[4], ea->cw[5], ea->cw[6], ea->cw[7]);
                                                } else {
-                                                       rdr_log_dbg(reader, D_READER, "crypted CW is: %02X%02X%02X%02X%02X%02X%02X%02X0000000000000000", ea->cw[0], ea->cw[1], ea->cw[2], ea->cw[3], ea->cw[4], ea->cw[5], ea->cw[6], ea->cw[7]);
+                                                       rdr_log_dbg(reader, D_READER, "crypted (3)DES CW is: %02X%02X%02X%02X%02X%02X%02X%02X0000000000000000", ea->cw[0], ea->cw[1], ea->cw[2], ea->cw[3], ea->cw[4], ea->cw[5], ea->cw[6], ea->cw[7]);
                                                }
-                                               if((reader->k1_unique[16] == 0x08) || (reader->k1_unique[16] == 0x10)) //check k1 for unique pairing mode is DES(8 bytes) or 3DES(16 bytes) long
+                                               if((reader->k1_unique[16] == 0x08) || (reader->k1_unique[16] == 0x10)) //check k1 for unique pairing mode is DES(8 bytes) or 3DES/AES(16 bytes) long
                                                {
                                                        if(reader->k1_unique[16] == 0x08){
                                                                rdr_log_dbg(reader, D_READER, "use k1(DES) for CW decryption in unique pairing mode");
@@ -1382,8 +1387,18 @@ static int32_t videoguard2_do_ecm(struct s_reader *reader, const ECM_REQUEST *er
                                                        }
                                                        else
                                                        {
-                                                               rdr_log_dbg(reader, D_READER, "use k1(3DES) for CW decryption in unique pairing mode");
-                                                               des_ecb3_decrypt(ea->cw, reader->k1_unique);
+                                                               if (tag_56_set){
+                                                                       rdr_log_dbg(reader, D_READER, "use k1(AES) for CW decryption in unique pairing mode");
+                                                                       AES_set_decrypt_key(reader->k1_unique, 128, &(csystem_data->astrokey));
+                                                                       uint8_t buffer[0x10];
+                                                                       memcpy(buffer, rbuff + 5, 8);
+                                                                       memcpy(buffer + 8, buff_56, 8);
+                                                                       AES_decrypt(buffer, buffer, &(csystem_data->astrokey));
+                                                                       memcpy(ea->cw + 0, buffer, 8); // copy calculated CW in right place
+                                                               } else {
+                                                                       rdr_log_dbg(reader, D_READER, "use k1(3DES) for CW decryption in unique pairing mode");
+                                                                       des_ecb3_decrypt(ea->cw, reader->k1_unique);
+                                                               }
                                                        }
                                                        if(er->ecm[0] & 1){ //log decrypted CW
                                                                rdr_log_dbg(reader, D_READER, "decrypted CW is: 0000000000000000%02X%02X%02X%02X%02X%02X%02X%02X", ea->cw[0], ea->cw[1], ea->cw[2], ea->cw[3], ea->cw[4], ea->cw[5], ea->cw[6], ea->cw[7]);


Vielleicht hat ja jemand zufällig seinen AES-Key zur Karte und kann Ihn aktuell nicht anwenden, hier die Chance mal zu testen :D

Wie hast Du die Unterscheidung gemacht ob AES Key oder 3DES aus der config genommen wird da beide gleich lang sind?
ich hatte da ein k1_unique_aes reingefummelt aber nicht weitergekommen.


@mod: bitte zusammenführen
 
3DES und AES Key sind beide gleich lang, 16 byte.
Webif bleibt auch wie es ist, das Feld lautet ja ganz unverfänglich nur k1 for unique pairing mode (8 or 16 bytes):
Wenn der Tag56 gefüllt ist, dann ist AES aktiv und mit dem eingetragenen K1 wird die AES Routine ausgeführt, Tag56 leer bzw. alles auf 0 dann wird die bisherige 3DES Routine genutzt.

Genau wie Reiner123 es sagt, ich mache alles am Tag56 fest (mal dahin gestellt ob das so komplett richtig ist :))
 
Je später Sky das ECM versendet umso weniger Zeit bleibt der Karte - im besten Fall könnte Sky das so einstellen das es der Prozessor gerade noch so schafft also 180 ms.
Dann wäre es aus mit CS per V13 ...
Das hat noch nicht mal funktioniert als die das auf 5 Sekunden gestellt hatten. Da stand bei denen das Telefon nicht still. Kann ich mich noch gut dran erinnern. :cool: Vielleicht sollten die auf oscam umstellen das funktioniert besser als denen ihre Kisten. :p
 
Davon steht hier viel ;)

So da ich mir in den letzten Tagen mal den dimeno_magic angesehen habe, hab ich mich mal dran versucht Oscam den AES-Overcrypt beizubringen (Ist ja ähnlich bzw. gleich).
Ob es wirklich funktioniert kann ich leider nicht sagen, da mir der AES-Key meiner V15 nicht bekannt ist :(
Mit einem zufälligen Key bekomme ich ein found mit natürlich schwarzem Bild auf der Dreambox (CW falsch).
InsightTV Mode 80 geht mit dem Patch weiterhin 1A und auch Eurosport1 und Cartoon Network via ACL-Keyset läuft normal mit Bild.
Der Patch zeigt euch im AES-Modus aber auf jeden Fall das komplette eCW (1Teil CW + 2 Teil Tag56) an.

Angewendet werden kann der Patch so (Code im Spoiler in aes.patch Datei kopieren): patch reader-videoguard2.c < aes.patch
Hab mir mal den astrokey Platzhalter ausgeliehen, ist in dem Kontext vielleicht inhaltlich falsch. Klar man könnte da jetzt auch was neues definieren, aber dann wäre der Patch größer :)

C:
diff --git a/reader-videoguard2.c b/reader-videoguard2.c
index 4f523cc40..8f620339f 100644
--- a/reader-videoguard2.c
+++ b/reader-videoguard2.c
@@ -1244,7 +1244,7 @@ static int32_t videoguard2_do_ecm(struct s_reader *reader, const ECM_REQUEST *er
                        uint8_t buff_0F[6] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
                        uint8_t buff_56[8] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
                        uint8_t buff_55[1] = { 0x00 };
-                       uint8_t tag, t_len;
+                       uint8_t tag, t_len, tag_56_set;
                        uint8_t *t_body;
                        int32_t payloadLen = rbuff[4];
                        int32_t ind = 8 + 6; // +8 (CW1), +2 (cw checksum) + 2 (tier used) +2 (result byte)
@@ -1274,6 +1274,9 @@ static int32_t videoguard2_do_ecm(struct s_reader *reader, const ECM_REQUEST *er
                                                break;

                                        case 0x56: // tag data for astro
+                                               if(memcmp(buff_56, t_body, 8) != 0){
+                                                       tag_56_set = 1;
+                                               }
                                                memcpy(buff_56, t_body, 8);
                                                break;

@@ -1369,12 +1372,14 @@ static int32_t videoguard2_do_ecm(struct s_reader *reader, const ECM_REQUEST *er
                                        if((buff_55[0] >> 1) & 1) //case 55_01 xx where bit1==1, unique Pairing
                                        {
                                                rdr_log_dbg(reader, D_READER, "classD3 ins54: CW is crypted, trying to decrypt unique pairing mode 0x%02X", buff_55[0]);
-                                               if(er->ecm[0] & 1){ //log crypted CW
-                                                       rdr_log_dbg(reader, D_READER, "crypted CW is: 0000000000000000%02X%02X%02X%02X%02X%02X%02X%02X", ea->cw[0], ea->cw[1], ea->cw[2], ea->cw[3], ea->cw[4], ea->cw[5], ea->cw[6], ea->cw[7]);
+                                               if(tag_56_set){ //log crypted CW
+                                                       rdr_log_dbg(reader, D_READER, "crypted AES CW is: %02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X", ea->cw[0], ea->cw[1], ea->cw[2], ea->cw[3], ea->cw[4], ea->cw[5], ea->cw[6], ea->cw[7], buff_56[0], buff_56[1], buff_56[2], buff_56[3], buff_56[4], buff_56[5], buff_56[6], buff_56[7]);
+                                               } else if(er->ecm[0] & 1){
+                                                       rdr_log_dbg(reader, D_READER, "crypted (3)DES CW is: 0000000000000000%02X%02X%02X%02X%02X%02X%02X%02X", ea->cw[0], ea->cw[1], ea->cw[2], ea->cw[3], ea->cw[4], ea->cw[5], ea->cw[6], ea->cw[7]);
                                                } else {
-                                                       rdr_log_dbg(reader, D_READER, "crypted CW is: %02X%02X%02X%02X%02X%02X%02X%02X0000000000000000", ea->cw[0], ea->cw[1], ea->cw[2], ea->cw[3], ea->cw[4], ea->cw[5], ea->cw[6], ea->cw[7]);
+                                                       rdr_log_dbg(reader, D_READER, "crypted (3)DES CW is: %02X%02X%02X%02X%02X%02X%02X%02X0000000000000000", ea->cw[0], ea->cw[1], ea->cw[2], ea->cw[3], ea->cw[4], ea->cw[5], ea->cw[6], ea->cw[7]);
                                                }
-                                               if((reader->k1_unique[16] == 0x08) || (reader->k1_unique[16] == 0x10)) //check k1 for unique pairing mode is DES(8 bytes) or 3DES(16 bytes) long
+                                               if((reader->k1_unique[16] == 0x08) || (reader->k1_unique[16] == 0x10)) //check k1 for unique pairing mode is DES(8 bytes) or 3DES/AES(16 bytes) long
                                                {
                                                        if(reader->k1_unique[16] == 0x08){
                                                                rdr_log_dbg(reader, D_READER, "use k1(DES) for CW decryption in unique pairing mode");
@@ -1382,8 +1387,18 @@ static int32_t videoguard2_do_ecm(struct s_reader *reader, const ECM_REQUEST *er
                                                        }
                                                        else
                                                        {
-                                                               rdr_log_dbg(reader, D_READER, "use k1(3DES) for CW decryption in unique pairing mode");
-                                                               des_ecb3_decrypt(ea->cw, reader->k1_unique);
+                                                               if (tag_56_set){
+                                                                       rdr_log_dbg(reader, D_READER, "use k1(AES) for CW decryption in unique pairing mode");
+                                                                       AES_set_decrypt_key(reader->k1_unique, 128, &(csystem_data->astrokey));
+                                                                       uint8_t buffer[0x10];
+                                                                       memcpy(buffer, rbuff + 5, 8);
+                                                                       memcpy(buffer + 8, buff_56, 8);
+                                                                       AES_decrypt(buffer, buffer, &(csystem_data->astrokey));
+                                                                       memcpy(ea->cw + 0, buffer, 8); // copy calculated CW in right place
+                                                               } else {
+                                                                       rdr_log_dbg(reader, D_READER, "use k1(3DES) for CW decryption in unique pairing mode");
+                                                                       des_ecb3_decrypt(ea->cw, reader->k1_unique);
+                                                               }
                                                        }
                                                        if(er->ecm[0] & 1){ //log decrypted CW
                                                                rdr_log_dbg(reader, D_READER, "decrypted CW is: 0000000000000000%02X%02X%02X%02X%02X%02X%02X%02X", ea->cw[0], ea->cw[1], ea->cw[2], ea->cw[3], ea->cw[4], ea->cw[5], ea->cw[6], ea->cw[7]);


Vielleicht hat ja jemand zufällig seinen AES-Key zur Karte und kann Ihn aktuell nicht anwenden, hier die Chance mal zu testen :D
Find ich mega das du dich darangewagt hast. Ich werde den Patch demnächst mal mit kompilieren. Dann brauche ich nur noch wen der mir dabei hilft die aes keys aus der Q zu holen.
 
@kautz8953 du hast recht ... ich hab das hier total ausgeblendet ...

THX @Youtube18 dafür das er sich nicht nur an den Patch versucht hat sondern es allen zur Verfügung stellt ...
So kann nun jeder schauen wie es geht und evtl. noch weitere Verbesserungen einbringen.
evtl. machst das in den Download´s rein das es hier nicht unter geht oder versehentlich gelöscht wird ...

Nun müssen die Leute nur noch darauf warten bis es ihnen einer kompiliert und hochladen tut :D
 
@Katze Flohli Hab den Patch mal in die Download Sektion eingepflegt: Oscam AES Patch (ungetestet)
Binaries: AMD64 ARM

Ich denke mal das wird in den nächsten Tagen da einfließen.;)
Etwas ungetestetes in den Trunk stellen ?
Ich habe keinen passenden AES-Key um sagen zu können der Patch funktioniert so wie er gedacht ist ...
Ich kann aktuell nur mit Sicherheit sagen es kommt zu keinen Nebenwirkungen, da ACL-Keyset und Mode 80 weiterhin funktionieren.
Würde mich daher stark wundern wenn der Patch in den Trunk kommt ;)
 
das ist Blödsinn mit der Obergrenze :)
Es ist entscheidend wann Sky das ECM mit dem gültigen CW versendet und hat allg. ja 7 Sec dafür Zeit.
Wird das gleich nachdem das neue Gültig ist versendet wird hat jede Karte 7 sec. Zeit zu liefern.
Je später Sky das ECM versendet umso weniger Zeit bleibt der Karte - im besten Fall könnte Sky das so einstellen das es der Prozessor gerade noch so schafft also 180 ms.
Dann wäre es aus mit CS per V13 ...

Im Grunde hast du zwar grob recht, es gibt aber natürlich eine Obergrenze!
V13 sind ja noch offiziell im Einsatz, müssen also in der Original Hardware noch laufen...

Hier haben Einige von uns nicht bedacht, das man das Signal verzögern kann. Ich verzögere das DVB-C Kabelsignal, und gewinne dadurch viel Zeit, man könnte natürlich (wenn man nur SAT-Anschluß hat) auch ein VDR Plugin benutzen wie @onur hier aus DEB es nutzt. Den Transportstream verzögern, und ein par Sekunden später entschlüsseln. Das wäre ja ohnehin für uns alle sehr sinnvoll. Wenn die ersten V13 bei Privatleuten laufen, werden die cw's sehr spät kommen, also ist es gut sich damit schon mal zu beschäftigen. In fernen Ländern abeitet man häufig mit ts Verzögerung, da das Internet dort meist unzuverlässiger und langsamer ist.

Da ich mich mit cw-Timings u.ä. viel beschäftige, will ich es mal genau und im Detail erklären:
Die Zeit die bis zum Bereitstellen des cw ist bei V13 V14 und V15 knap unter 600mS, wenn es nicht freezen soll!
Die Karten benötigen, wenn sie nichts anders machen:
V13 ~ 120mS (DES Mode) (AES Mode ist langsamer)
V14 ~ 80mS
V15 ~ 50mS
Demzufolge schafft eine V15 mehr cw's als eine V13 in der gleichen Zeitspanne bereit zu stellen.
Da die cw's auf einem Transponder zu gleichen Zeit benötigt werden, schafft eine V13 also 4 Sender gleichzeitig, wenn man z.B. ein EMM schreibt ruckelt es aber kurz, wenn der Zeitpunkt ungünstig ist. (Im ungünstigsten Fall kann man mit einer V13 genau 4 Sender entschlüsseln! Im besten Fall genau 4 je Transponder, also bei 9 Transpondern kurzzeitig auch mal 36 Sender, jedoch nicht stabil!)
Bei anderen Karten gilt sinngemäß das gleiche. Also V15 50ms schafft c.a. 9...10 Sender eines Transponders, also auch keinen ganzen Transponder.

Ich beziehe mich auf einen Transponder. Wenn wir einen 2. Transponder in unsere Betrachtung mit aufnehmen wollen, stellen wir fest, das 2 Transponder mit je 4 Sendern bei V13 fast immer Frezze frei laufen, aber ein par mal am Tag oder in der Woche Freezt es dann auf 4 Sendern gewaltig, die Verschlüsselung ist nehmlich bei bestimmten Providern und vielen Transpondern freilaufend. Das heißt die cw-Abfrage überlappt sich Zeitlich gerade, und wir können mit unserer V13 nur 4 Sender Freezefrei entschlüsseln.

Die Aussage, es gibt keine Obergrenze ist also definitiv falsch, und 600mS sind sehr schnell erreicht, wenn man noch die Rechenzeit des Receivers, 10...20mS Verzögerung bei Smartreader Protokoll, ein par mS Netzwerklaufzeit u.s.w. addiert. Vom Internet Sharing wollen wir ja nicht reden, dort käme noch die Internet-Laufzeit hinzu.
Wieviele User den gleichen Sender, und somit das gleiche aus der oscam cw nutzen, hat natürlich keine Obergrenze, nicht das es zu Missverständnissen kommt.

Angenommen wir würden den Transportstream um 1023mS verzögern, wie ich es hier mache, habe ich 1600mS also kann eine V13 c.a. 14 Sender eines Transponders entschlüsseln, bzw. es macht auch nichts wenn mehrere Transponder benutzt werden, 14 Sender laufen immer.

Nun rechne ich mal weiter, wir sagen wir Verzögern, und haben somit die 7 Sekunden Verzögerung für alle Sender, dann schafft eine V13 so um die 50 Sender, egal von welchen Transpondern. Und auch immer stabil. Also selbst dann kann man nicht alle Sender parallel entschlüsseln. Mit 1x V15 wäre es möglich, alle Sender zu entschlüsseln, aber nur wenn wir Verzögern! Das kann aber kaum Jemand, dann benötigen wir um alle Sender parallel zu entschlüsseln mindestens 2x V15 Karten, dann Freezt es aber immer wieder gelegentlich mehrfach an jeden Tag mal auf ein par Sendern, so das man bei c.a. 5 Karten kalkulieren muß, dann freezt es rein statistisch extrem selten, es kommt aber noch alle par Monate mal vor. Um 100% stets Freezefrei zu sein bräuchte man c.a. 14x V15, dann wäre egal wie die Timings laufen, und man müsste nicht verzögern.

Ich hoffe ihr kontet mir alle folgen, und ich habe es vernünftig und verständlich und nicht zu langatmig erklährt...
 
Weil es hier im DEB Leute gibt die soetwas in den Trunk einbinden können!?
Und nein, eine Lösung ist das nicht, hilft aber sollte es irgendwann irgendwem möglich sein an seinen AES key zu kommen.
Es bildet lediglich den Funktionsumfang eines NDS Receivers ab welcher neben TDES auch mit AES umgehen kann.
 
Zuletzt bearbeitet:
Status
Für weitere Antworten geschlossen.
Zurück
Oben