1 | #define ADDRLEN 4 // Address length in EMM commands
|
---|
2 | #define MAX_PROV 16
|
---|
3 | #define SCT_LEN(sct) (3+((sct[1]&0x0f)<<8)+sct[2])
|
---|
4 | #define MAX_LEN 256
|
---|
5 |
|
---|
6 | //Warning: OK = 0 and ERROR = 1 in csctapi !!!
|
---|
7 | #define SKIPPED 2
|
---|
8 | #define OK 1
|
---|
9 | #define ERROR 0
|
---|
10 |
|
---|
11 | #include "atr.h"
|
---|
12 |
|
---|
13 | #define SC_IRDETO 1
|
---|
14 | #define SC_CRYPTOWORKS 2
|
---|
15 | #define SC_VIACCESS 3
|
---|
16 | #define SC_CONAX 4
|
---|
17 | #define SC_SECA 5
|
---|
18 | #define SC_VIDEOGUARD2 6
|
---|
19 | #define SC_DRE 7
|
---|
20 | #define SC_NAGRA 8
|
---|
21 | #define SC_CCCAM 9
|
---|
22 |
|
---|
23 | // reader-irdeto
|
---|
24 | int irdeto_card_init(struct s_reader * reader, ATR atr);
|
---|
25 | int irdeto_do_ecm(struct s_reader * reader, ECM_REQUEST *);
|
---|
26 | int irdeto_do_emm(struct s_reader * reader, EMM_PACKET *);
|
---|
27 | int irdeto_get_emm_type(EMM_PACKET *, struct s_reader *); //s_reader as last argument to remind you that this function picks out OTHER reader than you would expect!
|
---|
28 | int irdeto_card_info(struct s_reader * reader);
|
---|
29 | void irdeto_get_emm_filter(struct s_reader * rdr, uchar *filter);
|
---|
30 |
|
---|
31 | // reader-viaccess
|
---|
32 | int viaccess_card_init(struct s_reader * reader, ATR atr);
|
---|
33 | int viaccess_do_ecm(struct s_reader * reader, ECM_REQUEST *);
|
---|
34 | int viaccess_do_emm(struct s_reader * reader, EMM_PACKET *);
|
---|
35 | int viaccess_get_emm_type(EMM_PACKET *, struct s_reader *);
|
---|
36 | int viaccess_card_info(struct s_reader * reader);
|
---|
37 | void viaccess_get_emm_filter(struct s_reader * rdr, uchar *filter);
|
---|
38 |
|
---|
39 | // reader-videoguard
|
---|
40 | int videoguard_card_init(struct s_reader * reader, ATR atr);
|
---|
41 | int videoguard_do_ecm(struct s_reader * reader, ECM_REQUEST *);
|
---|
42 | int videoguard_do_emm(struct s_reader * reader, EMM_PACKET *);
|
---|
43 | int videoguard_get_emm_type(EMM_PACKET *, struct s_reader *);
|
---|
44 | int videoguard_card_info(struct s_reader * reader);
|
---|
45 | void videoguard_get_emm_filter(struct s_reader * rdr, uchar *filter);
|
---|
46 |
|
---|
47 | // reader-cryptoworks
|
---|
48 | int cryptoworks_card_init(struct s_reader * reader, ATR atr);
|
---|
49 | int cryptoworks_do_ecm(struct s_reader * reader, ECM_REQUEST *);
|
---|
50 | int cryptoworks_do_emm(struct s_reader * reader, EMM_PACKET *);
|
---|
51 | int cryptoworks_get_emm_type(EMM_PACKET *, struct s_reader *);
|
---|
52 | int cryptoworks_card_info(struct s_reader * reader);
|
---|
53 | int CheckSctLen(const uchar *, int);
|
---|
54 | void cryptoworks_get_emm_filter(struct s_reader * rdr, uchar *filter);
|
---|
55 |
|
---|
56 | // reader-seca
|
---|
57 | int seca_card_init(struct s_reader * reader, ATR atr);
|
---|
58 | int seca_do_ecm(struct s_reader * reader, ECM_REQUEST *);
|
---|
59 | int seca_do_emm(struct s_reader * reader, EMM_PACKET *);
|
---|
60 | int seca_get_emm_type(EMM_PACKET *, struct s_reader *);
|
---|
61 | int seca_card_info(struct s_reader * reader);
|
---|
62 | void seca_get_emm_filter(struct s_reader * rdr, uchar *filter);
|
---|
63 |
|
---|
64 | // reader nagra2/3
|
---|
65 | int nagra2_card_init(struct s_reader * reader, ATR atr);
|
---|
66 | int nagra2_do_ecm(struct s_reader * reader, ECM_REQUEST *er);
|
---|
67 | int nagra2_card_info(struct s_reader * reader);
|
---|
68 | int nagra2_do_emm(struct s_reader * reader, EMM_PACKET *);
|
---|
69 | int nagra2_get_emm_type(EMM_PACKET *, struct s_reader *);
|
---|
70 | void nagra2_post_process(struct s_reader * reader);
|
---|
71 | void nagra2_get_emm_filter(struct s_reader * rdr, uchar *filter);
|
---|
72 |
|
---|
73 | // reader-conax
|
---|
74 | int conax_card_init(struct s_reader * reader, ATR atr);
|
---|
75 | int conax_do_ecm(struct s_reader * reader, ECM_REQUEST *);
|
---|
76 | int conax_do_emm(struct s_reader * reader, EMM_PACKET *);
|
---|
77 | int conax_get_emm_type(EMM_PACKET *, struct s_reader *);
|
---|
78 | int conax_card_info(struct s_reader * reader);
|
---|
79 | void conax_get_emm_filter(struct s_reader * rdr, uchar *filter);
|
---|
80 |
|
---|
81 | // reader-dre
|
---|
82 | int dre_card_init(struct s_reader * reader, ATR atr);
|
---|
83 | int dre_do_ecm(struct s_reader * reader, ECM_REQUEST *);
|
---|
84 | int dre_do_emm(struct s_reader * reader, EMM_PACKET *);
|
---|
85 | int dre_get_emm_type(EMM_PACKET *, struct s_reader *);
|
---|
86 | int dre_card_info(void);
|
---|
87 | void dre_get_emm_filter(struct s_reader * rdr, uchar *filter);
|
---|
88 |
|
---|
89 | #define write_cmd(cmd, data) \
|
---|
90 | { \
|
---|
91 | if (card_write(reader, cmd, data, cta_res, &cta_lr)) return ERROR; \
|
---|
92 | }
|
---|
93 |
|
---|
94 | #define get_atr \
|
---|
95 | unsigned char atr[64]; \
|
---|
96 | unsigned int atr_size; \
|
---|
97 | memset(atr, 0, sizeof(atr)); \
|
---|
98 | ATR_GetRaw(&newatr, atr, &atr_size);
|
---|
99 |
|
---|
100 | #define get_hist \
|
---|
101 | unsigned char hist[64]; \
|
---|
102 | unsigned int hist_size; \
|
---|
103 | ATR_GetHistoricalBytes(&newatr, hist, &hist_size);
|
---|
104 |
|
---|
105 | #define def_resp \
|
---|
106 | unsigned char cta_res[CTA_RES_LEN]; \
|
---|
107 | unsigned short cta_lr;
|
---|