Flipper Zero Firmware
Loading...
Searching...
No Matches
mf_classic_poller.h
1#pragma once
2
3#include "mf_classic.h"
4#include <lib/nfc/protocols/iso14443_3a/iso14443_3a_poller.h>
5
6#ifdef __cplusplus
7extern "C" {
8#endif
9
13typedef struct MfClassicPoller MfClassicPoller;
14
18typedef enum {
19 MfClassicPollerEventTypeRequestMode,
21 MfClassicPollerEventTypeRequestReadSector,
23 MfClassicPollerEventTypeRequestSectorTrailer,
24 MfClassicPollerEventTypeRequestWriteBlock,
26 MfClassicPollerEventTypeRequestKey,
27 MfClassicPollerEventTypeNextSector,
28 MfClassicPollerEventTypeDataUpdate,
29 MfClassicPollerEventTypeFoundKeyA,
30 MfClassicPollerEventTypeFoundKeyB,
31 MfClassicPollerEventTypeKeyAttackStart,
32 MfClassicPollerEventTypeKeyAttackStop,
33 MfClassicPollerEventTypeKeyAttackNextSector,
35 MfClassicPollerEventTypeCardDetected,
36 MfClassicPollerEventTypeCardLost,
37 MfClassicPollerEventTypeSuccess,
38 MfClassicPollerEventTypeFail,
39} MfClassicPollerEventType;
40
44typedef enum {
45 MfClassicPollerModeRead,
46 MfClassicPollerModeWrite,
47 MfClassicPollerModeDictAttack,
48} MfClassicPollerMode;
49
55typedef struct {
56 MfClassicPollerMode mode;
59
69
76typedef struct {
77 uint8_t sectors_read;
78 uint8_t keys_found;
81
91
103
114
125
135
151
157typedef struct {
158 MfClassicPollerEventType type;
161
175MfClassicError mf_classic_poller_get_nt(
176 MfClassicPoller* instance,
177 uint8_t block_num,
178 MfClassicKeyType key_type,
179 MfClassicNt* nt);
180
194MfClassicError mf_classic_poller_get_nt_nested(
195 MfClassicPoller* instance,
196 uint8_t block_num,
197 MfClassicKeyType key_type,
198 MfClassicNt* nt);
199
215MfClassicError mf_classic_poller_auth(
216 MfClassicPoller* instance,
217 uint8_t block_num,
218 MfClassicKey* key,
219 MfClassicKeyType key_type,
221
236MfClassicError mf_classic_poller_auth_nested(
237 MfClassicPoller* instance,
238 uint8_t block_num,
239 MfClassicKey* key,
240 MfClassicKeyType key_type,
242
253MfClassicError mf_classic_poller_halt(MfClassicPoller* instance);
254
265MfClassicError mf_classic_poller_read_block(
266 MfClassicPoller* instance,
267 uint8_t block_num,
268 MfClassicBlock* data);
269
280MfClassicError mf_classic_poller_write_block(
281 MfClassicPoller* instance,
282 uint8_t block_num,
283 MfClassicBlock* data);
284
299MfClassicError mf_classic_poller_value_cmd(
300 MfClassicPoller* instance,
301 uint8_t block_num,
302 MfClassicValueCommand cmd,
303 int32_t data);
304
316MfClassicError mf_classic_poller_value_transfer(MfClassicPoller* instance, uint8_t block_num);
317
332MfClassicError mf_classic_poller_send_standard_frame(
333 MfClassicPoller* instance,
334 const BitBuffer* tx_buffer,
335 BitBuffer* rx_buffer,
336 uint32_t fwt_fc);
337
352MfClassicError mf_classic_poller_send_frame(
353 MfClassicPoller* instance,
354 const BitBuffer* tx_buffer,
355 BitBuffer* rx_buffer,
356 uint32_t fwt_fc);
357
375MfClassicError mf_classic_poller_send_custom_parity_frame(
376 MfClassicPoller* instance,
377 const BitBuffer* tx_buffer,
378 BitBuffer* rx_buffer,
379 uint32_t fwt_fc);
380
395MfClassicError mf_classic_poller_send_encrypted_frame(
396 MfClassicPoller* instance,
397 const BitBuffer* tx_buffer,
398 BitBuffer* rx_buffer,
399 uint32_t fwt_fc);
400
401#ifdef __cplusplus
402}
403#endif
Definition bit_buffer.c:7
Definition mf_classic.h:109
Definition mf_classic.h:76
Definition mf_classic.h:135
Definition mf_classic.h:85
Definition mf_classic.h:93
MfClassic poller next sector event data.
Definition mf_classic_poller.h:66
uint8_t current_sector
Current sector number.
Definition mf_classic_poller.h:67
MfClassic poller key request event data.
Definition mf_classic_poller.h:87
bool key_provided
Flag indicating if key is provided.
Definition mf_classic_poller.h:89
MfClassicKey key
Key to be used by poller.
Definition mf_classic_poller.h:88
MfClassic poller read sector request event data.
Definition mf_classic_poller.h:97
MfClassicKeyType key_type
Key type to be used by poller.
Definition mf_classic_poller.h:100
bool key_provided
Flag indicating if key is provided.
Definition mf_classic_poller.h:101
uint8_t sector_num
Sector number to be read.
Definition mf_classic_poller.h:98
MfClassicKey key
Key to be used by poller.
Definition mf_classic_poller.h:99
MfClassic poller request mode event data.
Definition mf_classic_poller.h:55
const MfClassicData * data
Data to be used by poller.
Definition mf_classic_poller.h:57
MfClassicPollerMode mode
Mode to be used by poller.
Definition mf_classic_poller.h:56
MfClassic poller sector trailer request event data.
Definition mf_classic_poller.h:109
bool sector_trailer_provided
Flag indicating if sector trailer is provided.
Definition mf_classic_poller.h:112
uint8_t sector_num
Sector number to be read.
Definition mf_classic_poller.h:110
MfClassicBlock sector_trailer
Sector trailer to be used by poller.
Definition mf_classic_poller.h:111
MfClassic poller update event data.
Definition mf_classic_poller.h:76
uint8_t keys_found
Number of keys found.
Definition mf_classic_poller.h:78
uint8_t current_sector
Current sector number.
Definition mf_classic_poller.h:79
uint8_t sectors_read
Number of sectors read.
Definition mf_classic_poller.h:77
MfClassic poller write block request event data.
Definition mf_classic_poller.h:120
bool write_block_provided
Flag indicating if block is provided.
Definition mf_classic_poller.h:123
MfClassicBlock write_block
Block to be written.
Definition mf_classic_poller.h:122
uint8_t block_num
Block number to be written.
Definition mf_classic_poller.h:121
MfClassic poller event.
Definition mf_classic_poller.h:157
MfClassicPollerEventData * data
Pointer to event specific data.
Definition mf_classic_poller.h:159
MfClassicPollerEventType type
Event type.
Definition mf_classic_poller.h:158
MfClassic poller key attack event data.
Definition mf_classic_poller.h:132
uint8_t current_sector
Current sector number.
Definition mf_classic_poller.h:133
Definition mf_classic_poller_i.h:90
MfClassic poller event data.
Definition mf_classic_poller.h:139
MfClassicError error
Error code on MfClassicPollerEventTypeFail event.
Definition mf_classic_poller.h:140
MfClassicPollerEventDataUpdate data_update
Data update context.
Definition mf_classic_poller.h:144
MfClassicPollerEventDataSectorTrailerRequest sec_tr_data
Sector trailer request context.
Definition mf_classic_poller.h:148
MfClassicPollerEventKeyAttackData key_attack_data
Key attack context.
Definition mf_classic_poller.h:147
MfClassicPollerEventDataDictAttackNextSector next_sector_data
Next sector context.
Definition mf_classic_poller.h:142
MfClassicPollerEventDataWriteBlockRequest write_block_data
Write block request context.
Definition mf_classic_poller.h:149
MfClassicPollerEventDataReadSectorRequest read_sector_request_data
Read sector request context.
Definition mf_classic_poller.h:146
MfClassicPollerEventDataKeyRequest key_request_data
Key request context.
Definition mf_classic_poller.h:143
MfClassicPollerEventDataRequestMode poller_mode
Poller mode context.
Definition mf_classic_poller.h:141