subbrute_device.h 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. #pragma once
  2. #include "subbrute_protocols.h"
  3. #include <lib/subghz/protocols/base.h>
  4. #include <lib/subghz/transmitter.h>
  5. #include <lib/subghz/receiver.h>
  6. #include <lib/subghz/environment.h>
  7. #define SUBBRUTE_TEXT_STORE_SIZE 256
  8. #define SUBBRUTE_MAX_LEN_NAME 64
  9. #define SUBBRUTE_PATH EXT_PATH("subghz")
  10. #define SUBBRUTE_FILE_EXT ".sub"
  11. #define SUBBRUTE_PAYLOAD_SIZE 16
  12. typedef enum {
  13. SubBruteFileResultUnknown,
  14. SubBruteFileResultOk,
  15. SubBruteFileResultErrorOpenFile,
  16. SubBruteFileResultMissingOrIncorrectHeader,
  17. SubBruteFileResultFrequencyNotAllowed,
  18. SubBruteFileResultMissingOrIncorrectFrequency,
  19. SubBruteFileResultPresetInvalid,
  20. SubBruteFileResultMissingProtocol,
  21. SubBruteFileResultProtocolNotSupported,
  22. SubBruteFileResultDynamicProtocolNotValid,
  23. SubBruteFileResultProtocolNotFound,
  24. SubBruteFileResultMissingOrIncorrectBit,
  25. SubBruteFileResultMissingOrIncorrectKey,
  26. SubBruteFileResultMissingOrIncorrectTe,
  27. } SubBruteFileResult;
  28. typedef struct {
  29. const SubBruteProtocol* protocol_info;
  30. SubBruteProtocol* file_protocol_info;
  31. // Current step
  32. uint64_t current_step;
  33. // SubGhz
  34. SubGhzReceiver* receiver;
  35. SubGhzProtocolDecoderBase* decoder_result;
  36. SubGhzEnvironment* environment;
  37. // Attack state
  38. SubBruteAttacks attack;
  39. uint64_t max_value;
  40. uint8_t extra_repeats;
  41. // Loaded info for attack type
  42. uint64_t key_from_file;
  43. uint64_t current_key_from_file;
  44. bool two_bytes;
  45. // Index of group to bruteforce in loaded file
  46. uint8_t bit_index;
  47. } SubBruteDevice;
  48. SubBruteDevice* subbrute_device_alloc();
  49. void subbrute_device_free(SubBruteDevice* instance);
  50. bool subbrute_device_save_file(SubBruteDevice* instance, const char* key_name);
  51. const char* subbrute_device_error_get_desc(SubBruteFileResult error_id);
  52. SubBruteFileResult subbrute_device_attack_set(
  53. SubBruteDevice* context,
  54. SubBruteAttacks type,
  55. uint8_t extra_repeats);
  56. uint8_t subbrute_device_load_from_file(SubBruteDevice* context, const char* file_path);
  57. uint64_t subbrute_device_add_step(SubBruteDevice* instance, int8_t step);
  58. void subbrute_device_free_protocol_info(SubBruteDevice* instance);
  59. void subbrute_device_attack_set_default_values(
  60. SubBruteDevice* context,
  61. SubBruteAttacks default_attack);