Merge pull request #50 from pi3rrot/master

Add support for Mifare Mini 0.3k
This commit is contained in:
Philippe Teuwen 2016-11-29 14:41:54 +01:00 committed by GitHub
commit d7c1aa6f72
5 changed files with 26 additions and 2 deletions

View file

@ -19,7 +19,7 @@ If you are new to _libfreefare_ or the _nfc-tools_, you should collect useful in
| MIFARE DESFire 4k | Supported |
| MIFARE DESFire 8k | Supported |
| MIFARE DESFire EV1 | Supported |
| MIFARE Mini | Not supported |
| MIFARE Mini | Supported |
| MIFARE Plus S 2k | Not supported |
| MIFARE Plus S 4k | Not supported |
| MIFARE Plus X 2k | Not supported |

View file

@ -51,6 +51,7 @@ Mifare card manipulation library (libfreefare, \-lfreefare)
.Bd -literal
enum freefare_tag_type {
FELICA,
MIFARE_MINI
MIFARE_CLASSIC_1K,
MIFARE_CLASSIC_4K,
MIFARE_DESFIRE,

View file

@ -38,6 +38,8 @@ freefare_tag_new (nfc_device *device, nfc_target target)
if (felica_taste (device, target)) {
tag = felica_tag_new (device, target);
} else if (mifare_mini_taste (device, target)) {
tag = mifare_mini_tag_new (device, target);
} else if (mifare_classic1k_taste (device, target)) {
tag = mifare_classic1k_tag_new (device, target);
} else if (mifare_classic4k_taste (device, target)) {
@ -155,6 +157,8 @@ freefare_get_tag_friendly_name (FreefareTag tag)
switch (tag->type) {
case FELICA:
return "FeliCA";
case MIFARE_MINI:
return "Mifare Mini 0.3k";
case MIFARE_CLASSIC_1K:
return "Mifare Classic 1k";
case MIFARE_CLASSIC_4K:

View file

@ -30,7 +30,7 @@
enum freefare_tag_type {
FELICA,
// MIFARE_MINI,
MIFARE_MINI,
MIFARE_CLASSIC_1K,
MIFARE_CLASSIC_4K,
MIFARE_DESFIRE,
@ -104,8 +104,10 @@ bool is_mifare_ultralightc_on_reader (nfc_device *device, nfc_iso14443a_info n
bool mifare_mini_taste (nfc_device *device, nfc_target target);
bool mifare_classic1k_taste (nfc_device *device, nfc_target target);
bool mifare_classic4k_taste (nfc_device *device, nfc_target target);
FreefareTag mifare_mini_tag_new (nfc_device *device, nfc_target target);
FreefareTag mifare_classic1k_tag_new (nfc_device *device, nfc_target target);
FreefareTag mifare_classic4k_tag_new (nfc_device *device, nfc_target target);
void mifare_classic_tag_free (FreefareTag tag);

View file

@ -193,6 +193,16 @@ int get_block_access_bits (FreefareTag tag, const MifareClassicBlockNumber blo
* Memory management functions.
*/
bool
mifare_mini_taste (nfc_device *device, nfc_target target)
{
(void) device;
return target.nm.nmt == NMT_ISO14443A &&
(
target.nti.nai.btSak == 0x09
);
}
bool
mifare_classic1k_taste (nfc_device *device, nfc_target target)
{
@ -237,6 +247,13 @@ _mifare_classic_tag_new (nfc_device *device, nfc_target target, int tag_type)
return tag;
}
FreefareTag
mifare_mini_tag_new (nfc_device *device, nfc_target target)
{
return _mifare_classic_tag_new (device, target, MIFARE_MINI);
}
FreefareTag
mifare_classic1k_tag_new (nfc_device *device, nfc_target target)
{