wifi_marauder_script.h 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. /*
  2. * ----------------------------------------------------------------------------------------------------
  3. * STEPS TO ADD A NEW STAGE:
  4. *
  5. * wifi_marauder_script.h
  6. * - Complement WifiMarauderScriptStageType enum with new stage
  7. * - Create struct WifiMarauderScriptStage???? for the new stage
  8. *
  9. * wifi_marauder_script.c
  10. * - Create function "WifiMarauderScriptStage????* _wifi_marauder_script_get_stage_????(cJSON *stages)"
  11. * - Change _wifi_marauder_script_load_stages() to load new stage
  12. * - Add case to free memory in wifi_marauder_script_free()
  13. *
  14. * wifi_marauder_script_executor.c
  15. * - Create function "void _wifi_marauder_script_execute_????(WifiMarauderScriptStage????* stage)"
  16. * - Add case in wifi_marauder_script_execute_stage()
  17. *
  18. * ----------------------------------------------------------------------------------------------------
  19. * IMPLEMENTED STAGES (In order of execution):
  20. * - Scan
  21. * - Select
  22. * - Deauth
  23. * - Beacon List
  24. * ----------------------------------------------------------------------------------------------------
  25. * SCRIPT SYNTAX:
  26. * {
  27. * "meta": {
  28. * "description": "My script",
  29. * "repeat": times the script will repeat
  30. * },
  31. * "stages": {
  32. * "scan": {
  33. * "type": "ap" | "station",
  34. * "timeout": seconds,
  35. * "channel": 1-11
  36. * },
  37. * "select": {
  38. * "type": "ap" | "station" | "ssid",
  39. * "filter": "all" | "contains \"{SSID fragment}\" or equals \"{SSID}\" or ..."
  40. * },
  41. * "deauth": {
  42. * "timeout": seconds
  43. * },
  44. * "beaconlist": {
  45. * "ssids": [
  46. * "SSID 1",
  47. * "SSID 2",
  48. * "SSID 3"
  49. * ],
  50. * "timeout": seconds
  51. * }
  52. * }
  53. * }
  54. * ----------------------------------------------------------------------------------------------------
  55. */
  56. #pragma once
  57. #include <storage/storage.h>
  58. #include "cJSON.h"
  59. typedef enum {
  60. WifiMarauderScriptStageTypeScan,
  61. WifiMarauderScriptStageTypeSelect,
  62. WifiMarauderScriptStageTypeDeauth,
  63. WifiMarauderScriptStageTypeSniffPmkid,
  64. WifiMarauderScriptStageTypeBeaconList,
  65. } WifiMarauderScriptStageType;
  66. typedef enum {
  67. WifiMarauderScriptScanTypeAp,
  68. WifiMarauderScriptScanTypeStation
  69. } WifiMarauderScriptScanType;
  70. typedef enum {
  71. WifiMarauderScriptSelectTypeAp,
  72. WifiMarauderScriptSelectTypeStation,
  73. WifiMarauderScriptSelectTypeSsid
  74. } WifiMarauderScriptSelectType;
  75. // Stages
  76. typedef struct WifiMarauderScriptStage {
  77. WifiMarauderScriptStageType type;
  78. void* stage;
  79. struct WifiMarauderScriptStage *next_stage;
  80. } WifiMarauderScriptStage;
  81. typedef struct WifiMarauderScriptStageScan {
  82. WifiMarauderScriptScanType type;
  83. int channel;
  84. int timeout;
  85. } WifiMarauderScriptStageScan;
  86. typedef struct WifiMarauderScriptStageSelect {
  87. WifiMarauderScriptSelectType type;
  88. char* filter;
  89. // TODO: Implement a feature to not select the same items in the next iteration of the script
  90. bool allow_repeat;
  91. } WifiMarauderScriptStageSelect;
  92. typedef struct WifiMarauderScriptStageDeauth {
  93. int timeout;
  94. } WifiMarauderScriptStageDeauth;
  95. typedef struct WifiMarauderScriptStageSniffPmkid {
  96. bool force_deauth;
  97. int timeout;
  98. } WifiMarauderScriptStageSniffPmkid;
  99. typedef struct WifiMarauderScriptStageBeaconList {
  100. char **ssids;
  101. int ssid_count;
  102. int timeout;
  103. } WifiMarauderScriptStageBeaconList;
  104. // Script
  105. typedef struct WifiMarauderScript {
  106. char* description;
  107. WifiMarauderScriptStage *first_stage;
  108. int repeat;
  109. } WifiMarauderScript;
  110. WifiMarauderScript *wifi_marauder_script_alloc();
  111. WifiMarauderScript *wifi_marauder_script_parse_raw(const char* script_raw);
  112. WifiMarauderScript *wifi_marauder_script_parse_file(const char* file_path, Storage* storage);
  113. //void* wifi_marauder_script_get_stage(WifiMarauderScript *script, WifiMarauderScriptStageType stage);
  114. void wifi_marauder_script_free(WifiMarauderScript *script);