CommandLine.h 5.0 KB

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