⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 newcamd-client.h

📁 Example Dreambox CAM source code
💻 H
字号:
// implements the newcamd protocol#ifndef __NEWCAMD_CLIENT_H__#define __NEWCAMD_CLIENT_H__#include "rqcamd.h"#include "des.h"#define NETWORK_TIMEOUT 10000 //10 seconds#define MAX_CARD_PROVIDER_COUNT 8// ------------------------------------ triple des class declaration ----------------------------------------class triple_des{	private:	i_DES_key_schedule ks1,ks2;	void set_odd_parity(unsigned char *key);		public:	triple_des( void );	unsigned char des_key[16];	void schedule_key( void );	int pad_message(unsigned char *data, unsigned short int len);	unsigned char xor_checksum(const unsigned char *buf, unsigned int length);	void xor_buffers(unsigned char *dest, unsigned char *src_1, unsigned char *src_2, unsigned int length);		// 14 byte key input, 16 byte expanded output	void expand(unsigned char *expanded, unsigned char *normal);	int decrypt(unsigned char *data, int len);	int encrypt(const unsigned char *data, int len, unsigned char *crypt);};// ------------------------------------ newcamd client class declarations --------------------------------------#define CWS_NETMSGSIZE   240#define USERNAME_LENGTH  32#define PASSWORD_LENGTH  32#define CWS_FIRSTCMDNO   0xE0typedef enum{	MSG_CLIENT_2_SERVER_LOGIN = CWS_FIRSTCMDNO,	MSG_CLIENT_2_SERVER_LOGIN_ACK,	MSG_CLIENT_2_SERVER_LOGIN_NAK,	MSG_CARD_DATA_REQ,	MSG_CARD_DATA,	MSG_SERVER_2_CLIENT_NAME,	MSG_SERVER_2_CLIENT_NAME_ACK,	MSG_SERVER_2_CLIENT_NAME_NAK,	MSG_SERVER_2_CLIENT_LOGIN,	MSG_SERVER_2_CLIENT_LOGIN_ACK,	MSG_SERVER_2_CLIENT_LOGIN_NAK,	MSG_ADMIN,	MSG_ADMIN_ACK,	MSG_ADMIN_LOGIN,	MSG_ADMIN_LOGIN_ACK,	MSG_ADMIN_LOGIN_NAK,	MSG_ADMIN_COMMAND,	MSG_ADMIN_COMMAND_ACK,	MSG_ADMIN_COMMAND_NAK} net_msg_type_t;typedef enum{	LOGIN_KEY,	SESSION_KEY} key_encryption_t;typedef enum{	VERSION_520,	VERSION_525} protocol_version_t;class newcamd_client{	public:	newcamd_client(char *server_url, unsigned int timeout, protocol_version_t version = VERSION_525);	~newcamd_client(void);		// configuration related	unsigned int status;	char status_description[128];	bool process_emms;	int dbg;		short int user_id;	unsigned short int card_caid;	unsigned short int card_provider_id[MAX_CARD_PROVIDER_COUNT];	unsigned short int card_provider_id_count;	unsigned char cam_id[4];		//control words	unsigned char cw_0[8];	unsigned char cw_1[8];		//verbs	bool is_ready( void );	void send_ecm(unsigned char *ecm_data, unsigned short int ecm_data_length, unsigned short int sid);	void send_emm(unsigned char *emm_data, unsigned short int emm_data_length);		private:	int fd; //file descriptor for network connections.	triple_des des;		unsigned short int sent_sequence_id;	unsigned short int received_sequence_id;		bool ready;	int network_timeout;		protocol_version_t protocol_version;	unsigned char custom_data[8];	unsigned short int custom_data_length;		char url[128];	char hostname[64];	unsigned int port;	char username[32];	char password[32];		// key related	unsigned char random_key[14];	unsigned char des_key[14];	unsigned char login_key[14];	unsigned char session_key[14];		unsigned char expanded_login_key[16];	unsigned char expanded_session_key[16];		//misc	void set_protocol_version( protocol_version_t version );	void set_sid( unsigned short int sid );		void create_login_key();	void create_session_key( char *encrypted_password );		void server_connect( void );	void server_login( void );	void server_disconnect( void );		void parse_url( void );		//network related	int connect_non_blocking(int fd, struct sockaddr_in *addr, unsigned int timeout_seconds);		void send_command( net_msg_type_t command, unsigned char *data, unsigned short int data_length, unsigned char *custom_data, key_encryption_t key_type );	net_msg_type_t receive_command( unsigned char *custom_data, key_encryption_t key_type );			void send_message(unsigned char *message, unsigned short int length, unsigned char *custom_data, key_encryption_t key_type );	int receive_message(unsigned char *message, unsigned char *custom_data, key_encryption_t key_type );		int network_write(unsigned char *buffer, unsigned int length);	int network_read(unsigned char *buffer, unsigned int length, int override_timeout = -1);	int network_read_poll(int override_timeout = -1);		void debug_output(unsigned char *buffer, unsigned int length, char *header);};#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -