mifare_fuzzer_emulator.h 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  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. MifareCardUnsupported,
  15. } MifareCard;
  16. typedef enum MifareFuzzerAttack {
  17. MifareFuzzerAttackTestValues = 1,
  18. MifareFuzzerAttackRandomValues,
  19. MifareFuzzerAttackLoadUidsFromFile,
  20. } MifareFuzzerAttack;
  21. typedef struct MifareFuzzerEmulator {
  22. View* view;
  23. MifareFuzzerEmulatorCallback callback;
  24. void* context;
  25. bool is_attacking;
  26. uint8_t ticks_between_cards;
  27. } MifareFuzzerEmulator;
  28. typedef struct MifareFuzzerEmulatorModel {
  29. const char* title;
  30. MifareCard mifare_card;
  31. const char* mifare_card_dsc;
  32. MifareFuzzerAttack attack;
  33. const char* attack_dsc;
  34. Iso14443_3aData nfc_data;
  35. bool is_attacking;
  36. uint8_t tick_num;
  37. uint8_t ticks_between_cards;
  38. } MifareFuzzerEmulatorModel;
  39. MifareFuzzerEmulator* mifare_fuzzer_emulator_alloc();
  40. void mifare_fuzzer_emulator_free(MifareFuzzerEmulator* context);
  41. View* mifare_fuzzer_emulator_get_view(MifareFuzzerEmulator* context);
  42. void mifare_fuzzer_emulator_set_card(
  43. MifareFuzzerEmulator* mifare_fuzzer_emulator,
  44. MifareCard mifare_card,
  45. FuriString* name);
  46. void mifare_fuzzer_emulator_set_attack(
  47. MifareFuzzerEmulator* mifare_fuzzer_emulator,
  48. MifareFuzzerAttack mifare_attack);
  49. void mifare_fuzzer_emulator_set_callback(
  50. MifareFuzzerEmulator* mifare_fuzzer_emulator,
  51. MifareFuzzerEmulatorCallback callback,
  52. void* context);
  53. void mifare_fuzzer_emulator_set_nfc_data(
  54. MifareFuzzerEmulator* mifare_fuzzer_emulator,
  55. Iso14443_3aData nfc_data);
  56. void mifare_fuzzer_emulator_set_ticks_between_cards(
  57. MifareFuzzerEmulator* mifare_fuzzer_emulator,
  58. uint8_t ticks);
  59. void mifare_fuzzer_emulator_set_tick_num(
  60. MifareFuzzerEmulator* mifare_fuzzer_emulator,
  61. uint8_t tick_num);