subbrute_device.h 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  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/subbrute_radio_device_loader.h"
  8. #define SUBBRUTE_MAX_LEN_NAME 64
  9. #define SUBBRUTE_PATH EXT_PATH("subghz")
  10. #define SUBBRUTE_FILE_EXT ".sub"
  11. typedef enum {
  12. SubBruteFileResultUnknown,
  13. SubBruteFileResultOk,
  14. SubBruteFileResultErrorOpenFile,
  15. SubBruteFileResultMissingOrIncorrectHeader,
  16. SubBruteFileResultFrequencyNotAllowed,
  17. SubBruteFileResultMissingOrIncorrectFrequency,
  18. SubBruteFileResultPresetInvalid,
  19. SubBruteFileResultMissingProtocol,
  20. SubBruteFileResultProtocolNotSupported,
  21. SubBruteFileResultDynamicProtocolNotValid,
  22. SubBruteFileResultProtocolNotFound,
  23. SubBruteFileResultMissingOrIncorrectBit,
  24. SubBruteFileResultMissingOrIncorrectKey,
  25. SubBruteFileResultMissingOrIncorrectTe,
  26. } SubBruteFileResult;
  27. typedef struct {
  28. const SubBruteProtocol* protocol_info;
  29. SubBruteProtocol* file_protocol_info;
  30. // Current step
  31. uint64_t current_step;
  32. // SubGhz
  33. SubGhzReceiver* receiver;
  34. SubGhzProtocolDecoderBase* decoder_result;
  35. SubGhzEnvironment* environment;
  36. const SubGhzDevice* radio_device;
  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(const SubGhzDevice* radio_device);
  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);