subbrute_protocols.h 2.6 KB

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