fixed streamguard CA card descrambler .
streamguard CA cardid 0x4ad2.
This commit is contained in:
parent
b64b07f5a3
commit
ec4e2cff14
5 changed files with 40 additions and 12 deletions
|
@ -139,6 +139,7 @@ typedef enum {
|
|||
CARD_NDS,
|
||||
CARD_CRYPTOWORKS,
|
||||
CARD_BULCRYPT,
|
||||
CARD_STREAMGUARD,
|
||||
CARD_UNKNOWN
|
||||
} card_type_t;
|
||||
|
||||
|
|
17
src/descrambler/capmt.c
Normal file → Executable file
17
src/descrambler/capmt.c
Normal file → Executable file
|
@ -644,9 +644,13 @@ capmt_queue_msg
|
|||
msg->cm_adapter = adapter;
|
||||
msg->cm_sid = sid;
|
||||
if (flags & CAPMT_MSG_FAST)
|
||||
{
|
||||
TAILQ_INSERT_HEAD(&capmt->capmt_writeq, msg, cm_link);
|
||||
}
|
||||
else
|
||||
TAILQ_INSERT_TAIL(&capmt->capmt_writeq, msg, cm_link);
|
||||
{
|
||||
TAILQ_INSERT_TAIL(&capmt->capmt_writeq, msg, cm_link);
|
||||
}
|
||||
tvh_write(capmt->capmt_pipe.wr, "c", 1);
|
||||
}
|
||||
|
||||
|
@ -1650,10 +1654,13 @@ capmt_send_request(capmt_service_t *ct, int lm)
|
|||
cad.cad_length = 0x07;
|
||||
cad.cad_data[5] = cce2->cce_providerid >> 8;
|
||||
cad.cad_data[6] = cce2->cce_providerid & 0xff;
|
||||
} else if (cce2->cce_caid >> 8 == 0x4a) {
|
||||
cad.cad_length = 0x05;
|
||||
cad.cad_data[4] = cce2->cce_providerid & 0xff;
|
||||
} else
|
||||
} else if (cce2->cce_caid == 0x4ad2) {
|
||||
cad.cad_length = 0x04;
|
||||
cad.cad_data[3] = cce2->cce_providerid & 0xffffff;
|
||||
}else if (cce2->cce_caid >> 8 == 0x4a && cce2->cce_caid!=0x4ad2) {
|
||||
cad.cad_length = 0x05;
|
||||
cad.cad_data[4] = cce2->cce_providerid & 0xff;
|
||||
}else
|
||||
tvhlog(LOG_WARNING, "capmt", "Unknown CAID type, don't know where to put provider ID");
|
||||
}
|
||||
memcpy(&buf[pos], &cad, cad.cad_length + 2);
|
||||
|
|
|
@ -286,7 +286,7 @@ void cwc_emm_nagra(cwc_t *cwc, struct cs_card_data *pcard, const uint8_t *data,
|
|||
void cwc_emm_nds(cwc_t *cwc, struct cs_card_data *pcard, const uint8_t *data, int len);
|
||||
void cwc_emm_cryptoworks(cwc_t *cwc, struct cs_card_data *pcard, const uint8_t *data, int len);
|
||||
void cwc_emm_bulcrypt(cwc_t *cwc, struct cs_card_data *pcard, const uint8_t *data, int len);
|
||||
|
||||
void cwc_emm_streamguard(cwc_t *cwc, struct cs_card_data *pcard,const uint8_t *data, int len);//add by sangood
|
||||
|
||||
/**
|
||||
*
|
||||
|
@ -1339,6 +1339,9 @@ cwc_emm(void *opaque, int pid, const uint8_t *data, int len)
|
|||
case CARD_BULCRYPT:
|
||||
cwc_emm_bulcrypt(cwc, pcard, data, len);
|
||||
break;
|
||||
case CARD_STREAMGUARD:
|
||||
cwc_emm_streamguard(cwc, pcard, data, len);
|
||||
break;
|
||||
case CARD_UNKNOWN:
|
||||
break;
|
||||
}
|
||||
|
@ -1847,6 +1850,18 @@ cwc_emm_nds(cwc_t *cwc, struct cs_card_data *pcard, const uint8_t *data, int len
|
|||
if (match)
|
||||
cwc_send_msg(cwc, data, len, 0, 1, 0, 0);
|
||||
}
|
||||
/**
|
||||
* streamguard emm handler
|
||||
*/
|
||||
void
|
||||
cwc_emm_streamguard(cwc_t *cwc, struct cs_card_data *pcard, const uint8_t *data, int len)
|
||||
{
|
||||
//sangood todo
|
||||
int match = 1;
|
||||
tvhlog(LOG_INFO, "cwc", "cwc_emm_streamguard streamguard card data emm get,here lots of works todo...");
|
||||
if (match)
|
||||
cwc_send_msg(cwc, data, len, 0, 1, 0, 0);
|
||||
}
|
||||
|
||||
void
|
||||
cwc_emm_cryptoworks(cwc_t *cwc, struct cs_card_data *pcard, const uint8_t *data, int len)
|
||||
|
|
|
@ -771,6 +771,8 @@ detect_card_type(const uint16_t caid)
|
|||
uint8_t c_sys = caid >> 8;
|
||||
|
||||
switch(caid) {
|
||||
case 0x4ad2:
|
||||
return CARD_STREAMGUARD;
|
||||
case 0x5581:
|
||||
case 0x4aee:
|
||||
return CARD_BULCRYPT;
|
||||
|
|
15
src/input/mpegts/dvb_psi.c
Normal file → Executable file
15
src/input/mpegts/dvb_psi.c
Normal file → Executable file
|
@ -1204,11 +1204,14 @@ psi_desc_ca(mpegts_service_t *t, const uint8_t *buffer, int size)
|
|||
i += nanolen;
|
||||
}
|
||||
break;
|
||||
case 0x4a00://DRECrypt
|
||||
if (caid != 0x4aee) { // Bulcrypt
|
||||
case 0x4a00://DRECrypt or streamguard
|
||||
if (caid==0x4ad2) {
|
||||
provid=0;
|
||||
}
|
||||
if (caid != 0x4aee && caid!=0x4ad2) { // Bulcrypt
|
||||
provid = size < 4 ? 0 : buffer[4];
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
provid = 0;
|
||||
break;
|
||||
|
@ -1369,11 +1372,11 @@ psi_parse_pmt
|
|||
case 0x04:
|
||||
hts_stream_type = SCT_MPEG2AUDIO;
|
||||
break;
|
||||
|
||||
|
||||
case 0x81:
|
||||
hts_stream_type = SCT_AC3;
|
||||
break;
|
||||
|
||||
|
||||
case 0x0f:
|
||||
hts_stream_type = SCT_MP4A;
|
||||
break;
|
||||
|
|
Loading…
Add table
Reference in a new issue