subbrute_device.h 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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 key_index;
  33. // Index of group to bruteforce in loaded file
  34. uint8_t load_index;
  35. // SubGhz
  36. SubGhzReceiver* receiver;
  37. SubGhzProtocolDecoderBase* decoder_result;
  38. SubGhzEnvironment* environment;
  39. // Attack state
  40. SubBruteAttacks attack;
  41. uint64_t max_value;
  42. uint8_t extra_repeats;
  43. // Loaded info for attack type
  44. char current_key[SUBBRUTE_PAYLOAD_SIZE];
  45. char file_key[SUBBRUTE_MAX_LEN_NAME];
  46. } SubBruteDevice;
  47. SubBruteDevice* subbrute_device_alloc();
  48. void subbrute_device_free(SubBruteDevice* instance);
  49. bool subbrute_device_save_file(SubBruteDevice* instance, const char* key_name);
  50. const char* subbrute_device_error_get_desc(SubBruteFileResult error_id);
  51. SubBruteFileResult subbrute_device_attack_set(SubBruteDevice* context, SubBruteAttacks type);
  52. uint8_t subbrute_device_load_from_file(SubBruteDevice* context, const char* file_path);
  53. uint64_t subbrute_device_add_step(SubBruteDevice* instance, int8_t step);
  54. void subbrute_device_free_protocol_info(SubBruteDevice* instance);
  55. void subbrute_device_attack_set_default_values(
  56. SubBruteDevice* context,
  57. SubBruteAttacks default_attack);