本文整理汇总了C++中cs_hexdump函数的典型用法代码示例。如果您正苦于以下问题:C++ cs_hexdump函数的具体用法?C++ cs_hexdump怎么用?C++ cs_hexdump使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了cs_hexdump函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: dgcrypt_cmd
static int32_t dgcrypt_cmd(struct s_reader *rdr, const uint8_t *buf, const int32_t buflen, uint8_t *response, uint16_t *response_length, uint16_t min_response_len)
{
rdr->ifsc = 195;
rdr->ns = 1;
if (DEBUG) {
char tmp[512];
rdr_log(rdr, "SEND -> %s(%d)", cs_hexdump(1, buf, buflen, tmp, sizeof(tmp)), buflen);
}
int32_t ret = reader_cmd2icc(rdr, buf, buflen, response, response_length);
if (DEBUG) {
char tmp[512];
rdr_log(rdr, "RECV <- %s(%d) ret=%d", cs_hexdump(1, response, *response_length, tmp, sizeof(tmp)), *response_length, ret);
}
// reader_cmd2icc retuns ERROR=1, OK=0 - the opposite of OK and ERROR defines in reader-common.h
if (ret) {
rdr_log(rdr, "ERROR: reader_cmd2icc() ret=%d", ret);
return ERROR;
}
if (*response_length < 2 || *response_length < min_response_len) {
rdr_log(rdr, "ERROR: response_length=%d < min_response_length=%d", *response_length, min_response_len);
return ERROR; // Response is two short
}
if (response[*response_length - 2] != 0x90 || response[*response_length - 1] != 0x00) {
rdr_log(rdr, "ERROR: response[-2] != 0x90 its 0x%02X", response[*response_length - 2]);
rdr_log(rdr, "ERROR: response[-1] != 0x00 its 0x%02X", response[*response_length - 1]);
return ERROR; // The reader responded with "command not OK"
}
return OK;
}
开发者ID:IgorWallacy,项目名称:oscam-nx111,代码行数:29,代码来源:reader-dgcrypt.c
示例2: griffin_exec_cmd
static int32_t griffin_exec_cmd(struct s_reader *rdr, uint8_t cmd_op, const uint8_t *data, uint8_t data_len, uint8_t *response, uint16_t *response_length)
{
struct griffin_data *csystem_data = rdr->csystem_data;
uint8_t buf[cmd_buf_len];
int32_t ret = reader_cmd2icc(rdr, buf,
griffin_init_cmd(rdr, buf, csystem_data->cmd_base + cmd_op, data, data_len),
response, response_length);
if (DEBUG) {
char tmp[1024];
rdr_log(rdr, "RECV[1] <- %s (ret=%d resp_len=%d)", cs_hexdump(1, response, *response_length, tmp, sizeof(tmp)), ret, *response_length);
}
if (ret || *response_length < 2) return ERROR; // Response is two short
if (response[0] != 0x90) return ERROR; // Invalid response
if (response[1] == 0) return OK; // Nothing to retrieve, command OK
// Retrieve response
uint8_t cmd_read_response = 0x02;
if (csystem_data->cmd_base > 0x10)
cmd_read_response += csystem_data->cmd_base - 0x10;
ret = reader_cmd2icc(rdr, buf,
griffin_init_cmd(rdr, buf, cmd_read_response, NULL, response[1]),
response, response_length);
if (DEBUG) {
char tmp[1024];
rdr_log(rdr, "RECV[2] <- %s (ret=%d resp_len=%d)", cs_hexdump(1, response, *response_length, tmp, sizeof(tmp)), ret, *response_length);
}
if (ret || *response_length < 2) return ERROR; // Response is two short
if (response[*response_length - 2] != 0x90) return ERROR; // Invalid response
if (response[*response_length - 1] != 0x00) return ERROR; // We don't expect command_op 0x12 to return more data
return OK;
}
开发者ID:TELE-TWIN,项目名称:oscam,代码行数:34,代码来源:reader-griffin.c
示例3: conax_get_emm_type
static int32_t conax_get_emm_type(EMM_PACKET *ep, struct s_reader * rdr)
{
int32_t i, ok = 0;
char tmp_dbg[17];
rdr_debug_mask(rdr, D_EMM, "Entered conax_get_emm_type ep->emm[2]=%02x", ep->emm[2]);
for (i = 0; i < rdr->nprov; i++) {
ok = (!memcmp(&ep->emm[6], rdr->sa[i], 4));
if (ok) break;
}
if (ok) {
ep->type = SHARED;
memset(ep->hexserial, 0, 8);
memcpy(ep->hexserial, &ep->emm[6], 4);
rdr_debug_mask_sensitive(rdr, D_EMM, "SHARED, ep->hexserial = {%s}", cs_hexdump(1, ep->hexserial, 8, tmp_dbg, sizeof(tmp_dbg)));
return 1;
}
else {
if (!memcmp(&ep->emm[6], rdr->hexserial + 2, 4)) {
ep->type = UNIQUE;
memset(ep->hexserial, 0, 8);
memcpy(ep->hexserial+2, &ep->emm[6], 4);
rdr_debug_mask_sensitive(rdr, D_EMM, "UNIQUE, ep->hexserial = {%s}", cs_hexdump(1, ep->hexserial, 8, tmp_dbg, sizeof(tmp_dbg)));
return 1;
}
else {
ep->type = GLOBAL;
rdr_debug_mask(rdr, D_EMM, "GLOBAL");
memset(ep->hexserial, 0, 8);
return 1;
}
}
}
开发者ID:knasson,项目名称:oscam-emu,代码行数:35,代码来源:reader-conax.c
示例4: bulcrypt_get_emm_type
static int32_t bulcrypt_get_emm_type(EMM_PACKET *ep, struct s_reader *reader)
{
char dump_emm_sn[64];
int32_t emm_len = check_sct_len(ep->emm, 3);
memset(ep->hexserial, 0, 8);
if (emm_len < 176)
{
rdr_debug_mask(reader, D_TRACE | D_EMM, "emm_len < 176 (%u): %s",
emm_len, cs_hexdump(1, ep->emm, 12, dump_emm_sn, sizeof(dump_emm_sn)));
ep->type = UNKNOWN;
return 0;
}
uint8_t mask_last = 0x00;
ep->type = UNKNOWN;
switch (ep->emm[0]) {
case BULCRYPT_EMM_UNIQUE_82: ep->type = UNIQUE; mask_last = 0xF0; break; // Bulsatcom
case BULCRYPT_EMM_UNIQUE_8a: ep->type = UNIQUE; mask_last = 0xF0; break; // Polaris
case BULCRYPT_EMM_UNIQUE_85: ep->type = UNIQUE; mask_last = 0x00; break; // Bulsatcom
case BULCRYPT_EMM_UNIQUE_8b: ep->type = UNIQUE; mask_last = 0x00; break; // Polaris
case BULCRYPT_EMM_SHARED_84: ep->type = SHARED; break;
}
bool ret = false;
if (ep->type == UNIQUE) {
// The serial numbers looks like this:
// aa bb cc dd
// To match EMM_82 and EMM_8a serial we compare (mask_last == 0xf0):
// aa bb cc d-
// To match EMM_85 and EMM_8b serial we compare (mask_last == 0x00):
// aa bb cc --
memcpy(ep->hexserial, ep->emm + 3, 4);
ret = reader->hexserial[0] == ep->hexserial[0] &&
reader->hexserial[1] == ep->hexserial[1] &&
reader->hexserial[2] == ep->hexserial[2] &&
((reader->hexserial[3] & mask_last) == (ep->hexserial[3] & mask_last));
} else if (ep->type == SHARED) {
// To match EMM_84
// aa bb -- --
memcpy(ep->hexserial, ep->emm + 3, 2);
ret = reader->hexserial[0] == ep->hexserial[0] &&
reader->hexserial[1] == ep->hexserial[1];
}
if (ret) {
char dump_card_sn[64];
cs_hexdump(1, reader->hexserial, 4, dump_card_sn, sizeof(dump_card_sn));
cs_hexdump(1, ep->hexserial, 4, dump_emm_sn, sizeof(dump_emm_sn));
rdr_log_sensitive(reader, "EMM_%s-%02x, emm_sn = {%s}, card_sn = {%s}",
ep->type == UNIQUE ? "UNIQUE" :
ep->type == SHARED ? "SHARED" : "??????",
ep->emm[0],
dump_emm_sn,
dump_card_sn);
}
return ret;
}
开发者ID:crzyfngrz,项目名称:oscam-1,代码行数:60,代码来源:reader-bulcrypt.c
示例5: dre_do_ecm
static int32_t dre_do_ecm(struct s_reader *reader, const ECM_REQUEST *er, struct s_ecm_answer *ea)
{
def_resp;
char tmp_dbg[256];
struct dre_data *csystem_data = reader->csystem_data;
if(reader->caid == 0x4ae0)
{
uchar ecmcmd41[] = { 0x41,
0x58, 0x1f, 0x00, //fixed part, dont change
0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, //0x01 - 0x08: next key
0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, //0x11 - 0x18: current key
0x3b, 0x59, 0x11 //0x3b = keynumber, can be a value 56 ;; 0x59 number of package = 58+1 - Pay Package ;; 0x11 = provider
};
ecmcmd41[22] = csystem_data->provider;
memcpy(ecmcmd41 + 4, er->ecm + 8, 16);
ecmcmd41[20] = er->ecm[6]; //keynumber
ecmcmd41[21] = 0x58 + er->ecm[25]; //package number
rdr_log_dbg(reader, D_READER, "unused ECM info front:%s", cs_hexdump(0, er->ecm, 8, tmp_dbg, sizeof(tmp_dbg)));
rdr_log_dbg(reader, D_READER, "unused ECM info back:%s", cs_hexdump(0, er->ecm + 24, er->ecm[2] + 2 - 24, tmp_dbg, sizeof(tmp_dbg)));
if((dre_cmd(ecmcmd41))) //ecm request
{
if((cta_res[cta_lr - 2] != 0x90) || (cta_res[cta_lr - 1] != 0x00))
{ return ERROR; } //exit if response is not 90 00
memcpy(ea->cw, cta_res + 11, 8);
memcpy(ea->cw + 8, cta_res + 3, 8);
return OK;
}
}
else
{
uchar ecmcmd51[] = { 0x51, 0x02, 0x56, 0x05, 0x00, 0x4A, 0xE3, //fixed header?
0x9C, 0xDA, //first three nibbles count up, fourth nibble counts down; all ECMs sent twice
0xC1, 0x71, 0x21, 0x06, 0xF0, 0x14, 0xA7, 0x0E, //next key?
0x89, 0xDA, 0xC9, 0xD7, 0xFD, 0xB9, 0x06, 0xFD, //current key?
0xD5, 0x1E, 0x2A, 0xA3, 0xB5, 0xA0, 0x82, 0x11, //key or signature?
0x14 //provider
};
memcpy(ecmcmd51 + 1, er->ecm + 5, 0x21);
rdr_log_dbg(reader, D_READER, "unused ECM info front:%s", cs_hexdump(0, er->ecm, 5, tmp_dbg, sizeof(tmp_dbg)));
rdr_log_dbg(reader, D_READER, "unused ECM info back:%s", cs_hexdump(0, er->ecm + 37, 4, tmp_dbg, sizeof(tmp_dbg)));
ecmcmd51[33] = csystem_data->provider; //no part of sig
if((dre_cmd(ecmcmd51))) //ecm request
{
if((cta_res[cta_lr - 2] != 0x90) || (cta_res[cta_lr - 1] != 0x00))
{ return ERROR; } //exit if response is not 90 00
DREover(er->ecm, cta_res + 3);
memcpy(ea->cw, cta_res + 11, 8);
memcpy(ea->cw + 8, cta_res + 3, 8);
return OK;
}
}
return ERROR;
}
开发者ID:Leatherface75,项目名称:enigma2pc,代码行数:55,代码来源:reader-dre.c
示例6: rsakey_fn
static void rsakey_fn(const char *token, char *value, void *setting, FILE *f)
{
struct s_reader *rdr = setting;
if(value)
{
int32_t len = strlen(value);
if(len != 128 && len != 240)
{
rdr->rsa_mod_length = 0;
memset(rdr->rsa_mod, 0, 120);
}
else
{
if(key_atob_l(value, rdr->rsa_mod, len))
{
fprintf(stderr, "reader rsakey parse error, %s=%s\n", token, value);
rdr->rsa_mod_length = 0;
memset(rdr->rsa_mod, 0, sizeof(rdr->rsa_mod));
}
else
{
rdr->rsa_mod_length = len/2;
}
}
return;
}
int32_t len = rdr->rsa_mod_length;
if(len > 0)
{
char tmp[len * 2 + 1];
fprintf_conf(f, "rsakey", "%s\n", cs_hexdump(0, rdr->rsa_mod, len, tmp, sizeof(tmp)));
}
else if(cfg.http_full_cfg)
{ fprintf_conf(f, "rsakey", "\n"); }
}
开发者ID:FFTEAM,项目名称:oscam,代码行数:35,代码来源:oscam-config-reader.c
示例7: boxkey_fn
static void boxkey_fn(const char *token, char *value, void *setting, FILE *f)
{
struct s_reader *rdr = setting;
if(value)
{
int32_t len = strlen(value);
if(len != 16 && len != 32)
{
memset(rdr->boxkey, 0, sizeof(rdr->boxkey));
}
else
{
if(key_atob_l(value, rdr->boxkey, len))
{
fprintf(stderr, "reader boxkey parse error, %s=%s\n", token, value);
memset(rdr->boxkey, 0, sizeof(rdr->boxkey));
}
}
return;
}
int32_t len = check_filled(rdr->boxkey, sizeof(rdr->boxkey));
if(len > 0)
{
if(len > 8) { len = 16; }
else { len = 8; }
char tmp[len * 2 + 1];
fprintf_conf(f, "boxkey", "%s\n", cs_hexdump(0, rdr->boxkey, len, tmp, sizeof(tmp)));
}
else if(cfg.http_full_cfg)
{ fprintf_conf(f, "boxkey", "\n"); }
}
开发者ID:Leatherface75,项目名称:enigma2pc,代码行数:31,代码来源:oscam-config-reader.c
示例8: boxkey_fn
static void boxkey_fn(const char *token, char *value, void *setting, FILE *f)
{
struct s_reader *rdr = setting;
if(value)
{
int32_t len = strlen(value);
if(((len % 8) != 0) || len == 0 || len > 32)
{
rdr->boxkey_length = 0;
memset(rdr->boxkey, 0, sizeof(rdr->boxkey));
}
else
{
if(key_atob_l(value, rdr->boxkey, len))
{
fprintf(stderr, "reader boxkey parse error, %s=%s\n", token, value);
rdr->boxkey_length = 0;
memset(rdr->boxkey, 0, sizeof(rdr->boxkey));
}
else
{
rdr->boxkey_length = len/2;
}
}
return;
}
int32_t len = rdr->boxkey_length;
if(len > 0)
{
char tmp[len * 2 + 1];
fprintf_conf(f, "boxkey", "%s\n", cs_hexdump(0, rdr->boxkey, len, tmp, sizeof(tmp)));
}
else if(cfg.http_full_cfg)
{ fprintf_conf(f, "boxkey", "\n"); }
}
开发者ID:FFTEAM,项目名称:oscam,代码行数:35,代码来源:oscam-config-reader.c
示例9: ins7E_fn
static void ins7E_fn(const char *token, char *value, void *setting, long var_size, FILE *f)
{
uint8_t *var = setting;
var_size -= 1; // var_size contains sizeof(var) which is [X + 1]
if(value)
{
int32_t len = strlen(value);
if(len != var_size * 2 || key_atob_l(value, var, len))
{
if(len > 0)
{ fprintf(stderr, "reader %s parse error, %s=%s\n", token, token, value); }
memset(var, 0, var_size + 1);
}
else
{
var[var_size] = 1; // found and correct
}
return;
}
if(var[var_size])
{
char tmp[var_size * 2 + 1];
fprintf_conf(f, token, "%s\n", cs_hexdump(0, var, var_size, tmp, sizeof(tmp)));
}
else if(cfg.http_full_cfg)
{ fprintf_conf(f, token, "\n"); }
}
开发者ID:Leatherface75,项目名称:enigma2pc,代码行数:27,代码来源:oscam-config-reader.c
示例10: constcw_analyse_file
int32_t constcw_analyse_file(uint16_t c_caid, uint32_t UNUSED(c_prid), uint16_t c_sid, uchar *dcw)
{
//CAID:PROVIDER:SID:PMT:PID::XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX
FILE *fp;
char token[512];
uint32_t caid, provid, sid, pmt, pid;
int32_t cw[16];
fp=fopen(cur_client()->reader->device, "r");
if (!fp) return (0);
while (fgets(token, sizeof(token), fp)){
if (token[0]=='#') continue;
sscanf(token, "%4x:%6x:%4x:%4x:%4x::%2x %2x %2x %2x %2x %2x %2x %2x %2x %2x %2x %2x %2x %2x %2x %2x", &caid, &provid, &sid, &pmt, &pid,
&cw[0], &cw[1], &cw[2], &cw[3], &cw[4], &cw[5], &cw[6], &cw[7],
&cw[8], &cw[9], &cw[10], &cw[11], &cw[12], &cw[13], &cw[14], &cw[15]);
//cs_log("Line found: %s", token);
if (c_caid == caid && c_sid == sid){
fclose(fp);
int8_t i;
for(i = 0; i < 16; ++i)
dcw[i] = (uchar) cw[i];
cs_log("Entry found: %04X:%06X:%04X:%04X:%04X::%s", caid, provid, sid, pmt, pid, cs_hexdump(1, dcw, 16, token, sizeof(token)));
return 1;
}
}
fclose(fp);
return 0;
}
开发者ID:sangood,项目名称:oscam-nx111,代码行数:33,代码来源:module-constcw.c
示例11: saveemm
static void saveemm(struct s_reader *aureader, EMM_PACKET *ep)
{
FILE *fp;
char tmp[17];
char buf[80];
char token[256];
char *tmp2;
time_t rawtime;
uint32_t emmtype;
struct tm timeinfo;
if (ep->type == UNKNOWN)
emmtype = EMM_UNKNOWN;
else
emmtype = 1 << (ep->type - 1);
// should this nano be saved?
if (((1 << (ep->emm[0] % 0x80)) & aureader->s_nano) || (aureader->saveemm & emmtype))
{
time(&rawtime);
localtime_r(&rawtime, &timeinfo); // to access LOCAL date/time info
int32_t emm_length = ((ep->emm[1] & 0x0f) << 8) | ep->emm[2];
strftime(buf, sizeof(buf), "%Y/%m/%d %H:%M:%S", &timeinfo);
fp = fopen(get_emmlog_filename(token, sizeof(token), aureader->label, "log"), "a");
if (!fp) {
rdr_log(aureader, "ERROR: Cannot open file '%s' (errno=%d: %s)\n", token, errno, strerror(errno));
} else {
if (cs_malloc(&tmp2, (emm_length + 3) * 2 + 1)) {
fprintf(fp, "%s %s ", buf, cs_hexdump(0, ep->hexserial, 8, tmp, sizeof(tmp)));
fprintf(fp, "%s\n", cs_hexdump(0, ep->emm, emm_length + 3, tmp2, (emm_length + 3) * 2 + 1));
free(tmp2);
rdr_log(aureader, "Successfully added EMM to %s", token);
}
fclose(fp);
}
fp = fopen(get_emmlog_filename(token, sizeof(token), aureader->label, "bin"), "ab");
if (!fp) {
rdr_log(aureader, "ERROR: Cannot open file '%s' (errno=%d: %s)\n", token, errno, strerror(errno));
} else {
if ((int)fwrite(ep->emm, 1, emm_length + 3, fp) == emm_length + 3) {
rdr_log(aureader, "Successfully added binary EMM to %s", token);
} else {
rdr_log(aureader, "ERROR: Cannot write binary EMM to %s (errno=%d: %s)\n", token, errno, strerror(errno));
}
fclose(fp);
}
}
}
开发者ID:westaus,项目名称:oscam,代码行数:46,代码来源:oscam-emm.c
示例12: oscam_ser_send_ecm
static int32_t oscam_ser_send_ecm(struct s_client *client, ECM_REQUEST *er, uchar *buf)
{
char *tmp;
switch(client->serialdata->oscam_ser_proto)
{
case P_HSIC:
memset(buf, 0, 12);
buf[0] = 2;
i2b_buf(2, er->caid, buf + 1);
i2b_buf(3, er->prid, buf + 3);
i2b_buf(2, er->pid, buf + 6);
i2b_buf(2, er->srvid, buf + 10);
memcpy(buf + 12, er->ecm, er->ecmlen);
oscam_ser_send(client, buf, 12 + er->ecmlen);
break;
case P_BOMBA:
oscam_ser_send(client, er->ecm, er->ecmlen);
break;
case P_DSR95:
if(cs_malloc(&tmp, er->ecmlen * 2 + 1))
{
if(client->serialdata->dsr9500type == P_DSR_WITHSID)
{
snprintf((char *)buf, 512, "%c%08X%04X%s%04X\n\r",
3, er->prid, er->caid, cs_hexdump(0, er->ecm, er->ecmlen, tmp, er->ecmlen * 2 + 1), er->srvid);
oscam_ser_send(client, buf, (er->ecmlen << 1) + 19); // 1 + 8 + 4 + l*2 + 4 + 2
}
else
{
snprintf((char *)buf, 512, "%c%08X%04X%s\n\r",
3, er->prid, er->caid, cs_hexdump(0, er->ecm, er->ecmlen, tmp, er->ecmlen * 2 + 1));
oscam_ser_send(client, buf, (er->ecmlen << 1) + 15); // 1 + 8 + 4 + l*2 + 2
}
free(tmp);
}
break;
case P_ALPHA:
buf[0] = 0x80;
i2b_buf(2, 2 + er->ecmlen, buf + 1);
i2b_buf(2, er->caid, buf + 3);
memcpy(buf + 5, er->ecm, er->ecmlen);
oscam_ser_send(client, buf, oscam_ser_alpha_convert(buf, 5 + er->ecmlen));
break;
}
return (0);
}
开发者ID:StbLinux,项目名称:oscam,代码行数:46,代码来源:module-serial.c
示例13: radegast_recv_chk
static int32_t radegast_recv_chk(struct s_client *client, uchar *dcw, int32_t *rc, uchar *buf, int32_t UNUSED(n))
{
if ((buf[0] == 2) && (buf[1] == 0x12)) {
char tmp_dbg[33];
memcpy(dcw, buf+4, 16);
cs_debug_mask(D_CLIENT, "radegast: recv chk - %s", cs_hexdump(0, dcw, 16, tmp_dbg, sizeof(tmp_dbg)));
*rc = 1;
return(client->reader->msg_idx);
}
return (-1);
}
开发者ID:kamyk11,项目名称:oscam,代码行数:12,代码来源:module-radegast.c
示例14: ICC_Async_Activate
int32_t ICC_Async_Activate(struct s_reader *reader, ATR *atr, uint16_t deprecated)
{
rdr_debug_mask(reader, D_IFD, "Activating card");
reader->current_baudrate = DEFAULT_BAUDRATE;
if(reader->atr[0] != 0 && !reader->ins7e11_fast_reset)
{
rdr_log(reader, "Using ATR from reader config");
ATR_InitFromArray(atr, reader->atr, ATR_MAX_SIZE);
}
else
{
call(reader->crdr.activate(reader, atr));
if(reader->crdr.skip_extra_atr_parsing)
{ return OK; }
}
unsigned char atrarr[ATR_MAX_SIZE];
uint32_t atr_size;
ATR_GetRaw(atr, atrarr, &atr_size);
char tmp[atr_size * 3 + 1];
rdr_log(reader, "ATR: %s", cs_hexdump(1, atrarr, atr_size, tmp, sizeof(tmp)));
memcpy(reader->card_atr, atrarr, atr_size);
reader->card_atr_length = atr_size;
/* Get ICC reader->convention */
if(ATR_GetConvention(atr, &(reader->convention)) != ATR_OK)
{
rdr_log(reader, "ERROR: Could not read reader->convention");
reader->convention = 0;
reader->protocol_type = 0;
return ERROR;
}
reader->protocol_type = ATR_PROTOCOL_TYPE_T0;
// Parse_ATR and InitCard need to be included in lock because they change parity of serial port
if(reader->crdr.lock)
{ reader->crdr.lock(reader); }
int32_t ret = Parse_ATR(reader, atr, deprecated);
if(reader->crdr.unlock)
{ reader->crdr.unlock(reader); }
if(ret)
{ rdr_log(reader, "ERROR: Parse_ATR returned error"); }
if(ret)
{ return ERROR; }
rdr_debug_mask(reader, D_IFD, "Card succesfully activated");
return OK;
}
开发者ID:BATYD-Turksat,项目名称:oscam,代码行数:53,代码来源:icc_async.c
示例15: bulcrypt_do_emm
static int32_t bulcrypt_do_emm(struct s_reader *reader, EMM_PACKET *ep)
{
char tmp[512];
uchar emm_cmd[1024];
def_resp
// DE 04 xx yy B0
// xx == EMM type (emm[0])
// yy == EMM type2 (emm[5])
// B0 == EMM len (176)
memcpy(emm_cmd, cmd_emm1, sizeof(cmd_emm1));
memcpy(emm_cmd + sizeof(cmd_emm1), ep->emm + 7, 176);
switch (ep->emm[0]) {
case BULCRYPT_EMM_UNIQUE_82:
emm_cmd[2] = ep->emm[0]; // 0x82
break;
case BULCRYPT_EMM_UNIQUE_8a: // Polaris equivallent of 0x82
emm_cmd[2] = 0x82;
emm_cmd[3] = 0x0b;
break;
case BULCRYPT_EMM_SHARED_84:
emm_cmd[2] = ep->emm[0]; // 0x84
emm_cmd[3] = ep->emm[5]; // 0x0b
break;
case BULCRYPT_EMM_UNIQUE_85:
case BULCRYPT_EMM_UNIQUE_8b: // Polaris 0x85 equivallent of 0x85
memcpy(emm_cmd, cmd_emm2, sizeof(cmd_emm2));
emm_cmd[2] = ep->emm[5]; // 0xXX (Last bytes of the serial)
emm_cmd[3] = ep->emm[6]; // 0x0b
break;
}
// Write emm
write_cmd(emm_cmd, emm_cmd + 5);
if (cta_lr != 2 || cta_res[0] != 0x90 || (cta_res[1] != 0x00 && cta_res[1] != 0x0a))
{
rdr_log(reader, "(emm_cmd) Unexpected card answer: %s",
cs_hexdump(1, cta_res, cta_lr, tmp, sizeof(tmp)));
return ERROR;
}
if (ep->emm[0] == BULCRYPT_EMM_UNIQUE_82 && cta_res[0] == 0x90 && cta_res[1] == 0x0a) {
rdr_log(reader, "Your subscription data was updated.");
add_job(reader->client, ACTION_READER_CARDINFO, NULL, 0);
}
return OK;
}
开发者ID:crzyfngrz,项目名称:oscam-1,代码行数:50,代码来源:reader-bulcrypt.c
示例16: dre_set_provider_info
static int32_t dre_set_provider_info(struct s_reader *reader)
{
def_resp;
int32_t i;
uchar cmd59[] = { 0x59, 0x14 }; // subscriptions
uchar cmd5b[] = { 0x5b, 0x00, 0x14 }; //validity dates
struct dre_data *csystem_data = reader->csystem_data;
cs_clear_entitlement(reader);
cmd59[1] = csystem_data->provider;
if((dre_cmd(cmd59))) //ask subscription packages, returns error on 0x11 card
{
uchar pbm[32];
char tmp_dbg[65];
memcpy(pbm, cta_res + 3, cta_lr - 6);
rdr_log_dbg(reader, D_READER, "pbm: %s", cs_hexdump(0, pbm, 32, tmp_dbg, sizeof(tmp_dbg)));
if(pbm[0] == 0xff)
{ rdr_log(reader, "no active packages"); }
else
for(i = 0; i < 32; i++)
if(pbm[i] != 0xff)
{
cmd5b[1] = i;
cmd5b[2] = csystem_data->provider;
dre_cmd(cmd5b); //ask for validity dates
time_t start;
time_t end;
start = (cta_res[3] << 24) | (cta_res[4] << 16) | (cta_res[5] << 8) | cta_res[6];
end = (cta_res[7] << 24) | (cta_res[8] << 16) | (cta_res[9] << 8) | cta_res[10];
struct tm temp;
localtime_r(&start, &temp);
int32_t startyear = temp.tm_year + 1900;
int32_t startmonth = temp.tm_mon + 1;
int32_t startday = temp.tm_mday;
localtime_r(&end, &temp);
int32_t endyear = temp.tm_year + 1900;
int32_t endmonth = temp.tm_mon + 1;
int32_t endday = temp.tm_mday;
rdr_log(reader, "active package %i valid from %04i/%02i/%02i to %04i/%02i/%02i", i, startyear, startmonth, startday,
endyear, endmonth, endday);
cs_add_entitlement(reader, reader->caid, b2ll(4, reader->prid[0]), 0, 0, start, end, 1, 1);
}
}
return OK;
}
开发者ID:Leatherface75,项目名称:enigma2pc,代码行数:50,代码来源:reader-dre.c
示例17: cardreader_process_ecm
void cardreader_process_ecm(struct s_reader *reader, struct s_client *cl, ECM_REQUEST *er) {
if (ecm_ratelimit_check(reader, er, 1) != OK) {
rdr_debug_mask(reader, D_READER, "%s: ratelimit check failed.", __func__);
return; // reader_mode = 1: checkout ratelimiter in reader mode so srvid can be replaced
}
cs_ddump_mask(D_ATR, er->ecm, er->ecmlen, "ecm:");
struct timeb tps, tpe;
cs_ftime(&tps);
struct s_ecm_answer ea;
memset(&ea, 0, sizeof(struct s_ecm_answer));
int32_t rc = cardreader_do_ecm(reader, er, &ea);
rdr_debug_mask(reader, D_READER, "%s: cardreader_do_ecm returned rc=%d (ERROR=%d)", __func__, rc, ERROR);
ea.rc = E_FOUND; //default assume found
ea.rcEx = 0; //no special flag
if (rc == ERROR) {
char buf[32];
rdr_debug_mask(reader, D_READER, "Error processing ecm for caid %04X, srvid %04X, servicename: %s",
er->caid, er->srvid, get_servicename(cl, er->srvid, er->caid, buf));
ea.rc = E_NOTFOUND;
ea.rcEx = 0;
ICC_Async_DisplayMsg(reader, "Eer");
}
if (rc == E_CORRUPT) {
char buf[32];
rdr_debug_mask(reader, D_READER, "Error processing ecm for caid %04X, srvid %04X, servicename: %s",
er->caid, er->srvid, get_servicename(cl, er->srvid, er->caid, buf));
ea.rc = E_NOTFOUND;
ea.rcEx = E2_WRONG_CHKSUM; //flag it as wrong checksum
memcpy (ea.msglog,"Invalid ecm type for card",25);
}
cs_ftime(&tpe);
cl->lastecm=time((time_t*)0);
char ecmd5[17*3];
cs_hexdump(0, er->ecmd5, 16, ecmd5, sizeof(ecmd5));
rdr_debug_mask(reader, D_READER, "ecm hash: %s real time: %ld ms",
ecmd5, 1000 * (tpe.time - tps.time) + tpe.millitm - tps.millitm);
write_ecm_answer(reader, er, ea.rc, ea.rcEx, ea.cw, ea.msglog);
reader_post_process(reader);
}
开发者ID:IgorWallacy,项目名称:oscam-nx111,代码行数:48,代码来源:reader-common.c
示例18: cardreader_process_ecm
void cardreader_process_ecm(struct s_reader *reader, struct s_client *cl, ECM_REQUEST *er)
{
cs_log_dump_dbg(D_ATR, er->ecm, er->ecmlen, "ecm:");
struct timeb tps, tpe;
struct s_ecm_answer ea;
memset(&ea, 0, sizeof(struct s_ecm_answer));
cs_ftime(&tps);
int32_t rc = cardreader_do_ecm(reader, er, &ea);
cs_ftime(&tpe);
rdr_log_dbg(reader, D_READER, "%s: cardreader_do_ecm returned rc=%d (ERROR=%d)", __func__, rc, ERROR);
ea.rc = E_FOUND; //default assume found
ea.rcEx = 0; //no special flag
if(rc == ERROR)
{
char buf[CS_SERVICENAME_SIZE];
rdr_log_dbg(reader, D_READER, "Error processing ecm for caid %04X, provid %06X, srvid %04X, servicename: %s",
er->caid, er->prid, er->srvid, get_servicename(cl, er->srvid, er->prid, er->caid, buf, sizeof(buf)));
ea.rc = E_NOTFOUND;
ea.rcEx = 0;
ICC_Async_DisplayMsg(reader, "Eer");
}
if(rc == E_CORRUPT)
{
char buf[CS_SERVICENAME_SIZE];
rdr_log_dbg(reader, D_READER, "Error processing ecm for caid %04X, provid %06X, srvid %04X, servicename: %s",
er->caid, er->prid, er->srvid, get_servicename(cl, er->srvid, er->prid, er->caid, buf, sizeof(buf)));
ea.rc = E_NOTFOUND;
ea.rcEx = E2_WRONG_CHKSUM; //flag it as wrong checksum
memcpy(ea.msglog, "Invalid ecm type for card", 25);
}
write_ecm_answer(reader, er, ea.rc, ea.rcEx, ea.cw, ea.msglog, ea.tier, &ea.cw_ex);
cl->lastecm = time((time_t *)0);
char ecmd5[17 * 3];
cs_hexdump(0, er->ecmd5, 16, ecmd5, sizeof(ecmd5));
rdr_log_dbg(reader, D_READER, "ecm hash: %s real time: %"PRId64" ms", ecmd5, comp_timeb(&tpe, &tps));
reader_post_process(reader);
}
开发者ID:FFTEAM,项目名称:oscam,代码行数:48,代码来源:reader-common.c
示例19: cs_log_int
void cs_log_int(uint16_t mask, int8_t lock __attribute__((unused)), const uchar *buf, int32_t n, const char *fmt, ...)
{
va_list params;
char log_txt[LOG_BUF_SIZE];
int32_t i, len = 0;
pthread_mutex_lock(&log_mutex);
if (((mask & cs_dblevel) || !mask) && (fmt))
{
va_start(params, fmt);
len = get_log_header(1, log_txt);
vsnprintf(log_txt + len, sizeof(log_txt) - len, fmt, params);
va_end(params);
int repeated_line = strcmp(last_log_txt, log_txt + len) == 0;
if (last_log_duplicates > 0) {
if (!last_log_ts) // Must be initialized once
last_log_ts = log_ts;
// Report duplicated lines when the new log line is different
// than the old or 60 seconds have passed.
if (!repeated_line || log_ts - last_log_ts >= 60) {
char dupl[len + 32];
len = get_log_header(2, dupl);
snprintf(dupl + len - 1, len + 32, "--- Skipped %d duplicated log lines ---", last_log_duplicates);
write_to_log_int(dupl, 0);
last_log_duplicates = 0;
last_log_ts = log_ts;
}
}
if (!repeated_line) {
memcpy(last_log_txt, log_txt + len, LOG_BUF_SIZE);
write_to_log_int(log_txt, len);
} else {
last_log_duplicates++;
}
}
if (buf && ((mask & cs_dblevel) || !mask))
{
for (i=0; i<n; i+=16)
{
len = get_log_header(0, log_txt);
cs_hexdump(1, buf+i, (n-i>16) ? 16 : n-i, log_txt + len, sizeof(log_txt) - len);
write_to_log_int(log_txt, len);
}
}
pthread_mutex_unlock(&log_mutex);
}
开发者ID:sangood,项目名称:oscam-nx111,代码行数:46,代码来源:oscam-log.c
示例20: griffin_init_cmd
// Sets cmd_buf and returns buf_len
static uint32_t griffin_init_cmd(struct s_reader *rdr, uint8_t *cmd_buf, uint8_t cmd_op, const uint8_t *data, uint8_t data_len)
{
#define cmd_len 5
memset(cmd_buf, 0, cmd_buf_len);
cmd_buf[0] = 0xDC; // Command start
cmd_buf[1] = cmd_op;
cmd_buf[2] = 0x00;
cmd_buf[3] = 0x00;
cmd_buf[4] = data_len; // Set payload length
if (data && data_len)
memcpy(cmd_buf + cmd_len, data, data_len);
uint32_t len = cmd_len + (data ? data_len : 0);
if (DEBUG) {
char tmp[1024];
rdr_log(rdr, "SEND[-] -> %s", cs_hexdump(1, cmd_buf, len, tmp, sizeof(tmp)));
}
return len;
}
开发者ID:TELE-TWIN,项目名称:oscam,代码行数:19,代码来源:reader-griffin.c
注:本文中的cs_hexdump函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论