RodionGork 0 16 июля, 2008 Опубликовано 16 июля, 2008 (изменено) · Жалоба Привет, товарищи! Тут творится считыватель бесконтактных смарт-карт (на микросхеме MF RC531) и имеется пачка карт типа MIFARE 1K S50 (более точно MF1 MOA2 S50). Заставил работать считыватель. Послал карте REQA. Получил ее UID. Послал SELECT с полным UID. Получил SAK=08. Это все было в рамках стандарта ISO 14443-3. Теперь надо обращаться к блокам памяти и как-то с доступом разбираться. Но карта не поддерживает протокола обмена ISO 14443-4, поэтому я не знаю, что с ней дальше делать. По-видимому мне нужны команды authentication, записи и чтения данных. Да и ключ KeyA хорошо бы знать (хотя я подозреваю, какой он изначально). Прошу помочь, если у кого есть описание протокола от NXP для этих карт или ссылка на него. с почтеньем, Родион Изменено 16 июля, 2008 пользователем RodionGork Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
navy2000 0 17 июля, 2008 Опубликовано 17 июля, 2008 · Жалоба Вся документация предоставляется NXP по договору NDA. Если у вас есть такой договор с ними, то нет проблем у них на сайте в закрытых pdf-ках все есть. Давно занимался этой проблемой, по моему вам нужно искать ISO14443-3. В принципе все семейство гостов 14443 я в свое время нашел в открытом доступе. От себя могу приложить один общий документ, он вроте как Public. p.s. ключи в чистой карте зашиты по дефолту. MIFARE_Interface_Platform_Type_Identification_Procedure.pdf Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RodionGork 0 19 июля, 2008 Опубликовано 19 июля, 2008 · Жалоба Спасибо за интересный ответ, хотя, похоже я недостаточно ясно написал свой интересный вопрос. То что было по 14443-3 я все сделал уже на тот момент. Информация о дальнейшем общении с картой (том протоколе, что вместо 14443-4 используется данной картой) организацией NXP не распространяется (за исключением впрочем, одной библиотечки без описания). Однако все же я что нужно отыскал и разобрался на следующий день - теперь карты пишутся, читаются, шифруются, ключи меняются. В общем, всем спасибо. ;-) Если кто застрянет на том же самом месте - пишите в мыло - попробую подсказать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Zlumd 0 23 марта, 2009 Опубликовано 23 марта, 2009 · Жалоба Наша организация 5 лет назад заключала договор NDA с Филипсом. Тогда мы сделали считыватель с карточками Mifare Std 1K (MF1 IC S50). Теперь нужно научиться общаться с карточками DESFire 4K (MF3 IC D41). Как узнать пароли на закодированные PDFники на сайте Филипса? Нужно писать им в тех. поддержку ссылаясь на номер договора и просить пароли? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
woodman 0 26 марта, 2009 Опубликовано 26 марта, 2009 · Жалоба Наша организация 5 лет назад заключала договор NDA с Филипсом. Тогда мы сделали считыватель с карточками Mifare Std 1K (MF1 IC S50). Теперь нужно научиться общаться с карточками DESFire 4K (MF3 IC D41). Как узнать пароли на закодированные PDFники на сайте Филипса? Нужно писать им в тех. поддержку ссылаясь на номер договора и просить пароли? Надо заполнить специальную форму, pdf файл для запроса конкретной иформации по конкретному изделию находите на сайте Филипса, и посылаете Е-Маилом. Отвечают довольно лперативно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Zlumd 0 15 апреля, 2009 Опубликовано 15 апреля, 2009 · Жалоба В блоках типа Value в картах Mifare Std 1K можно хранить одно 4-х байтовое число Value и одно однобайтовое число Adr в следующем формате: 4 байта Value 4 байта инверсное Value 4 байта Value 1 байт Adr 1 байт инверсный Adr 1 байт Adr 1 байт инверсный Adr Подскажите, для чего нужны поля Adr в блоках типа Value. Как их может использовать сама карточка? Можно ли вместо Adr, ~Adr, Adr, ~Adr хранить произвольное 4-х байтовое число? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Jhohn 0 23 августа, 2016 Опубликовано 23 августа, 2016 (изменено) · Жалоба На карте DESFire Mifare у меня проблемы с аутинтификацией (функцией phalMfdf_AuthenticateISO() ). Кто работал с этой картой подскажите, пожалуйста, что не так. uint8_t bLength; /**< Length */ uint8_t aSak[1]; /**< Select Acknowledge; uint8_t. */ uint8_t aUid[10]; /**< complete Uid; uint8_t[4/7/10]. */ uint8_t bMoreCardsAvaliable; /**< more card available */ #define NUMBER_OF_KEYVERSIONPAIRS 1 //! for Classic /* Initialize the keystore component */ status = phKeyStore_Sw_Init( &pKeyStore, sizeof(phKeyStore_Sw_DataParams_t), &sKeyEntries[0], 0xFF, &sKeyVersionPairs[0], NUMBER_OF_KEYVERSIONPAIRS, &sKUCEntries[0], 0xFF); CHECK_SUCCESS(status); /* Default PICC key */ static uint8_t bDefaultPICCKey[16] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; #define PICCKEY_ADDRESS 0x15 /* PICC Key entry number in key store. */ #define SL_3_AES_KEY_VERSION 0x00 /**< SL2 key version in keystore */ phalMfdf_Sw_DataParams_t alMfdf; phCryptoSym_Sw_DataParams_t CryptoEnc; phCryptoSym_Sw_DataParams_t CryptoMac; phCryptoSym_Sw_DataParams_t CryptoDiv; phCryptoSym_Sw_DataParams_t CryptoRngCrypto; phCryptoRng_Sw_DataParams_t CryptoRng; /* initialise Crypto components */ status = phCryptoSym_Sw_Init(&CryptoEnc, sizeof(CryptoEnc), &pKeyStore); CHECK_SUCCESS(status); status = phCryptoSym_Sw_Init(&CryptoMac, sizeof(CryptoMac), &pKeyStore); CHECK_SUCCESS(status); status = phCryptoSym_Sw_Init(&CryptoDiv, sizeof(CryptoDiv), &pKeyStore); CHECK_SUCCESS(status); status = phCryptoSym_Sw_Init(&CryptoRngCrypto, sizeof(CryptoRngCrypto), &pKeyStore); CHECK_SUCCESS(status); /* initialise Crypto Rng component */ status = phCryptoRng_Sw_Init(&CryptoRng, sizeof(CryptoRng), &CryptoRngCrypto); CHECK_SUCCESS(status); /*Intialize the crypto components */ status = phCryptoSym_Sw_Init(&CryptoEnc, /**< [in] Pointer to this layer's parameter structure. */ sizeof(phCryptoSym_Sw_DataParams_t), /**< [in] Specifies the size of the data parameter structure */ &pKeyStore); /**< [in] Pointer to a key store structure (can be null).*/ CHECK_SUCCESS(status); status = phCryptoSym_Sw_Init(&CryptoRngCrypto, /**< [in] Pointer to this layer's parameter structure. */ sizeof(phCryptoSym_Sw_DataParams_t), /**< [in] Specifies the size of the data parameter structure */ &pKeyStore); /**< [in] Pointer to a key store structure (can be null).*/ CHECK_SUCCESS(status); status = phCryptoRng_Sw_Init(&CryptoRng, /**< [in] Pointer to this layer's parameter structure. */ sizeof(phCryptoRng_Sw_DataParams_t), /**< [in] Specifies the size of the data parameter structure */ &CryptoRngCrypto); /**< [in] Pointer to the parameter structure of the symmetric crypto layer. */ CHECK_SUCCESS(status); status = phhalHw_FieldReset(&sHal_Nfc_Ic.sHal); /**< [in] Pointer to the parameter structure of the underlying HAL layer. */ CHECK_SUCCESS(status); /* Activate Layer 3 card. In loop till a card is detected. */ status = phpalI14443p3a_ActivateCard(&spalI14443p3a, /**< [in] PAL-ISO14443P3A parameter structure */ NULL, /**< [in] Known Uid */ 0x00, /**< [in] Known Uid length */ aUid, /**< [Out] Complete Uid */ &bLength, /**< [Out] Lenght Uid **/ &aSak, /**< [out] SAK */ &bMoreCardsAvaliable); /**< [Out] Whether there are more cards in the field or not */ CHECK_SUCCESS(status); /* Send RATS */ status = phpalI14443p4a_Rats(&spalI14443p4, /**< [in] PAL-ISO14443P4A parameter structure */ 0x08, /**< [in] Frame size integer */ 0x01, /**< [in] Card Identifier */ pAts); /**< [Out] Answer to select */ CHECK_SUCCESS(status); /* Send PPS */ status = phpalI14443p4a_Pps(&spalI14443p4, /**< [in] PAL-ISO14443P4A parameter structure */ 0x00, /**< [in] Divisor Receive (PCD to PICC) Integer */ 0x00); /**< [in] Divisor Send (PICC to PCD) Integer */ CHECK_SUCCESS(status); // status = StoreKeysInKeyStore_desfire(&pKeyStore); /* Set the default PICC Master key in the key store */ status = phKeyStore_FormatKeyEntry(&pKeyStore, PICCKEY_ADDRESS, PH_CRYPTOSYM_KEY_TYPE_2K3DES); CHECK_SUCCESS(status); status = phKeyStore_SetKeyAtPos(&pKeyStore, PICCKEY_ADDRESS, 0x00, PH_CRYPTOSYM_KEY_TYPE_2K3DES, bDefaultPICCKey, 0x00); CHECK_SUCCESS(status); // /* Authenticating the Desfire Ev1 with PICC Master key stored above */ // status = phalMfdf_AuthenticateAES(&alMfdf, /* [in] Pointer to parameters data structure */ // PHAL_MFDF_NO_DIVERSIFICATION, /* [in] Diversification option */ // PICCKEY_ADDRESS, /* [in]KEY number in key store */ // 0x00, /* [in] Key version in key store */ // 0x00, /* [in] Key number on Card */ // NULL, /* [in] Diversification input */ // 0); /* [in] Diversification input length */ // CHECK_SUCCESS(status); //status = phhalHw_FieldReset(&sHal_Nfc_Ic.sHal); /**< [in] Pointer to the parameter structure of the underlying HAL layer. */ //CHECK_SUCCESS(status); status = phalMfdf_AuthenticateISO(&alMfdf, /* [in] Pointer to parameters data structure */ PHAL_MFDF_NO_DIVERSIFICATION, /* [in] Diversification option */ PICCKEY_ADDRESS, /* [in]KEY number in key store */ 0x00, /* [in] Key version in key store */ 0x00, /* [in] Key number on Card */ NULL, /* [in] Diversification input */ 0); /* [in] Diversification input length */ CHECK_SUCCESS(status); /* Pre personalization */ //status = PrePersonalization_AFCApp(&alMfdf, bCardUid); CHECK_SUCCESS(status); /* Authenticate with the PICC Master key */ status = phalMfdf_AuthenticateISO(&alMfdf, /* [in] Pointer to parameters data structure */ PHAL_MFDF_NO_DIVERSIFICATION, /* [in] Diversification option */ PICCKEY_ADDRESS, /* [in]KEY number in key store */ 0x00, /* [in] Key version in key store */ 0x00, /* [in] Key number on Card */ NULL, /* [in] Diversification input */ 0); /* [in] Diversification input length */ CHECK_SUCCESS(status); Изменено 24 августа, 2016 пользователем l1l1l1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Jhohn 0 24 августа, 2016 Опубликовано 24 августа, 2016 · Жалоба Разобрался. Надо внимательней смотреть примеры. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться