mifare_fuzzer_emulator.h 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. #pragma once
  2. #include "../mifare_fuzzer_custom_events.h"
  3. #include <furi.h>
  4. #include <furi_hal.h>
  5. #include <gui/view.h>
  6. #include <gui/elements.h>
  7. #include <lib/nfc/nfc_device.h>
  8. #include "lib/nfc/protocols/iso14443_3a/iso14443_3a.h"
  9. typedef void (*MifareFuzzerEmulatorCallback)(MifareFuzzerEvent event, void* context);
  10. typedef enum MifareCard {
  11. MifareCardClassic1k = 1,
  12. MifareCardClassic4k,
  13. MifareCardUltralight,
  14. } MifareCard;
  15. typedef enum MifareFuzzerAttack {
  16. MifareFuzzerAttackTestValues = 1,
  17. MifareFuzzerAttackRandomValues,
  18. MifareFuzzerAttackLoadUidsFromFile,
  19. } MifareFuzzerAttack;
  20. typedef struct MifareFuzzerEmulator {
  21. View* view;
  22. MifareFuzzerEmulatorCallback callback;
  23. void* context;
  24. bool is_attacking;
  25. uint8_t ticks_between_cards;
  26. } MifareFuzzerEmulator;
  27. typedef struct MifareFuzzerEmulatorModel {
  28. const char* title;
  29. MifareCard mifare_card;
  30. const char* mifare_card_dsc;
  31. MifareFuzzerAttack attack;
  32. const char* attack_dsc;
  33. Iso14443_3aData nfc_data;
  34. bool is_attacking;
  35. uint8_t tick_num;
  36. uint8_t ticks_between_cards;
  37. } MifareFuzzerEmulatorModel;
  38. MifareFuzzerEmulator* mifare_fuzzer_emulator_alloc();
  39. void mifare_fuzzer_emulator_free(MifareFuzzerEmulator* context);
  40. View* mifare_fuzzer_emulator_get_view(MifareFuzzerEmulator* context);
  41. void mifare_fuzzer_emulator_set_card(
  42. MifareFuzzerEmulator* mifare_fuzzer_emulator,
  43. MifareCard mifare_card,
  44. FuriString* name);
  45. void mifare_fuzzer_emulator_set_attack(
  46. MifareFuzzerEmulator* mifare_fuzzer_emulator,
  47. MifareFuzzerAttack mifare_attack);
  48. void mifare_fuzzer_emulator_set_callback(
  49. MifareFuzzerEmulator* mifare_fuzzer_emulator,
  50. MifareFuzzerEmulatorCallback callback,
  51. void* context);
  52. void mifare_fuzzer_emulator_set_nfc_data(
  53. MifareFuzzerEmulator* mifare_fuzzer_emulator,
  54. Iso14443_3aData nfc_data);
  55. void mifare_fuzzer_emulator_set_ticks_between_cards(
  56. MifareFuzzerEmulator* mifare_fuzzer_emulator,
  57. uint8_t ticks);
  58. void mifare_fuzzer_emulator_set_tick_num(
  59. MifareFuzzerEmulator* mifare_fuzzer_emulator,
  60. uint8_t tick_num);