subbrute_protocols.h 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  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. // FrequencyProtocolField,
  8. // BitsProtocolField,
  9. // HasTeProtocolField,
  10. // RepeatProtocolField,
  11. // PresetProtocolField,
  12. // FileProtocolField,
  13. // TotalProtocolFields
  14. //} ProtocolFields;
  15. typedef enum {
  16. CAMEFileProtocol,
  17. NICEFileProtocol,
  18. ChamberlainFileProtocol,
  19. LinearFileProtocol,
  20. PrincetonFileProtocol,
  21. RAWFileProtocol,
  22. TotalFileProtocol,
  23. } SubBruteFileProtocol;
  24. typedef enum {
  25. SubBruteAttackCAME12bit303,
  26. SubBruteAttackCAME12bit307,
  27. SubBruteAttackCAME12bit433,
  28. SubBruteAttackCAME12bit868,
  29. SubBruteAttackNICE12bit433,
  30. SubBruteAttackNICE12bit868,
  31. SubBruteAttackChamberlain7bit390,
  32. SubBruteAttackChamberlain8bit390,
  33. SubBruteAttackChamberlain9bit300,
  34. SubBruteAttackChamberlain9bit315,
  35. SubBruteAttackChamberlain9bit390,
  36. SubBruteAttackChamberlain9bit433,
  37. SubBruteAttackLinear10bit300,
  38. SubBruteAttackLinear10bit310,
  39. SubBruteAttackLoadFile,
  40. SubBruteAttackTotalCount,
  41. } SubBruteAttacks;
  42. typedef struct {
  43. uint32_t frequency;
  44. uint8_t bits;
  45. uint8_t te;
  46. uint8_t repeat;
  47. FuriHalSubGhzPreset preset;
  48. SubBruteFileProtocol file;
  49. } SubBruteProtocol;
  50. const SubBruteProtocol* subbrute_protocol(SubBruteAttacks index);
  51. const char* subbrute_protocol_preset(FuriHalSubGhzPreset preset);
  52. const char* subbrute_protocol_file(SubBruteFileProtocol protocol);
  53. FuriHalSubGhzPreset subbrute_protocol_convert_preset(FuriString* preset_name);
  54. SubBruteFileProtocol subbrute_protocol_file_protocol_name(FuriString* name);
  55. const char* subbrute_protocol_name(SubBruteAttacks index);
  56. void subbrute_protocol_default_payload(
  57. Stream* stream,
  58. uint64_t step,
  59. uint8_t bits,
  60. uint8_t te,
  61. uint8_t repeat);
  62. void subbrute_protocol_file_payload(
  63. Stream* stream,
  64. uint64_t step,
  65. uint8_t bits,
  66. uint8_t te,
  67. uint8_t repeat,
  68. uint8_t load_index,
  69. const char* file_key);
  70. void subbrute_protocol_default_generate_file(
  71. Stream* stream,
  72. uint32_t frequency,
  73. FuriHalSubGhzPreset preset,
  74. SubBruteFileProtocol file,
  75. uint64_t step,
  76. uint8_t bits,
  77. uint8_t te,
  78. uint8_t repeat);
  79. void subbrute_protocol_file_generate_file(
  80. Stream* stream,
  81. uint32_t frequency,
  82. FuriHalSubGhzPreset preset,
  83. SubBruteFileProtocol file,
  84. uint64_t step,
  85. uint8_t bits,
  86. uint8_t te,
  87. uint8_t repeat,
  88. uint8_t load_index,
  89. const char* file_key);
  90. uint64_t subbrute_protocol_calc_max_value(SubBruteAttacks attack_type, uint8_t bits);