subbrute_protocols.h 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. #pragma once
  2. #include <furi.h>
  3. #include <furi_hal_subghz.h>
  4. #include <core/string.h>
  5. #include <toolbox/stream/stream.h>
  6. #define SUBBRUTE_PROTOCOL_MAX_REPEATS 9
  7. typedef enum {
  8. CAMEFileProtocol,
  9. NICEFileProtocol,
  10. ChamberlainFileProtocol,
  11. LinearFileProtocol,
  12. LinearDeltaFileProtocol,
  13. PrincetonFileProtocol,
  14. RAWFileProtocol,
  15. BETTFileProtocol,
  16. ClemsaFileProtocol,
  17. DoitrandFileProtocol,
  18. GateTXFileProtocol,
  19. MagellanFileProtocol,
  20. IntertechnoV3FileProtocol,
  21. AnsonicFileProtocol,
  22. SMC5326FileProtocol,
  23. UNILARMFileProtocol,
  24. PT2260FileProtocol,
  25. HoneywellFileProtocol,
  26. HoltekFileProtocol,
  27. UnknownFileProtocol,
  28. TotalFileProtocol,
  29. } SubBruteFileProtocol;
  30. typedef enum {
  31. SubBruteAttackCAME12bit303,
  32. SubBruteAttackCAME12bit307,
  33. SubBruteAttackCAME12bit315,
  34. SubBruteAttackCAME12bit433,
  35. SubBruteAttackCAME12bit868,
  36. SubBruteAttackNICE12bit433,
  37. SubBruteAttackNICE12bit868,
  38. SubBruteAttackAnsonic12bit433075,
  39. SubBruteAttackAnsonic12bit433,
  40. SubBruteAttackAnsonic12bit434,
  41. SubBruteAttackHoltek12bitFM433,
  42. SubBruteAttackHoltek12bitAM433,
  43. SubBruteAttackHoltek12bitAM315,
  44. SubBruteAttackHoltek12bitAM868,
  45. SubBruteAttackHoltek12bitAM915,
  46. SubBruteAttackChamberlain9bit300,
  47. SubBruteAttackChamberlain9bit315,
  48. SubBruteAttackChamberlain9bit390,
  49. SubBruteAttackChamberlain9bit433,
  50. SubBruteAttackChamberlain8bit300,
  51. SubBruteAttackChamberlain8bit315,
  52. SubBruteAttackChamberlain8bit390,
  53. SubBruteAttackChamberlain7bit300,
  54. SubBruteAttackChamberlain7bit315,
  55. SubBruteAttackChamberlain7bit390,
  56. SubBruteAttackLinear10bit300,
  57. SubBruteAttackLinear10bit310,
  58. SubBruteAttackLinearDelta8bit310,
  59. SubBruteAttackUNILARM24bit330,
  60. SubBruteAttackUNILARM24bit433,
  61. SubBruteAttackSMC532624bit330,
  62. SubBruteAttackSMC532624bit433,
  63. SubBruteAttackPT226024bit315,
  64. SubBruteAttackPT226024bit330,
  65. SubBruteAttackPT226024bit390,
  66. SubBruteAttackPT226024bit433,
  67. SubBruteAttackLoadFile,
  68. SubBruteAttackTotalCount,
  69. } SubBruteAttacks;
  70. typedef struct {
  71. uint32_t frequency;
  72. uint8_t bits;
  73. uint32_t te;
  74. uint8_t repeat;
  75. FuriHalSubGhzPreset preset;
  76. SubBruteFileProtocol file;
  77. } SubBruteProtocol;
  78. const SubBruteProtocol* subbrute_protocol(SubBruteAttacks index);
  79. const char* subbrute_protocol_preset(FuriHalSubGhzPreset preset);
  80. const char* subbrute_protocol_file(SubBruteFileProtocol protocol);
  81. FuriHalSubGhzPreset subbrute_protocol_convert_preset(FuriString* preset_name);
  82. SubBruteFileProtocol subbrute_protocol_file_protocol_name(FuriString* name);
  83. uint8_t subbrute_protocol_repeats_count(SubBruteAttacks index);
  84. const char* subbrute_protocol_name(SubBruteAttacks index);
  85. void subbrute_protocol_default_payload(
  86. Stream* stream,
  87. SubBruteFileProtocol file,
  88. uint64_t step,
  89. uint8_t bits,
  90. uint32_t te,
  91. uint8_t repeat);
  92. void subbrute_protocol_file_payload(
  93. Stream* stream,
  94. uint64_t step,
  95. uint8_t bits,
  96. uint32_t te,
  97. uint8_t repeat,
  98. uint8_t bit_index,
  99. uint64_t file_key,
  100. bool two_bytes);
  101. void subbrute_protocol_default_generate_file(
  102. Stream* stream,
  103. uint32_t frequency,
  104. FuriHalSubGhzPreset preset,
  105. SubBruteFileProtocol file,
  106. uint64_t step,
  107. uint8_t bits,
  108. uint32_t te);
  109. void subbrute_protocol_file_generate_file(
  110. Stream* stream,
  111. uint32_t frequency,
  112. FuriHalSubGhzPreset preset,
  113. SubBruteFileProtocol file,
  114. uint64_t step,
  115. uint8_t bits,
  116. uint32_t te,
  117. uint8_t bit_index,
  118. uint64_t file_key,
  119. bool two_bytes);
  120. uint64_t
  121. subbrute_protocol_calc_max_value(SubBruteAttacks attack_type, uint8_t bits, bool two_bytes);