CommandLine.h 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. #ifndef CommandLine_h
  2. #define CommandLine_h
  3. #include "configs.h"
  4. #ifdef HAS_SCREEN
  5. #include "MenuFunctions.h"
  6. #include "Display.h"
  7. #endif
  8. #include "WiFiScan.h"
  9. #include "Web.h"
  10. #include "SDInterface.h"
  11. #include "settings.h"
  12. #ifdef HAS_SCREEN
  13. extern MenuFunctions menu_function_obj;
  14. extern Display display_obj;
  15. #endif
  16. extern WiFiScan wifi_scan_obj;
  17. extern Web web_obj;
  18. extern SDInterface sd_obj;
  19. extern Settings settings_obj;
  20. extern LinkedList<AccessPoint>* access_points;
  21. extern LinkedList<ssid>* ssids;
  22. extern const String PROGMEM version_number;
  23. //// Commands
  24. // Admin
  25. const char PROGMEM CH_CMD[] = "channel";
  26. const char PROGMEM CLEARAP_CMD[] = "clearlist";
  27. const char PROGMEM REBOOT_CMD[] = "reboot";
  28. const char PROGMEM UPDATE_CMD[] = "update";
  29. const char PROGMEM HELP_CMD[] = "help";
  30. const char PROGMEM SETTINGS_CMD[] = "settings";
  31. // WiFi sniff/scan
  32. const char PROGMEM SCANAP_CMD[] = "scanap";
  33. const char PROGMEM SNIFF_BEACON_CMD[] = "sniffbeacon";
  34. const char PROGMEM SNIFF_PROBE_CMD[] = "sniffprobe";
  35. const char PROGMEM SNIFF_PWN_CMD[] = "sniffpwn";
  36. const char PROGMEM SNIFF_ESP_CMD[] = "sniffesp";
  37. const char PROGMEM SNIFF_DEAUTH_CMD[] = "sniffdeauth";
  38. const char PROGMEM SNIFF_PMKID_CMD[] = "sniffpmkid";
  39. const char PROGMEM STOPSCAN_CMD[] = "stopscan";
  40. // WiFi attack
  41. const char PROGMEM ATTACK_CMD[] = "attack";
  42. const char PROGMEM ATTACK_TYPE_DEAUTH[] = "deauth";
  43. const char PROGMEM ATTACK_TYPE_BEACON[] = "beacon";
  44. const char PROGMEM ATTACK_TYPE_PROBE[] = "probe";
  45. const char PROGMEM ATTACK_TYPE_RR[] = "rickroll";
  46. // WiFi Aux
  47. const char PROGMEM LIST_AP_CMD[] = "list";
  48. const char PROGMEM SEL_CMD[] = "select";
  49. const char PROGMEM SSID_CMD[] = "ssid";
  50. // Bluetooth sniff/scan
  51. const char PROGMEM BT_SNIFF_CMD[] = "sniffbt";
  52. const char PROGMEM BT_SKIM_CMD[] = "sniffskim";
  53. //// Command help messages
  54. // Admin
  55. const char PROGMEM HELP_HEAD[] = "============ Commands ============";
  56. const char PROGMEM HELP_CH_CMD[] = "channel [-s <channel>]";
  57. const char PROGMEM HELP_CLEARAP_CMD_A[] = "clearlist -a";
  58. const char PROGMEM HELP_CLEARAP_CMD_B[] = "clearlist -s";
  59. const char PROGMEM HELP_REBOOT_CMD[] = "reboot";
  60. const char PROGMEM HELP_UPDATE_CMD_A[] = "update -s";
  61. const char PROGMEM HELP_UPDATE_CMD_B[] = "update -w";
  62. const char PROGMEM HELP_SETTINGS_CMD[] = "settings [-s <setting> <value>]";
  63. // WiFi sniff/scan
  64. const char PROGMEM HELP_SCANAP_CMD[] = "scanap";
  65. const char PROGMEM HELP_SNIFF_BEACON_CMD[] = "sniffbeacon";
  66. const char PROGMEM HELP_SNIFF_PROBE_CMD[] = "sniffprobe";
  67. const char PROGMEM HELP_SNIFF_PWN_CMD[] = "sniffpwn";
  68. const char PROGMEM HELP_SNIFF_ESP_CMD[] = "sniffesp";
  69. const char PROGMEM HELP_SNIFF_DEAUTH_CMD[] = "sniffdeauth";
  70. const char PROGMEM HELP_SNIFF_PMKID_CMD[] = "sniffpmkid [-c <channel>]";
  71. const char PROGMEM HELP_STOPSCAN_CMD[] = "stopscan";
  72. // WiFi attack
  73. const char PROGMEM HELP_ATTACK_CMD[] = "attack -t <beacon [-l/-r/-a]/deauth/probe/rickroll>";
  74. // WiFi Aux
  75. const char PROGMEM HELP_LIST_AP_CMD_A[] = "list -s";
  76. const char PROGMEM HELP_LIST_AP_CMD_B[] = "list -a";
  77. const char PROGMEM HELP_SEL_CMD_A[] = "select -a <index (comma separated)>";
  78. const char PROGMEM HELP_SEL_CMD_B[] = "select -s <index (comma separated)>";
  79. const char PROGMEM HELP_SSID_CMD_A[] = "ssid -a [-g <count>/-n <name>]";
  80. const char PROGMEM HELP_SSID_CMD_B[] = "ssid -r <index>";
  81. // Bluetooth sniff/scan
  82. const char PROGMEM HELP_BT_SNIFF_CMD[] = "sniffbt";
  83. const char PROGMEM HELP_BT_SKIM_CMD[] = "sniffskim";
  84. const char PROGMEM HELP_FOOT[] = "==================================";
  85. class CommandLine {
  86. private:
  87. String getSerialInput();
  88. LinkedList<String> parseCommand(String input, char* delim);
  89. void runCommand(String input);
  90. bool checkValueExists(LinkedList<String>* cmd_args_list, int index);
  91. bool inRange(int max, int index);
  92. bool apSelected();
  93. bool hasSSIDs();
  94. int argSearch(LinkedList<String>* cmd_args, String key);
  95. const char* ascii_art =
  96. "\r\n"
  97. " @@@@@@ \r\n"
  98. " @@@@@@@@ \r\n"
  99. " @@@@@@@@@@@ \r\n"
  100. " @@@@@@ @@@@@@ \r\n"
  101. " @@@@@@@ @@@@@@@ \r\n"
  102. " @@@@@@ @@@@@@ \r\n"
  103. " @@@@@@@ @@@@@@@ \r\n"
  104. " @@@@@@ @@@@@@ \r\n"
  105. "@@@@@@@ @@@@@@@@@@@@@@@@ \r\n"
  106. "@@@@@ @@@@@@@@@@@@@@@ \r\n"
  107. "@@@@@ @@@@@@@ \r\n"
  108. "@@@@@ @@@@@@ \r\n"
  109. "@@@@@@ @@@@@@@ \r\n"
  110. " @@@@@@ @@@@@@@@@@@@\r\n"
  111. " @@@@@@@ @@@@@@ \r\n"
  112. " @@@@@@ @@@@@@ \r\n"
  113. " @@@@@@@ @@@@@@ \r\n"
  114. " @@@@@@ @@@@@@ \r\n"
  115. " @@@@@@@ @@@@@@ \r\n"
  116. " @@@@@@ @@@@@@ \r\n"
  117. " @@@@@@@@@ \r\n"
  118. " @@@@@@ \r\n"
  119. " @@@@ \r\n"
  120. "\r\n";
  121. public:
  122. CommandLine();
  123. void RunSetup();
  124. void main(uint32_t currentTime);
  125. };
  126. #endif