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

📄 mifareprohost.src

📁 mifarea卡程序mifarea卡程序mifarea卡程序
💻 SRC
📖 第 1 页 / 共 5 页
字号:
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	DPTR,#?_MProCommand?BYTE+05H
	XCH  	A,R1
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R2
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R1
	MOVX 	@DPTR,A
	MOV  	DPTR,#len?1877
	MOVX 	A,@DPTR
	MOV  	R1,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	DPTR,#?_MProCommand?BYTE+08H
	XCH  	A,R1
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R2
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R1
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,#01H
	MOVX 	@DPTR,A
	MOV  	DPTR,#FWI
	MOVX 	A,@DPTR
	MOV  	R7,A
	MOV  	DPTR,#?_MProCommand?BYTE+0CH
	CLR  	A
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R7
	MOVX 	@DPTR,A
	MOV  	DPTR,#CmdBuf?1876
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R1,A
	MOV  	R5,#09H
	MOV  	R4,#00H
	LCALL	_MProCommand
	MOV  	A,R7
	JZ   	?C0073
	MOV  	R7,#01H
	RET  	
?C0073:
; 	if(CmdBuf[*len-4]==0x90) return(MI_OK);
			; SOURCE LINE # 272
	MOV  	DPTR,#len?1877
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R1,A
	LCALL	?C?ILDPTR
	ADD  	A,#0FCH
	MOV  	R7,A
	MOV  	A,B
	ADDC 	A,#0FFH
	MOV  	R6,A
	MOV  	DPTR,#CmdBuf?1876
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R1,A
	MOV  	DPL,R7
	MOV  	DPH,R6
	LCALL	?C?CLDOPTR
	CJNE 	A,#090H,?C0075
	MOV  	R7,#00H
	RET  	
?C0075:
; 	else return(!MI_OK);	  
			; SOURCE LINE # 273
	MOV  	R7,#01H
; }
			; SOURCE LINE # 274
?C0074:
	RET  	
; END OF _EvalOS_GetChipInfo

; 
; /**********************************************************************
; 函数名:EvalOS_RSAEncpDecp
; 
; 输入参数: CID,命令参数buf,是否加密标识Encrypt,加密数据长度datalen
; 
; 输出: 返回读取状态标识 status
; 
; 核心处理: 数据交换
; 
; 时间: 11-03-09
; **********************************************************************/
; char EvalOS_RSAEncpDecp(unsigned char *CmdBuf,

	RSEG  ?PR?_EvalOS_RSAEncpDecp?MIFAREPROHOST
_EvalOS_RSAEncpDecp:
	USING	0
			; SOURCE LINE # 287
	MOV  	DPTR,#CmdBuf?1978
	MOV  	A,R3
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R2
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R1
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R5
	MOVX 	@DPTR,A
; 			            unsigned char Encrypt,
; 			            unsigned char datalen, 
; 						unsigned int *len)
; {
			; SOURCE LINE # 291
; 	unsigned int mm,nn;
; //  static unsigned char regvalue5;
; 
; 	
;         for((*len)=(datalen-1); (*len)>0; (*len)--)
			; SOURCE LINE # 296
	INC  	DPTR
	MOVX 	A,@DPTR
	ADD  	A,#0FFH
	MOV  	R7,A
	CLR  	A
	ADDC 	A,#0FFH
	MOV  	R1,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	XCH  	A,R1
	MOV  	B,R7
	LCALL	?C?ISTPTR
?C0077:
	MOV  	DPTR,#len?1981
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R1,A
	LCALL	?C?ILDPTR
	SETB 	C
	SUBB 	A,#00H
	MOV  	A,B
	SUBB 	A,#00H
	JC   	?C0078
; 	{
			; SOURCE LINE # 297
; 		CmdBuf[(*len)+7]=CmdBuf[(*len)];
			; SOURCE LINE # 298
	LCALL	?C?ILDPTR
	MOV  	R7,A
	MOV  	R6,B
	MOV  	DPTR,#CmdBuf?1978
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R1,A
	MOV  	DPL,R7
	MOV  	DPH,R6
	LCALL	?C?CLDOPTR
	MOV  	R5,A
	MOV  	A,#07H
	ADD  	A,R7
	MOV  	DPL,A
	CLR  	A
	ADDC 	A,R6
	MOV  	DPH,A
	MOV  	A,R5
	LCALL	?C?CSTOPTR
; 	}
			; SOURCE LINE # 299
	MOV  	DPTR,#len?1981
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R1,A
	MOV  	A,#0FFH
	MOV  	B,A
	LCALL	?C?IILDPTR
	SJMP 	?C0077
?C0078:
; 	CmdBuf[7]=CmdBuf[0];
			; SOURCE LINE # 300
	MOV  	DPTR,#CmdBuf?1978
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R1,A
	LCALL	?C?CLDPTR
	MOV  	DPTR,#07H
	LCALL	?C?CSTOPTR
; 	CmdBuf[0]=0x0A|GBLK;// I-block PCB with CID
			; SOURCE LINE # 301
	MOV  	DPTR,#GBLK
	MOVX 	A,@DPTR
	ORL  	A,#0AH
	LCALL	?C?CSTPTR
; 	GBLK ^= 1;		// Toggle block number
			; SOURCE LINE # 302
	MOV  	DPTR,#GBLK
	MOVX 	A,@DPTR
	XRL  	A,#01H
	MOVX 	@DPTR,A
; 	CmdBuf[1]=CID;  	// CID
			; SOURCE LINE # 303
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R7,A
	MOV  	DPTR,#CmdBuf?1978
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R1,A
	MOV  	DPTR,#01H
	MOV  	A,R7
	LCALL	?C?CSTOPTR
; 	CmdBuf[2]=0xb8;	// INF:CLA
			; SOURCE LINE # 304
	MOV  	DPTR,#02H
	MOV  	A,#0B8H
	LCALL	?C?CSTOPTR
; 	CmdBuf[3]=0xb0;	// INF:INS
			; SOURCE LINE # 305
	MOV  	DPTR,#03H
	MOV  	A,#0B0H
	LCALL	?C?CSTOPTR
;         
;         CmdBuf[60]=0xb0;
			; SOURCE LINE # 307
	MOV  	DPTR,#03CH
	MOV  	A,#0B0H
	LCALL	?C?CSTOPTR
;         CmdBuf[61]=0x60;
			; SOURCE LINE # 308
	MOV  	DPTR,#03DH
	MOV  	A,#060H
	LCALL	?C?CSTOPTR
; 	CmdBuf[62]=0x06;
			; SOURCE LINE # 309
	MOV  	DPTR,#03EH
	MOV  	A,#06H
	LCALL	?C?CSTOPTR
; 	CmdBuf[63]=0x40;    //for RSA encode data array.
			; SOURCE LINE # 310
	MOV  	DPTR,#03FH
	MOV  	A,#040H
	LCALL	?C?CSTOPTR
; 
; 	if(Encrypt)
			; SOURCE LINE # 312
	MOV  	DPTR,#Encrypt?1979
	MOVX 	A,@DPTR
	MOV  	DPTR,#CmdBuf?1978
	JZ   	?C0080
; 		CmdBuf[4]=0x78;// INF:P1
			; SOURCE LINE # 313
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R1,A
	MOV  	DPTR,#04H
	MOV  	A,#078H
	SJMP 	?C0099
?C0080:
; 	else
; 		CmdBuf[4]=0x68;// INF:P1
			; SOURCE LINE # 315
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R1,A
	MOV  	DPTR,#04H
	MOV  	A,#068H
?C0099:
	LCALL	?C?CSTOPTR
?C0081:
; 	if(datalen == 64) CmdBuf[5]=0x02;
			; SOURCE LINE # 316
	MOV  	DPTR,#datalen?1980
	MOVX 	A,@DPTR
	MOV  	R7,A
	CJNE 	A,#040H,?C0082
	MOV  	DPTR,#CmdBuf?1978
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R1,A
	MOV  	DPTR,#05H
	MOV  	A,#02H
	SJMP 	?C0102
?C0082:
; 	else if(datalen == 96) CmdBuf[5]=0x05;
			; SOURCE LINE # 317
	MOV  	A,R7
	CJNE 	A,#060H,?C0084
	MOV  	DPTR,#CmdBuf?1978
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R1,A
	MOV  	DPTR,#05H
	MOV  	A,#05H
?C0100:
	SJMP 	?C0102
?C0084:
; 	else if(datalen == 128) CmdBuf[5]=0x08;
			; SOURCE LINE # 318
	MOV  	A,R7
	CJNE 	A,#080H,?C0086
	MOV  	DPTR,#CmdBuf?1978
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R1,A
	MOV  	DPTR,#05H
	MOV  	A,#08H
?C0101:
	SJMP 	?C0102
?C0086:
; 	else if(datalen == 192) CmdBuf[5]=0x0b;
			; SOURCE LINE # 319
	MOV  	A,R7
	CJNE 	A,#0C0H,?C0083
	MOV  	DPTR,#CmdBuf?1978
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R1,A
	MOV  	DPTR,#05H
	MOV  	A,#0BH
?C0102:
	LCALL	?C?CSTOPTR
?C0083:
; 	CmdBuf[6]=datalen;	// INF:Lc
			; SOURCE LINE # 320
	MOV  	DPTR,#datalen?1980
	MOVX 	A,@DPTR
	MOV  	R7,A
	MOV  	DPTR,#CmdBuf?1978
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R1,A
	MOV  	DPTR,#06H
	MOV  	A,R7
	LCALL	?C?CSTOPTR
; 	CmdBuf[datalen+7]=datalen;	// INF:Le
			; SOURCE LINE # 321
	MOV  	DPTR,#datalen?1980
	MOVX 	A,@DPTR
	MOV  	R6,A
	MOV  	R5,A
	MOV  	A,R7
	ADD  	A,#07H
	MOV  	DPL,A
	CLR  	A
	RLC  	A
	MOV  	DPH,A
	MOV  	A,R6
	LCALL	?C?CSTOPTR
; 	
; 	if(MProCommand(CmdBuf,datalen+10,CmdBuf,len,1,FWI) != MI_OK) return(!MI_OK);
			; SOURCE LINE # 323
	MOV  	A,R3
	PUSH 	ACC
	MOV  	A,R2
	PUSH 	ACC
	MOV  	A,R1
	PUSH 	ACC
	MOV  	A,R5
	ADD  	A,#0AH
	MOV  	R5,A
	CLR  	A
	RLC  	A
	MOV  	R4,A
	MOV  	DPTR,#CmdBuf?1978
	MOVX 	A,@DPTR
	MOV  	R1,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	DPTR,#?_MProCommand?BYTE+05H
	XCH  	A,R1
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R2
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R1
	MOVX 	@DPTR,A
	MOV  	DPTR,#len?1981
	MOVX 	A,@DPTR
	MOV  	R1,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	DPTR,#?_MProCommand?BYTE+08H
	XCH  	A,R1
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R2
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R1
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,#01H
	MOVX 	@DPTR,A
	MOV  	DPTR,#FWI
	MOVX 	A,@DPTR
	MOV  	R7,A
	MOV  	DPTR,#?_MProCommand?BYTE+0CH
	CLR  	A
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R7
	MOVX 	@DPTR,A
	POP  	ACC
	MOV  	R1,A
	POP  	ACC
	MOV  	R2,A
	POP  	ACC
	MOV  	R3,A
	LCALL	_MProCommand
	MOV  	A,R7
	JZ   	?C0089
	MOV  	R7,#01H
	RET  	
?C0089:
; 
; 	if(CmdBuf[*len-4]==0x90) return(MI_OK);
			; SOURCE LINE # 325
	MOV  	DPTR,#len?1981
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R1,A
	LCALL	?C?ILDPTR
	ADD  	A,#0FCH
	MOV  	R7,A
	MOV  	A,B
	ADDC 	A,#0FFH
	MOV  	R6,A
	MOV  	DPTR,#CmdBuf?1978
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R1,A
	MOV  	DPL,R7
	MOV  	DPH,R6
	LCALL	?C?CLDOPTR
	CJNE 	A,#090H,?C0091
	MOV  	R7,#00H
	RET  	
?C0091:
; 	else if((CmdBuf[0]&0xf0) == 0xf0)
			; SOURCE LINE # 326
	LCALL	?C?CLDPTR
	ANL  	A,#0F0H
	XRL  	A,#0F0H
	JZ   	$ + 5H
	LJMP 	?C0093
; 	{
			; SOURCE LINE # 327
; 	  //M500PcdWriteRegister(0x1b,regvalue5); // For testing purpose
; 	  
; 	  if(nn=MProCommand(CmdBuf,5,CmdBuf,len,1,CmdBuf[2]&0x0f) != MI_OK) return(!MI_OK);
			; SOURCE LINE # 330
	MOV  	A,R3
	PUSH 	ACC
	MOV  	A,R2
	PUSH 	ACC
	MOV  	A,R1
	PUSH 	ACC
	MOV  	DPTR,#CmdBuf?1978
	MOVX 	A,@DPTR
	MOV  	R1,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	DPTR,#?_MProCommand?BYTE+05H
	XCH  	A,R1
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R2
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R1
	MOVX 	@DPTR,A
	MOV  	DPTR,#len?1981
	MOVX 	A,@DPTR
	MOV  	R1,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	DPTR,#?_MProCommand?BYTE+08H
	XCH  	A,R1
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R2
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R1
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,#01H
	MOVX 	@DPTR,A
	MOV  	DPTR,#CmdBuf?1978
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R1,A
	MOV  	DPTR,#02H
	LCALL	?C?CLDOPTR
	ANL  	A,#0FH
	MOV  	R7,A
	MOV  	DPTR,#?_MProCommand?BYTE+0CH
	CLR  	A
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R7
	MOVX 	@DPTR,A
	POP  	ACC
	MOV  	R1,A
	POP  	ACC
	MOV  	R2,A
	POP  	ACC
	MOV  	R3,A
	MOV  	R5,#05H
	MOV  	R4,#00H
	LCALL	_MProCommand
	MOV  	A,R7
	MOV  	R6,#00H
	JZ   	?C0095
	MOV  	R7,#01H
	SJMP 	?C0096
?C0095:
	MOV  	R7,#00H
?C0096:
	MOV  	DPTR,#nn?1983
	MOV  	A,R6
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R7
	MOVX 	@DPTR,A
	ORL  	A,R6
	JZ   	?C0094
	MOV  	R7,#01H
	RET  	
?C0094:
; 		mm=*len;
			; SOURCE LINE # 331
	MOV  	DPTR,#len?1981
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R1,A
	LCALL	?C?ILDPTR
	MOV  	R7,A
	MOV  	R6,B
	MOV  	DPTR,#mm?1982
	MOV  	A,R6
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R7
	MOVX 	@DPTR,A
; 	  if(CmdBuf[(*len)-4]==0x90) return(MI_OK);
			; SOURCE LINE # 332
	ADD  	A,#0FCH
	MOV  	R7,A
	MOV  	A,R6
	ADDC 	A,#0FFH
	MOV  	R6,A
	MOV  	DPTR,#CmdBuf?1978
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R1,A
	MOV  	DPL,R7
	MOV  	DPH,R6
	LCALL	?C?CLDOPTR
	CJNE 	A,#090H,?C0090
	MOV  	R7,#00H
	RET  	
; 	}
			; SOURCE LINE # 333
?C0093:
; 	else return(!MI_OK);	  
			; SOURCE LINE # 334
	MOV  	R7,#01H
; }
			; SOURCE LINE # 335
?C0090:
	RET  	
; END OF _EvalOS_RSAEncpDecp

	END

⌨️ 快捷键说明

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