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

📄 mifare1.src

📁 mifarea卡程序mifarea卡程序mifarea卡程序
💻 SRC
📖 第 1 页 / 共 5 页
字号:
;                     break;
			; SOURCE LINE # 258
	SJMP 	?C0038
;                 }
			; SOURCE LINE # 259
?C0040:
;                 if(cmd[2+(i<<3)] == cmd[2+(i1<<3)])
			; SOURCE LINE # 260
	MOV  	DPTR,#i1?247
	MOVX 	A,@DPTR
	MOV  	B,#08H
	MUL  	AB
	MOV  	DPL,A
	MOV  	DPH,B
	INC  	DPTR
	INC  	DPTR
	LCALL	?C?CLDOPTR
	XRL  	A,R5
	JNZ  	?C0039
;                 {
			; SOURCE LINE # 261
;                     fsame = 1;
			; SOURCE LINE # 262
	SETB 	fsame?248
;                     break;
			; SOURCE LINE # 263
	SJMP 	?C0038
;                 }
			; SOURCE LINE # 264
;             }
			; SOURCE LINE # 265
?C0039:
	MOV  	DPTR,#i1?247
	MOVX 	A,@DPTR
	INC  	A
	MOVX 	@DPTR,A
	SJMP 	?C0037
?C0038:
;             if(fsame)
			; SOURCE LINE # 266
	JB   	fsame?248,?C0035
;                 break;
			; SOURCE LINE # 267
;         }
			; SOURCE LINE # 268
?C0036:
	MOV  	DPTR,#i?270+01H
	MOVX 	A,@DPTR
	INC  	A
	MOVX 	@DPTR,A
	JNZ  	?C0188
	MOV  	DPTR,#i?270
	MOVX 	A,@DPTR
	INC  	A
	MOVX 	@DPTR,A
?C0188:
	LJMP 	?C0034
?C0035:
;         if(i < len-1)  // found same sector in buffer
			; SOURCE LINE # 269
	MOV  	DPTR,#len?246+01H
	MOVX 	A,@DPTR
	ADD  	A,#0FFH
	MOV  	R7,A
	MOV  	DPTR,#len?246
	MOVX 	A,@DPTR
	ADDC 	A,#0FFH
	MOV  	R6,A
	CLR  	C
	MOV  	DPTR,#i?270+01H
	MOVX 	A,@DPTR
	SUBB 	A,R7
	MOV  	DPTR,#i?270
	MOVX 	A,@DPTR
	SUBB 	A,R6
	JNC  	?C0043
;         {
			; SOURCE LINE # 270
;             cmd[0] = ERRORCMD;
			; SOURCE LINE # 271
;             return 1;
			; SOURCE LINE # 272
	LJMP 	?C0215
;         }
			; SOURCE LINE # 273
?C0043:
;         
;         // cmd --> m1sector
;         cmd += 2;
			; SOURCE LINE # 276
	MOV  	DPTR,#cmd?245+01H
	CLR  	A
	MOV  	B,#02H
	LCALL	?C?IILDX
;         
;         // copy to key buffer
;         for(i=0; i<len; i++)
			; SOURCE LINE # 279
	CLR  	A
	MOV  	DPTR,#i?270
	MOVX 	@DPTR,A
	INC  	DPTR
	MOVX 	@DPTR,A
?C0044:
	MOV  	DPTR,#len?246
	MOVX 	A,@DPTR
	MOV  	R6,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R7,A
	CLR  	C
	MOV  	DPTR,#i?270+01H
	MOVX 	A,@DPTR
	SUBB 	A,R7
	MOV  	DPTR,#i?270
	MOVX 	A,@DPTR
	SUBB 	A,R6
	JC   	$ + 5H
	LJMP 	?C0045
;         {
			; SOURCE LINE # 280
;             m1sector = cmd[0] & 0x7f;
			; SOURCE LINE # 281
	MOV  	DPTR,#cmd?245
	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
	ANL  	A,#07FH
	MOV  	DPTR,#m1sector?262
	MOVX 	@DPTR,A
;             m1block = cmd[1];
			; SOURCE LINE # 282
	MOV  	DPTR,#01H
	LCALL	?C?CLDOPTR
	MOV  	DPTR,#m1block?263
	MOVX 	@DPTR,A
;             m1data = cmd + 2;
			; SOURCE LINE # 283
	MOV  	A,R1
	ADD  	A,#02H
	MOV  	R1,A
	CLR  	A
	ADDC 	A,R2
	MOV  	R2,A
	MOV  	DPTR,#m1data?269
	MOV  	A,R3
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R2
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R1
	MOVX 	@DPTR,A
;     
;             // store key
;             memcpy(m1keys[i], m1data, 6);
			; SOURCE LINE # 286
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R6,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R7,A
	MOV  	R4,#00H
	MOV  	R5,#06H
	LCALL	?C?IMUL
	MOV  	A,#LOW (m1keys)
	ADD  	A,R7
	MOV  	R1,A
	MOV  	A,#HIGH (m1keys)
	ADDC 	A,R6
	XCH  	A,R0
	MOV  	A,R1
	XCH  	A,R0
	MOV  	R4,A
	MOV  	R5,#01H
	MOV  	DPTR,#m1data?269
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R1,A
	MOV  	R6,#00H
	MOV  	R7,#06H
	LCALL	?C?COPY
;             if(!m1block)
			; SOURCE LINE # 287
	MOV  	DPTR,#m1block?263
	MOVX 	A,@DPTR
	MOV  	DPTR,#m1sector?262
	JNZ  	?C0047
;                 m1keystatus[i] = m1sector & 0x7f;
			; SOURCE LINE # 288
	MOVX 	A,@DPTR
	ANL  	A,#07FH
	SJMP 	?C0203
?C0047:
;             else
;                 m1keystatus[i] = m1sector | 0x80;
			; SOURCE LINE # 290
	MOVX 	A,@DPTR
	ORL  	A,#080H
?C0203:
	MOV  	R7,A
	MOV  	DPTR,#i?270
	MOVX 	A,@DPTR
	MOV  	R4,A
	INC  	DPTR
	MOVX 	A,@DPTR
	ADD  	A,#LOW (m1keystatus)
	MOV  	DPL,A
	MOV  	A,#HIGH (m1keystatus)
	ADDC 	A,R4
	MOV  	DPH,A
	MOV  	A,R7
	MOVX 	@DPTR,A
?C0048:
;             
;             cmd += 8;
			; SOURCE LINE # 292
	MOV  	DPTR,#cmd?245+01H
	CLR  	A
	MOV  	B,#08H
	LCALL	?C?IILDX
;         }
			; SOURCE LINE # 293
	MOV  	DPTR,#i?270+01H
	MOVX 	A,@DPTR
	INC  	A
	MOVX 	@DPTR,A
	JNZ  	?C0189
	MOV  	DPTR,#i?270
	MOVX 	A,@DPTR
	INC  	A
	MOVX 	@DPTR,A
?C0189:
	LJMP 	?C0044
?C0045:
;         m1keycnt = i;
			; SOURCE LINE # 294
	MOV  	DPTR,#i?270
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R7,A
	MOV  	DPTR,#m1keycnt
	MOVX 	@DPTR,A
;         
;         cmd[0] = SUCCESS;
			; SOURCE LINE # 296
	MOV  	DPTR,#cmd?245
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R1,A
	CLR  	A
	LCALL	?C?CSTPTR
;         cmd[1] = m1keycnt;
			; SOURCE LINE # 297
	MOV  	DPTR,#cmd?245
	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
?C0206:
;         return 2;
			; SOURCE LINE # 298
	LJMP 	?C0246
;     }
			; SOURCE LINE # 299
?C0029:
;     
;     // 其他命令,首先作认证
;     // search key for current sector
;     m1keyidx = 0xff;
			; SOURCE LINE # 303
	MOV  	DPTR,#m1keyidx?267
	MOV  	A,#0FFH
	MOVX 	@DPTR,A
;     fkeypassed = 0;
			; SOURCE LINE # 304
	CLR  	fkeypassed?268
;     for(i=0; i<m1keycnt; i++)
			; SOURCE LINE # 305
	CLR  	A
	MOV  	DPTR,#i?270
	MOVX 	@DPTR,A
	INC  	DPTR
	MOVX 	@DPTR,A
?C0049:
	MOV  	DPTR,#m1keycnt
	MOVX 	A,@DPTR
	MOV  	R7,A
	MOV  	DPTR,#i?270
	MOVX 	A,@DPTR
	MOV  	R4,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R5,A
	CLR  	C
	SUBB 	A,R7
	MOV  	A,#080H
	MOV  	R0,A
	MOV  	A,R4
	XRL  	A,#080H
	SUBB 	A,R0
	JNC  	?C0050
;     {
			; SOURCE LINE # 306
;         if(m1sector == (m1keystatus[i] & 0x7f))
			; SOURCE LINE # 307
	MOV  	A,#LOW (m1keystatus)
	ADD  	A,R5
	MOV  	DPL,A
	MOV  	A,#HIGH (m1keystatus)
	ADDC 	A,R4
	MOV  	DPH,A
	MOVX 	A,@DPTR
	ANL  	A,#07FH
	MOV  	R7,A
	MOV  	DPTR,#m1sector?262
	MOVX 	A,@DPTR
	XRL  	A,R7
	JNZ  	?C0051
;         {
			; SOURCE LINE # 308
;             m1keyidx = i;
			; SOURCE LINE # 309
	MOV  	DPTR,#m1keyidx?267
	MOV  	A,R5
	MOVX 	@DPTR,A
;             break;
			; SOURCE LINE # 310
	SJMP 	?C0050
;         }
			; SOURCE LINE # 311
;     }
			; SOURCE LINE # 312
?C0051:
	MOV  	DPTR,#i?270+01H
	MOVX 	A,@DPTR
	INC  	A
	MOVX 	@DPTR,A
	JNZ  	?C0049
	MOV  	DPTR,#i?270
	MOVX 	A,@DPTR
	INC  	A
	MOVX 	@DPTR,A
?C0190:
	SJMP 	?C0049
?C0050:
;     if(m1keyidx == 0xff)
			; SOURCE LINE # 313
	MOV  	DPTR,#m1keyidx?267
	MOVX 	A,@DPTR
	MOV  	R5,A
	CJNE 	A,#0FFH,?C0053
;     {
			; SOURCE LINE # 314
;         cmd[0] = FAIL;
			; SOURCE LINE # 315
	MOV  	DPTR,#cmd?245
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R1,A
	MOV  	A,#01H
	LCALL	?C?CSTPTR
;         cmd[1] = MI_NOTAUTHERR;
			; SOURCE LINE # 316
	MOV  	DPTR,#cmd?245
	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,#08H
?C0216:
;         return 2;
			; SOURCE LINE # 317
	LJMP 	?C0246
;     }
			; SOURCE LINE # 318
?C0053:
;     if((m1keystatus[m1keyidx] & 0x80) == 0x80)    // key b
			; SOURCE LINE # 319
	MOV  	A,#LOW (m1keystatus)
	ADD  	A,R5
	MOV  	DPL,A
	CLR  	A
	ADDC 	A,#HIGH (m1keystatus)
	MOV  	DPH,A
	MOVX 	A,@DPTR
	JB   	ACC.7,$ + 6H
	LJMP 	?C0054
;     {
			; SOURCE LINE # 320
;         if(MI_OK == M500Auth(PICC_AUTHENT1B, snr, m1keys[m1keyidx], m1sector))
			; SOURCE LINE # 321
	MOV  	DPTR,#m1keyidx?267
	MOVX 	A,@DPTR
	MOV  	B,#06H
	MUL  	AB
	ADD  	A,#LOW (m1keys)
	MOV  	R1,A
	MOV  	A,#HIGH (m1keys)
	ADDC 	A,B
	MOV  	R2,A
	MOV  	DPTR,#?_M500Auth?BYTE+04H
	MOV  	A,#01H
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R2
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R1
	MOVX 	@DPTR,A
	MOV  	DPTR,#m1sector?262
	MOVX 	A,@DPTR
	MOV  	DPTR,#?_M500Auth?BYTE+07H
	MOVX 	@DPTR,A
	MOV  	R3,#01H
	MOV  	R2,#HIGH (snr)
	MOV  	R1,#LOW (snr)
	MOV  	R7,#061H
	LCALL	_M500Auth
	MOV  	A,R7
	JNZ  	?C0055
;             fkeypassed = 1;
			; SOURCE LINE # 322
	SETB 	fkeypassed?268
	LJMP 	?C0060
?C0055:
;         else if(MI_OK == M500Auth(PICC_AUTHENT1B, snr, m1keys[m1keyidx], m1sector))
			; SOURCE LINE # 323
	MOV  	DPTR,#m1keyidx?267
	MOVX 	A,@DPTR
	MOV  	B,#06H
	MUL  	AB
	ADD  	A,#LOW (m1keys)
	MOV  	R1,A
	MOV  	A,#HIGH (m1keys)
	ADDC 	A,B
	MOV  	R2,A
	MOV  	DPTR,#?_M500Auth?BYTE+04H
	MOV  	A,#01H
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R2
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R1
	MOVX 	@DPTR,A
	MOV  	DPTR,#m1sector?262
	MOVX 	A,@DPTR
	MOV  	DPTR,#?_M500Auth?BYTE+07H
	MOVX 	@DPTR,A
	MOV  	R3,#01H
	MOV  	R2,#HIGH (snr)
	MOV  	R1,#LOW (snr)
	MOV  	R7,#061H
	LCALL	_M500Auth
	MOV  	A,R7
	JNZ  	?C0057
;             fkeypassed = 1;
			; SOURCE LINE # 324
	SETB 	fkeypassed?268
	LJMP 	?C0060
?C0057:
;         else if(MI_OK == M500Auth(PICC_AUTHENT1B, snr, m1keys[m1keyidx], m1sector))
			; SOURCE LINE # 325
	MOV  	DPTR,#m1keyidx?267
	MOVX 	A,@DPTR
	MOV  	B,#06H
	MUL  	AB
	ADD  	A,#LOW (m1keys)
	MOV  	R1,A
	MOV  	A,#HIGH (m1keys)
	ADDC 	A,B
	MOV  	R2,A
	MOV  	DPTR,#?_M500Auth?BYTE+04H
	MOV  	A,#01H
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R2
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R1
	MOVX 	@DPTR,A
	MOV  	DPTR,#m1sector?262
	MOVX 	A,@DPTR
	MOV  	DPTR,#?_M500Auth?BYTE+07H
	MOVX 	@DPTR,A
	MOV  	R3,#01H
	MOV  	R2,#HIGH (snr)
	MOV  	R1,#LOW (snr)
	MOV  	R7,#061H
	LCALL	_M500Auth
	MOV  	A,R7
	JZ   	$ + 5H
	LJMP 	?C0060
;             fkeypassed = 1;
			; SOURCE LINE # 326
	SETB 	fkeypassed?268
;     }
			; SOURCE LINE # 327
	LJMP 	?C0060
?C0054:
;     else                                        // key a
;     {
			; SOURCE LINE # 329
;         if(MI_OK == M500Auth(PICC_AUTHENT1A, snr, m1keys[m1keyidx], m1sector))
			; SOURCE LINE # 330
	MOV  	DPTR,#m1keyidx?267
	MOVX 	A,@DPTR
	MOV  	B,#06H
	MUL  	AB
	ADD  	A,#LOW (m1keys)
	MOV  	R1,A
	MOV  	A,#HIGH (m1keys)
	ADDC 	A,B
	MOV  	R2,A
	MOV  	DPTR,#?_M500Auth?BYTE+04H
	MOV  	A,#01H
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R2
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R1
	MOVX 	@DPTR,A
	MOV  	DPTR,#m1sector?262
	MOVX 	A,@DPTR
	MOV  	DPTR,#?_M500Auth?BYTE+07H
	MOVX 	@DPTR,A
	MOV  	R3,#01H
	MOV  	R2,#HIGH (snr)
	MOV  	R1,#LOW (snr)
	MOV  	R7,#060H
	LCALL	_M500Auth
	MOV  	A,R7
	JNZ  	?C0061
;             fkeypassed = 1;
			; SOURCE LINE # 331
	SETB 	fkeypassed?268
	SJMP 	?C0060
?C0061:
;         else if(MI_OK == M500Auth(PICC_AUTHENT1A, snr, m1keys[m1keyidx], m1sector))
			; SOURCE LINE # 332
	MOV  	DPTR,#m1keyidx?267
	MOVX 	A,@DPTR
	MOV  	B,#06H
	MUL  	AB
	ADD  	A,#LOW (m1keys)
	MOV  	R1,A
	MOV  	A,#HIGH (m1keys)
	ADDC 	A,B
	MOV  	R2,A
	MOV  	DPTR,#?_M500Auth?BYTE+04H
	MOV  	A,#01H
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R2
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R1
	MOVX 	@DPTR,A
	MOV  	DPTR,#m1sector?262
	MOVX 	A,@DPTR
	MOV  	DPTR,#?_M500Auth?BYTE+07H
	MOVX 	@DPTR,A
	MOV  	R3,#01H
	MOV  	R2,#HIGH (snr)
	MOV  	R1,#LOW (snr)
	MOV  	R7,#060H
	LCALL	_M500Auth
	MOV  	A,R7
	JNZ  	?C0063
;             fkeypassed = 1;
			; SOURCE LINE # 333
	SETB 	fkeypassed?268
	SJMP 	?C0060
?C0063:
;         else if(MI_OK == M500Auth(PICC_AUTHENT1A, snr, m1keys[m1keyidx], m1sector))
			; SOURCE LINE # 334
	MOV  	DPTR,#m1keyidx?267
	MOVX 	A,@DPTR
	MOV  	B,#06H
	MUL  	AB
	ADD  	A,#LOW (m1keys)
	MOV  	R1,A
	MOV  	A,#HIGH (m1keys)
	ADDC 	A,B
	MOV  	R2,A
	MOV  	DPTR,#?_M500Auth?BYTE+04H
	MOV  	A,#01H
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R2
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R1
	MOVX 	@DPTR,A
	MOV  	DPTR,#m1sector?262
	MOVX 	A,@DPTR
	MOV  	DPTR,#?_M500Auth?BYTE+07H
	MOVX 	@DPTR,A
	MOV  	R3,#01H
	MOV  	R2,#HIGH (snr)
	MOV  	R1,#LOW (snr)
	MOV  	R7,#060H
	LCALL	_M500Auth
	MOV  	A,R7
	JNZ  	?C0060
;             fkeypassed = 1;
			; SOURCE LINE # 335
	SETB 	fkeypassed?268
;     }
			; SOURCE LINE # 336
?C0060:
;     if(!fkeypassed)
			; SOURCE LINE # 337
	JB   	fkeypassed?268,?C0066
;     {
			; SOURCE LINE # 338
;         cmd[0] = FAIL;
			; SOURCE LINE # 339
	MOV  	DPTR,#cmd?245
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R1,A
	MOV  	A,#01H
	LCALL	?C?CSTPTR
;         cmd[1] = MI_AUTHERR;
			; SOURCE LINE # 340
	MOV  	DPTR,#cmd?245
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR

⌨️ 快捷键说明

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