subbrute_protocols.h 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  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. UnknownFileProtocol,
  21. TotalFileProtocol,
  22. } SubBruteFileProtocol;
  23. typedef enum {
  24. SubBruteAttackCAME12bit303,
  25. SubBruteAttackCAME12bit307,
  26. SubBruteAttackCAME12bit433,
  27. SubBruteAttackCAME12bit868,
  28. SubBruteAttackNICE12bit433,
  29. SubBruteAttackNICE12bit868,
  30. SubBruteAttackAnsonic12bit433075,
  31. SubBruteAttackAnsonic12bit433,
  32. SubBruteAttackAnsonic12bit434,
  33. SubBruteAttackChamberlain9bit300,
  34. SubBruteAttackChamberlain9bit315,
  35. SubBruteAttackChamberlain9bit390,
  36. SubBruteAttackChamberlain9bit433,
  37. SubBruteAttackChamberlain8bit300,
  38. SubBruteAttackChamberlain8bit315,
  39. SubBruteAttackChamberlain8bit390,
  40. SubBruteAttackChamberlain7bit300,
  41. SubBruteAttackChamberlain7bit315,
  42. SubBruteAttackChamberlain7bit390,
  43. SubBruteAttackLinear10bit300,
  44. SubBruteAttackLinear10bit310,
  45. SubBruteAttackLoadFile,
  46. SubBruteAttackTotalCount,
  47. } SubBruteAttacks;
  48. typedef struct {
  49. uint32_t frequency;
  50. uint8_t bits;
  51. uint8_t te;
  52. uint8_t repeat;
  53. FuriHalSubGhzPreset preset;
  54. SubBruteFileProtocol file;
  55. } SubBruteProtocol;
  56. const SubBruteProtocol* subbrute_protocol(SubBruteAttacks index);
  57. const char* subbrute_protocol_preset(FuriHalSubGhzPreset preset);
  58. const char* subbrute_protocol_file(SubBruteFileProtocol protocol);
  59. FuriHalSubGhzPreset subbrute_protocol_convert_preset(FuriString* preset_name);
  60. SubBruteFileProtocol subbrute_protocol_file_protocol_name(FuriString* name);
  61. uint8_t subbrute_protocol_repeats_count(SubBruteAttacks index);
  62. const char* subbrute_protocol_name(SubBruteAttacks index);
  63. void subbrute_protocol_default_payload(
  64. Stream* stream,
  65. uint64_t step,
  66. uint8_t bits,
  67. uint8_t te,
  68. uint8_t repeat);
  69. void subbrute_protocol_file_payload(
  70. Stream* stream,
  71. uint64_t step,
  72. uint8_t bits,
  73. uint8_t te,
  74. uint8_t repeat,
  75. uint8_t bit_index,
  76. uint64_t file_key,
  77. bool two_bytes);
  78. void subbrute_protocol_default_generate_file(
  79. Stream* stream,
  80. uint32_t frequency,
  81. FuriHalSubGhzPreset preset,
  82. SubBruteFileProtocol file,
  83. uint64_t step,
  84. uint8_t bits,
  85. uint8_t te,
  86. uint8_t repeat);
  87. void subbrute_protocol_file_generate_file(
  88. Stream* stream,
  89. uint32_t frequency,
  90. FuriHalSubGhzPreset preset,
  91. SubBruteFileProtocol file,
  92. uint64_t step,
  93. uint8_t bits,
  94. uint8_t te,
  95. uint8_t repeat,
  96. uint8_t bit_index,
  97. uint64_t file_key,
  98. bool two_bytes);
  99. uint64_t
  100. subbrute_protocol_calc_max_value(SubBruteAttacks attack_type, uint8_t bits, bool two_bytes);