gpt4 book ai didi

c - RC522默认键

转载 作者:行者123 更新时间:2023-11-30 16:58:30 26 4
gpt4 key购买 nike

我在验证我的 Mifare 卡时遇到问题。在数据表中写入默认 key 是 0xFFFFFFFFFFFF 但它不起作用。我不知道出了什么问题,如果有人可以帮助我。

这是我的代码,我想添加检查卡是否正确并且工作正常。

main.c:

    #include "spi.h"
#include <stdio.h>
#include "oldrc522.h"


int main(void) {

uint8_t CARD_ID[5];

uint8_t KEY[6]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF};
uint8_t MY_CARD[5]={0x19,0x5a,0xcc,0xac,0x23};

TM_MFRC522_Init();
printf("INIT\n\n\n");

while(1){

if (TM_MFRC522_Check(CARD_ID) == MI_OK) {
//CardID is valid

//Check if this is my card
if (TM_MFRC522_Compare(CARD_ID, MY_CARD) == MI_OK) {
printf("HELLO!\n\n");

if( (TM_MFRC522_Auth(PICC_AUTHENT1A,7,KEY,MY_CARD) == MI_OK))
printf("OK");
else printf("FAILED\n\n");



} else
printf("INVALID CARD\n\n");


} else {
//Some printing to delete content
}

}
}

TM_MFRC522_Auth函数:

    TM_MFRC522_Status_t TM_MFRC522_Auth(uint8_t authMode, uint8_t BlockAddr, uint8_t* Sectorkey, uint8_t* serNum) {
TM_MFRC522_Status_t status;
uint16_t recvBits;
uint8_t i;
uint8_t buff[12];

//Verify the command block address + sector + password + card serial number
buff[0] = authMode;
buff[1] = BlockAddr;
for (i = 0; i < 6; i++) {
buff[i+2] = Sectorkey[i];
}
for (i=0; i<4; i++) {
buff[i+8] = serNum[i];
}
status = TM_MFRC522_ToCard(PCD_AUTHENT, buff, 12, buff, &recvBits);

if ((status != MI_OK) || (!(TM_MFRC522_ReadRegister(MFRC522_REG_STATUS2) & 0x08))) {
status = MI_ERR;
}

return status;
}

最佳答案

RFID卡生产商通常使用6字节的0xFF或0x00作为产品的默认 key 。

我没有像 rc522 那样使用这些库,但尝试通过这个

字符 keyA[6] = { 0xFF, 0xFf, 0xFF, 0xFF, 0xFF, 0xFF, };进行身份验证。

请注意,如果您在传递扇区中写入其他内容,则卡已损坏。

关于c - RC522默认键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38785278/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com