 9ffcc52ada
			
		
	
	
		9ffcc52ada
		
			
		
	
	
	
	
		
			
			* mifare ultralight auth prototype * it works! * Reference source * use countof * rework everything * oops forgot scenes * build: revert changes in manifest, stack size * build: fix buid, format sources * nfc: update unlock ultralight GUI * nfc: fix byte input header * nfc: add new scenes for locked ultralight * nfc: add data read to ultralights * nfc: add unlock option in mf ultralight menu * nfc: add data read init in ultralight generation * nfc: lin sources, fix unlocked save * nfc: format python sources * nfc: clean up Co-authored-by: gornekich <n.gorbadey@gmail.com>
		
			
				
	
	
		
			77 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			77 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
| #pragma once
 | |
| 
 | |
| #include "nfc_device.h"
 | |
| 
 | |
| typedef struct NfcWorker NfcWorker;
 | |
| 
 | |
| typedef enum {
 | |
|     // Init states
 | |
|     NfcWorkerStateNone,
 | |
|     NfcWorkerStateBroken,
 | |
|     NfcWorkerStateReady,
 | |
|     // Main worker states
 | |
|     NfcWorkerStateRead,
 | |
|     NfcWorkerStateUidEmulate,
 | |
|     NfcWorkerStateMfUltralightEmulate,
 | |
|     NfcWorkerStateMfClassicEmulate,
 | |
|     NfcWorkerStateReadMfUltralightReadAuth,
 | |
|     NfcWorkerStateMfClassicDictAttack,
 | |
|     // Debug
 | |
|     NfcWorkerStateEmulateApdu,
 | |
|     NfcWorkerStateField,
 | |
|     // Transition
 | |
|     NfcWorkerStateStop,
 | |
| } NfcWorkerState;
 | |
| 
 | |
| typedef enum {
 | |
|     // Reserve first 50 events for application events
 | |
|     NfcWorkerEventReserved = 50,
 | |
| 
 | |
|     // Nfc read events
 | |
|     NfcWorkerEventReadUidNfcB,
 | |
|     NfcWorkerEventReadUidNfcV,
 | |
|     NfcWorkerEventReadUidNfcF,
 | |
|     NfcWorkerEventReadUidNfcA,
 | |
|     NfcWorkerEventReadMfUltralight,
 | |
|     NfcWorkerEventReadMfDesfire,
 | |
|     NfcWorkerEventReadMfClassicDone,
 | |
|     NfcWorkerEventReadMfClassicLoadKeyCache,
 | |
|     NfcWorkerEventReadMfClassicDictAttackRequired,
 | |
|     NfcWorkerEventReadBankCard,
 | |
| 
 | |
|     // Nfc worker common events
 | |
|     NfcWorkerEventSuccess,
 | |
|     NfcWorkerEventFail,
 | |
|     NfcWorkerEventAborted,
 | |
|     NfcWorkerEventCardDetected,
 | |
|     NfcWorkerEventNoCardDetected,
 | |
|     NfcWorkerEventWrongCardDetected,
 | |
| 
 | |
|     // Mifare Classic events
 | |
|     NfcWorkerEventNoDictFound,
 | |
|     NfcWorkerEventNewSector,
 | |
|     NfcWorkerEventNewDictKeyBatch,
 | |
|     NfcWorkerEventFoundKeyA,
 | |
|     NfcWorkerEventFoundKeyB,
 | |
| 
 | |
|     // Mifare Ultralight events
 | |
|     NfcWorkerEventMfUltralightPassKey,
 | |
| } NfcWorkerEvent;
 | |
| 
 | |
| typedef bool (*NfcWorkerCallback)(NfcWorkerEvent event, void* context);
 | |
| 
 | |
| NfcWorker* nfc_worker_alloc();
 | |
| 
 | |
| NfcWorkerState nfc_worker_get_state(NfcWorker* nfc_worker);
 | |
| 
 | |
| void nfc_worker_free(NfcWorker* nfc_worker);
 | |
| 
 | |
| void nfc_worker_start(
 | |
|     NfcWorker* nfc_worker,
 | |
|     NfcWorkerState state,
 | |
|     NfcDeviceData* dev_data,
 | |
|     NfcWorkerCallback callback,
 | |
|     void* context);
 | |
| 
 | |
| void nfc_worker_stop(NfcWorker* nfc_worker);
 |