subbrute_device.h 2.4 KB

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