#ifdef HAVE_CONFIG_H # include "config.h" #endif // HAVE_CONFIG_H #include #include #include int main (int argc, const char *argv[]) { nfc_device_t *pnd; nfc_target_info_t nti; // Display libnfc version const char *acLibnfcVersion = nfc_version (); printf ("%s use libnfc %s\n", argv[0], acLibnfcVersion); // Connect using the first available NFC device pnd = nfc_connect (NULL); if (pnd == NULL) { ERR ("%s", "Unable to connect to NFC device."); return EXIT_FAILURE; } // Set connected NFC device to initiator mode nfc_initiator_init (pnd); // Enable field so more power consuming cards can power themselves up nfc_configure (pnd, NDO_ACTIVATE_FIELD, true); printf ("Connected to NFC reader: %s\n", pnd->acName); // Poll for a ISO14443A (MIFARE) tag if (nfc_initiator_select_passive_target (pnd, NM_ISO14443A_106, NULL, 0, &nti)) { printf ("The following (NFC) ISO14443A tag was found:\n"); printf (" ATQA (SENS_RES): "); print_hex (nti.nai.abtAtqa, 2); printf (" UID (NFCID%c): ", (nti.nai.abtUid[0] == 0x08 ? '3' : '1')); print_hex (nti.nai.abtUid, nti.nai.szUidLen); printf (" SAK (SEL_RES): "); print_hex (&nti.nai.btSak, 1); if (nti.nai.szAtsLen) { printf (" ATS (ATR): "); print_hex (nti.nai.abtAts, nti.nai.szAtsLen); } } // Disconnect from NFC device nfc_disconnect (pnd); return EXIT_SUCCESS; }