* nfc: start nfc over rpc * nfc: add detect reader state * nfc: add reader analyzer * nfc: rework reader analyzer * reader_analyzer: print collected nonces to debug * reader analyzer: add save on SD card * reader_analyzer: separate mfkey related part to different file * mfkey32: add logic for collecting parameters * nfc: rework pcap with reader analyzer * nfc: add logger for reader * nfc: clean up * nfc: add detect reader view * nfc: add detect reader and mfkey nonces scenes * nfc: add mfkey comlplete scene * nfc: add new assets * nfc: fix gui * nfc: fix iso14443-4 UID emulation * nfc: add no sd card notification * nfc: fix grammar Co-authored-by: あく <alleteam@gmail.com>
		
			
				
	
	
		
			82 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			82 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
#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,
 | 
						|
    NfcWorkerStateAnalyzeReader,
 | 
						|
    // 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,
 | 
						|
 | 
						|
    // Detect Reader events
 | 
						|
    NfcWorkerEventDetectReaderMfkeyCollected,
 | 
						|
 | 
						|
    // 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);
 |