subbrute_protocols.c 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238
  1. #include "subbrute_protocols.h"
  2. /**
  3. * CAME 12bit 303MHz
  4. */
  5. const SubBruteProtocol subbrute_protocol_came_12bit_303 = {
  6. .frequency = 303875000,
  7. .bits = 12,
  8. .te = 0,
  9. .repeat = 3,
  10. .preset = FuriHalSubGhzPresetOok650Async,
  11. .file = CAMEFileProtocol};
  12. /**
  13. * CAME 12bit 307MHz
  14. */
  15. const SubBruteProtocol subbrute_protocol_came_12bit_307 = {
  16. .frequency = 307800000,
  17. .bits = 12,
  18. .te = 0,
  19. .repeat = 3,
  20. .preset = FuriHalSubGhzPresetOok650Async,
  21. .file = CAMEFileProtocol};
  22. /**
  23. * CAME 12bit 433MHz
  24. */
  25. const SubBruteProtocol subbrute_protocol_came_12bit_433 = {
  26. .frequency = 433920000,
  27. .bits = 12,
  28. .te = 0,
  29. .repeat = 3,
  30. .preset = FuriHalSubGhzPresetOok650Async,
  31. .file = CAMEFileProtocol};
  32. /**
  33. * CAME 12bit 868MHz
  34. */
  35. const SubBruteProtocol subbrute_protocol_came_12bit_868 = {
  36. .frequency = 868350000,
  37. .bits = 12,
  38. .te = 0,
  39. .repeat = 3,
  40. .preset = FuriHalSubGhzPresetOok650Async,
  41. .file = CAMEFileProtocol};
  42. /**
  43. * NICE 12bit 433MHz
  44. */
  45. const SubBruteProtocol subbrute_protocol_nice_12bit_433 = {
  46. .frequency = 433920000,
  47. .bits = 12,
  48. .te = 0,
  49. .repeat = 3,
  50. .preset = FuriHalSubGhzPresetOok650Async,
  51. .file = NICEFileProtocol};
  52. /**
  53. * NICE 12bit 868MHz
  54. */
  55. const SubBruteProtocol subbrute_protocol_nice_12bit_868 = {
  56. .frequency = 868350000,
  57. .bits = 12,
  58. .te = 0,
  59. .repeat = 3,
  60. .preset = FuriHalSubGhzPresetOok650Async,
  61. .file = NICEFileProtocol};
  62. /**
  63. * Chamberlain 9bit 300MHz
  64. */
  65. const SubBruteProtocol subbrute_protocol_chamberlain_9bit_300 = {
  66. .frequency = 300000000,
  67. .bits = 9,
  68. .te = 0,
  69. .repeat = 3,
  70. .preset = FuriHalSubGhzPresetOok650Async,
  71. .file = ChamberlainFileProtocol};
  72. /**
  73. * Chamberlain 9bit 315MHz
  74. */
  75. const SubBruteProtocol subbrute_protocol_chamberlain_9bit_315 = {
  76. .frequency = 315000000,
  77. .bits = 9,
  78. .te = 0,
  79. .repeat = 3,
  80. .preset = FuriHalSubGhzPresetOok650Async,
  81. .file = ChamberlainFileProtocol};
  82. /**
  83. * Chamberlain 9bit 390MHz
  84. */
  85. const SubBruteProtocol subbrute_protocol_chamberlain_9bit_390 = {
  86. .frequency = 390000000,
  87. .bits = 9,
  88. .te = 0,
  89. .repeat = 3,
  90. .preset = FuriHalSubGhzPresetOok650Async,
  91. .file = ChamberlainFileProtocol};
  92. /**
  93. * Linear 10bit 300MHz
  94. */
  95. const SubBruteProtocol subbrute_protocol_linear_10bit_300 = {
  96. .frequency = 300000000,
  97. .bits = 10,
  98. .te = 0,
  99. .repeat = 5,
  100. .preset = FuriHalSubGhzPresetOok650Async,
  101. .file = LinearFileProtocol};
  102. /**
  103. * Linear 10bit 310MHz
  104. */
  105. const SubBruteProtocol subbrute_protocol_linear_10bit_310 = {
  106. .frequency = 310000000,
  107. .bits = 10,
  108. .te = 0,
  109. .repeat = 5,
  110. .preset = FuriHalSubGhzPresetOok650Async,
  111. .file = LinearFileProtocol};
  112. /**
  113. * BF existing dump
  114. */
  115. const SubBruteProtocol subbrute_protocol_load_file =
  116. {0, 0, 0, 3, FuriHalSubGhzPresetOok650Async, RAWFileProtocol};
  117. //static const SubBruteProtocol subbrute_protocols[SubBruteAttackTotalCount] = {
  118. // [SubBruteAttackCAME12bit303] =
  119. // {303875000, 12, 0, 3, FuriHalSubGhzPresetOok650Async, CAMEFileProtocol},
  120. // [SubBruteAttackCAME12bit307] =
  121. // {307800000, 12, 0, 3, FuriHalSubGhzPresetOok650Async, CAMEFileProtocol},
  122. // [SubBruteAttackCAME12bit433] =
  123. // {433920000, 12, 0, 3, FuriHalSubGhzPresetOok650Async, CAMEFileProtocol},
  124. // [SubBruteAttackCAME12bit868] =
  125. // {868350000, 12, 0, 3, FuriHalSubGhzPresetOok650Async, CAMEFileProtocol},
  126. // [SubBruteAttackNICE12bit433] =
  127. // {433920000, 12, 0, 3, FuriHalSubGhzPresetOok650Async, NICEFileProtocol},
  128. // [SubBruteAttackNICE12bit868] =
  129. // {868350000, 12, 0, 3, FuriHalSubGhzPresetOok650Async, NICEFileProtocol},
  130. // [SubBruteAttackChamberlain9bit300] =
  131. // {300000000, 9, 0, 3, FuriHalSubGhzPresetOok650Async, ChamberlainFileProtocol},
  132. // [SubBruteAttackChamberlain9bit315] =
  133. // {315000000, 9, 0, 3, FuriHalSubGhzPresetOok650Async, ChamberlainFileProtocol},
  134. // [SubBruteAttackChamberlain9bit390] =
  135. // {390000000, 9, 0, 3, FuriHalSubGhzPresetOok650Async, ChamberlainFileProtocol},
  136. // [SubBruteAttackLinear10bit300] =
  137. // {300000000, 10, 0, 5, FuriHalSubGhzPresetOok650Async, LinearFileProtocol},
  138. // [SubBruteAttackLinear10bit310] =
  139. // {300000000, 10, 0, 5, FuriHalSubGhzPresetOok650Async, LinearFileProtocol},
  140. // [SubBruteAttackLoadFile] = {0, 0, 0, 3, FuriHalSubGhzPresetOok650Async, RAWFileProtocol},
  141. //};
  142. static const char* subbrute_protocol_names[] = {
  143. [SubBruteAttackCAME12bit303] = "CAME 12bit 303MHz",
  144. [SubBruteAttackCAME12bit307] = "CAME 12bit 307MHz",
  145. [SubBruteAttackCAME12bit433] = "CAME 12bit 433MHz",
  146. [SubBruteAttackCAME12bit868] = "CAME 12bit 868MHz",
  147. [SubBruteAttackNICE12bit433] = "NICE 12bit 433MHz",
  148. [SubBruteAttackNICE12bit868] = "NICE 12bit 868MHz",
  149. [SubBruteAttackChamberlain9bit300] = "Chamberlain 9bit 300MHz",
  150. [SubBruteAttackChamberlain9bit315] = "Chamberlain 9bit 315MHz",
  151. [SubBruteAttackChamberlain9bit390] = "Chamberlain 9bit 390MHz",
  152. [SubBruteAttackLinear10bit300] = "Linear 10bit 300MHz",
  153. [SubBruteAttackLinear10bit310] = "Linear 10bit 310MHz",
  154. [SubBruteAttackLoadFile] = "BF existing dump",
  155. [SubBruteAttackTotalCount] = "Total Count",
  156. };
  157. static const char* subbrute_protocol_presets[] = {
  158. [FuriHalSubGhzPresetIDLE] = "FuriHalSubGhzPresetIDLE",
  159. [FuriHalSubGhzPresetOok270Async] = "FuriHalSubGhzPresetOok270Async",
  160. [FuriHalSubGhzPresetOok650Async] = "FuriHalSubGhzPresetOok650Async",
  161. [FuriHalSubGhzPreset2FSKDev238Async] = "FuriHalSubGhzPreset2FSKDev238Async",
  162. [FuriHalSubGhzPreset2FSKDev476Async] = "FuriHalSubGhzPreset2FSKDev476Async",
  163. [FuriHalSubGhzPresetMSK99_97KbAsync] = "FuriHalSubGhzPresetMSK99_97KbAsync",
  164. [FuriHalSubGhzPresetGFSK9_99KbAsync] = "FuriHalSubGhzPresetGFSK9_99KbAsync",
  165. };
  166. const SubBruteProtocol* subbrute_protocol_registry[] = {
  167. [SubBruteAttackCAME12bit303] = &subbrute_protocol_came_12bit_303,
  168. [SubBruteAttackCAME12bit307] = &subbrute_protocol_came_12bit_307,
  169. [SubBruteAttackCAME12bit433] = &subbrute_protocol_came_12bit_433,
  170. [SubBruteAttackCAME12bit868] = &subbrute_protocol_came_12bit_868,
  171. [SubBruteAttackNICE12bit433] = &subbrute_protocol_nice_12bit_433,
  172. [SubBruteAttackNICE12bit868] = &subbrute_protocol_nice_12bit_868,
  173. [SubBruteAttackChamberlain9bit300] = &subbrute_protocol_chamberlain_9bit_300,
  174. [SubBruteAttackChamberlain9bit315] = &subbrute_protocol_chamberlain_9bit_315,
  175. [SubBruteAttackChamberlain9bit390] = &subbrute_protocol_chamberlain_9bit_390,
  176. [SubBruteAttackLinear10bit300] = &subbrute_protocol_linear_10bit_300,
  177. [SubBruteAttackLinear10bit310] = &subbrute_protocol_linear_10bit_310,
  178. [SubBruteAttackLoadFile] = &subbrute_protocol_load_file};
  179. static const char* subbrute_protocol_file_types[] = {
  180. [CAMEFileProtocol] = "CAME",
  181. [NICEFileProtocol] = "Nice FLO",
  182. [ChamberlainFileProtocol] = "Cham_Code",
  183. [LinearFileProtocol] = "Linear",
  184. [PrincetonFileProtocol] = "Princeton",
  185. [RAWFileProtocol] = "RAW"};
  186. const char* subbrute_protocol_name(SubBruteAttacks index) {
  187. return subbrute_protocol_names[index];
  188. }
  189. const SubBruteProtocol* subbrute_protocol(SubBruteAttacks index) {
  190. return subbrute_protocol_registry[index];
  191. }
  192. const char* subbrute_protocol_preset(FuriHalSubGhzPreset preset) {
  193. return subbrute_protocol_presets[preset];
  194. }
  195. const char* subbrute_protocol_file(SubBruteFileProtocol protocol) {
  196. return subbrute_protocol_file_types[protocol];
  197. }
  198. FuriHalSubGhzPreset subbrute_protocol_convert_preset(FuriString* preset_name) {
  199. for(size_t i = FuriHalSubGhzPresetIDLE; i < FuriHalSubGhzPresetCustom; i++) {
  200. if(furi_string_cmp_str(preset_name, subbrute_protocol_presets[i]) == 0) {
  201. return i;
  202. }
  203. }
  204. return FuriHalSubGhzPresetIDLE;
  205. }
  206. SubBruteFileProtocol subbrute_protocol_file_protocol_name(FuriString* name) {
  207. for(size_t i = CAMEFileProtocol; i < TotalFileProtocol - 1; i++) {
  208. if(furi_string_cmp_str(name, subbrute_protocol_file_types[i]) == 0) {
  209. return i;
  210. }
  211. }
  212. return RAWFileProtocol;
  213. }