CommandLine.h 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  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. #ifdef HAS_SD
  11. #include "SDInterface.h"
  12. #endif
  13. #include "settings.h"
  14. #include "LedInterface.h"
  15. #ifdef HAS_SCREEN
  16. extern MenuFunctions menu_function_obj;
  17. extern Display display_obj;
  18. #endif
  19. extern WiFiScan wifi_scan_obj;
  20. //extern Web web_obj;
  21. #ifdef HAS_SD
  22. extern SDInterface sd_obj;
  23. #endif
  24. extern Settings settings_obj;
  25. extern LedInterface led_obj;
  26. extern LinkedList<AccessPoint>* access_points;
  27. extern LinkedList<ssid>* ssids;
  28. extern LinkedList<Station>* stations;
  29. extern const String PROGMEM version_number;
  30. extern const String PROGMEM board_target;
  31. //// Commands
  32. // Camera functions
  33. const char PROGMEM CAM_PHOTO[] = "photo";
  34. const char PROGMEM CAM_FLASHLIGHT[] = "flashlight";
  35. // Admin
  36. const char PROGMEM CH_CMD[] = "channel";
  37. const char PROGMEM CLEARAP_CMD[] = "clearlist";
  38. const char PROGMEM REBOOT_CMD[] = "reboot";
  39. const char PROGMEM UPDATE_CMD[] = "update";
  40. const char PROGMEM HELP_CMD[] = "help";
  41. const char PROGMEM SETTINGS_CMD[] = "settings";
  42. const char PROGMEM LS_CMD[] = "ls";
  43. const char PROGMEM LED_CMD[] = "led";
  44. const char PROGMEM GPS_DATA_CMD[] = "gpsdata";
  45. const char PROGMEM GPS_CMD[] = "gps";
  46. // WiFi sniff/scan
  47. const char PROGMEM EVIL_PORTAL_CMD[] = "evilportal";
  48. const char PROGMEM SIGSTREN_CMD[] = "sigmon";
  49. const char PROGMEM SCANAP_CMD[] = "scanap";
  50. const char PROGMEM SCANSTA_CMD[] = "scansta";
  51. const char PROGMEM SNIFF_RAW_CMD[] = "sniffraw";
  52. const char PROGMEM SNIFF_BEACON_CMD[] = "sniffbeacon";
  53. const char PROGMEM SNIFF_PROBE_CMD[] = "sniffprobe";
  54. const char PROGMEM SNIFF_PWN_CMD[] = "sniffpwn";
  55. const char PROGMEM SNIFF_ESP_CMD[] = "sniffesp";
  56. const char PROGMEM SNIFF_DEAUTH_CMD[] = "sniffdeauth";
  57. const char PROGMEM SNIFF_PMKID_CMD[] = "sniffpmkid";
  58. const char PROGMEM STOPSCAN_CMD[] = "stopscan";
  59. const char PROGMEM WARDRIVE_CMD[] = "wardrive";
  60. // WiFi attack
  61. const char PROGMEM ATTACK_CMD[] = "attack";
  62. const char PROGMEM ATTACK_TYPE_DEAUTH[] = "deauth";
  63. const char PROGMEM ATTACK_TYPE_BEACON[] = "beacon";
  64. const char PROGMEM ATTACK_TYPE_PROBE[] = "probe";
  65. const char PROGMEM ATTACK_TYPE_RR[] = "rickroll";
  66. // WiFi Aux
  67. const char PROGMEM LIST_AP_CMD[] = "list";
  68. const char PROGMEM SEL_CMD[] = "select";
  69. const char PROGMEM SSID_CMD[] = "ssid";
  70. // Bluetooth sniff/scan
  71. const char PROGMEM BT_SNIFF_CMD[] = "sniffbt";
  72. const char PROGMEM BT_SKIM_CMD[] = "sniffskim";
  73. //// Command help messages
  74. // Admin
  75. const char PROGMEM HELP_HEAD[] = "============ Commands ============";
  76. const char PROGMEM HELP_CH_CMD[] = "channel [-s <channel>]";
  77. const char PROGMEM HELP_CLEARAP_CMD_A[] = "clearlist -a/-c/-s";
  78. const char PROGMEM HELP_REBOOT_CMD[] = "reboot";
  79. const char PROGMEM HELP_UPDATE_CMD_A[] = "update -s/-w";
  80. const char PROGMEM HELP_SETTINGS_CMD[] = "settings [-s <setting> enable/disable>]/[-r]";
  81. const char PROGMEM HELP_LS_CMD[] = "ls <directory>";
  82. const char PROGMEM HELP_LED_CMD[] = "led -s <hex color>/-p <rainbow>";
  83. const char PROGMEM HELP_GPS_DATA_CMD[] = "gpsdata";
  84. const char PROGMEM HELP_GPS_CMD[] = "gps [-g] <fix/sat/lon/lat/alt/date>";
  85. // WiFi sniff/scan
  86. const char PROGMEM HELP_EVIL_PORTAL_CMD[] = "evilportal [-c start]";
  87. const char PROGMEM HELP_SIGSTREN_CMD[] = "sigmon";
  88. const char PROGMEM HELP_SCANAP_CMD[] = "scanap";
  89. const char PROGMEM HELP_SCANSTA_CMD[] = "scansta";
  90. const char PROGMEM HELP_SNIFF_RAW_CMD[] = "sniffraw";
  91. const char PROGMEM HELP_SNIFF_BEACON_CMD[] = "sniffbeacon";
  92. const char PROGMEM HELP_SNIFF_PROBE_CMD[] = "sniffprobe";
  93. const char PROGMEM HELP_SNIFF_PWN_CMD[] = "sniffpwn";
  94. const char PROGMEM HELP_SNIFF_ESP_CMD[] = "sniffesp";
  95. const char PROGMEM HELP_SNIFF_DEAUTH_CMD[] = "sniffdeauth";
  96. const char PROGMEM HELP_SNIFF_PMKID_CMD[] = "sniffpmkid [-c <channel>][-d][-l]";
  97. const char PROGMEM HELP_STOPSCAN_CMD[] = "stopscan";
  98. const char PROGMEM HELP_WARDRIVE_CMD[] = "wardrive";
  99. // WiFi attack
  100. const char PROGMEM HELP_ATTACK_CMD[] = "attack -t <beacon [-l/-r/-a]/deauth [-c]/[-s <src mac>] [-d <dst mac>]/probe/rickroll>";
  101. // WiFi Aux
  102. const char PROGMEM HELP_LIST_AP_CMD_A[] = "list -s";
  103. const char PROGMEM HELP_LIST_AP_CMD_B[] = "list -a";
  104. const char PROGMEM HELP_LIST_AP_CMD_C[] = "list -c";
  105. const char PROGMEM HELP_SEL_CMD_A[] = "select -a/-s/-c <index (comma separated)>/-f \"equals <String> or contains <String>\"";
  106. const char PROGMEM HELP_SSID_CMD_A[] = "ssid -a [-g <count>/-n <name>]";
  107. const char PROGMEM HELP_SSID_CMD_B[] = "ssid -r <index>";
  108. // Bluetooth sniff/scan
  109. const char PROGMEM HELP_BT_SNIFF_CMD[] = "sniffbt";
  110. const char PROGMEM HELP_BT_SKIM_CMD[] = "sniffskim";
  111. const char PROGMEM HELP_FOOT[] = "==================================";
  112. class CommandLine {
  113. private:
  114. String getSerialInput();
  115. LinkedList<String> parseCommand(String input, char* delim);
  116. String toLowerCase(String str);
  117. void filterAccessPoints(String filter);
  118. void runCommand(String input);
  119. bool checkValueExists(LinkedList<String>* cmd_args_list, int index);
  120. bool inRange(int max, int index);
  121. bool apSelected();
  122. bool hasSSIDs();
  123. void showCounts(int selected, int unselected = -1);
  124. int argSearch(LinkedList<String>* cmd_args, String key);
  125. const char* ascii_art =
  126. "\r\n"
  127. " @@@@@@ \r\n"
  128. " @@@@@@@@ \r\n"
  129. " @@@@@@@@@@@ \r\n"
  130. " @@@@@@ @@@@@@ \r\n"
  131. " @@@@@@@ @@@@@@@ \r\n"
  132. " @@@@@@ @@@@@@ \r\n"
  133. " @@@@@@@ @@@@@@@ \r\n"
  134. " @@@@@@ @@@@@@ \r\n"
  135. "@@@@@@@ @@@@@@@@@@@@@@@@ \r\n"
  136. "@@@@@ @@@@@@@@@@@@@@@ \r\n"
  137. "@@@@@ @@@@@@@ \r\n"
  138. "@@@@@ @@@@@@ \r\n"
  139. "@@@@@@ @@@@@@@ \r\n"
  140. " @@@@@@ @@@@@@@@@@@@\r\n"
  141. " @@@@@@@ @@@@@@ \r\n"
  142. " @@@@@@ @@@@@@ \r\n"
  143. " @@@@@@@ @@@@@@ \r\n"
  144. " @@@@@@ @@@@@@ \r\n"
  145. " @@@@@@@ @@@@@@ \r\n"
  146. " @@@@@@ @@@@@@ \r\n"
  147. " @@@@@@@@@ \r\n"
  148. " @@@@@@ \r\n"
  149. " @@@@ \r\n"
  150. "\r\n";
  151. public:
  152. CommandLine();
  153. void RunSetup();
  154. void main(uint32_t currentTime);
  155. };
  156. #endif