subbrute_protocols.h 3.3 KB

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