🤬
Revision indexing in progress... (symbol navigation in revisions will be accurate after indexed)
  • ■ ■ ■ ■ ■ ■
    README.md
    skipped 20 lines
    21 21  * [Aliexpress Shop](https://www.aliexpress.com/item/4001219974113.html)
    22 22  * [Tindie Shop](https://www.tindie.com/products/aprbrother/evilcrow-keylogger/)
    23 23   
     24 +**Summary:**
     25 +1. Disclaimer
     26 +2. Introduction
     27 +3. Installation
     28 + * Software requirements
     29 + * Layout support
     30 + * Automatic installation
     31 + * Manual installation
     32 + 
     33 +4. First steps with Evil Crow Keylogger
     34 +5. Use the Micro SD Slot
     35 +6. Keystroke Injection
     36 +7. Unbrick Evil Crow Keylogger with Hall Sensor
     37 + 
    24 38  # Disclaimer
    25 39   
    26 40  Evil Crow Keylogger is a physical keylogger device for professionals and cybersecurity enthusiasts.
    skipped 49 lines
    76 90  * Automatic installation with ESP Flasher
    77 91  * Manual installation
    78 92   
     93 +## Layout support
     94 + 
     95 +Evil Crow Keylogger supports several layouts, the en_us layout is by default.
     96 + 
     97 +Set up a new layout:
     98 + 
     99 +* 0.- Open Keyboard/src/Keyboard.cpp with a text editor
     100 + 
     101 +* 1.- Change #define kbd_en_us to another layout. Example: #define kbd_es_es
     102 + 
     103 +You can use:
     104 +- kbd_be_be
     105 +- kbd_cz_cz
     106 +- kbd_da_dk
     107 +- kbd_de_de
     108 +- kbd_en_us
     109 +- kbd_es_es
     110 +- kbd_fi_fi
     111 +- kbd_fr_fr
     112 +- kbd_it_it
     113 +- kbd_pt_pt
     114 +- kbd_tr_tr
     115 + 
     116 +* 2.- Save and close Keyboard.cpp
     117 + 
    79 118  ## Automatic installation
    80 119   
    81 120  1. Install Platformio Core: https://docs.platformio.org/en/latest/core/index.html
    skipped 38 lines
    120 159   
    121 160  **NOTE:** The Keyboard library included in this repository has been modified, EvilCrow Keylogger needs this library to work.
    122 161   
    123  -### Layout support
    124  - 
    125  -Evil Crow Keylogger supports several layouts, the en_us layout is by default.
    126  - 
    127  -Set up a new layout:
    128  - 
    129  -* 0.- Open Keyboard/src/Keyboard.cpp with a text editor
    130  - 
    131  -* 1.- Change #define kbd_en_us to another layout. Example: #define kbd_es_es
    132  - 
    133  -You can use:
    134  -- kbd_be_be
    135  -- kbd_cz_cz
    136  -- kbd_da_dk
    137  -- kbd_de_de
    138  -- kbd_en_us
    139  -- kbd_es_es
    140  -- kbd_fi_fi
    141  -- kbd_fr_fr
    142  -- kbd_it_it
    143  -- kbd_pt_pt
    144  -- kbd_tr_tr
    145  - 
    146  -* 2.- Save and close Keyboard.cpp
    147  - 
    148 162  ### Upload the ESP32 code
    149 163   
    150 164  To upload the ESP32 code into the keylogger, you can do this in different ways: You can use an Arduino, an FTDI or an ESP Flasher from April Brother.
    skipped 55 lines
    206 220   
    207 221  **File:** log.txt
    208 222   
    209  -## Keystroke Injection
     223 +# Keystroke Injection
    210 224   
    211 225  Keystroke injection attacks can me executed by navigating to the Live Payload tab. There you can write and run keystroke injection payloads written in simple script.
    212 226   
    skipped 36 lines
  • ■ ■ ■ ■ ■ ■
    code/ATMEGA32U4/ATMEGA32U4.ino
    skipped 64 lines
    65 65  };
    66 66   
    67 67  void KbdRptParser::OnKeyUp(uint8_t mod, uint8_t key) {
    68  - //Keyboard.rawrelease(key, 0);
    69  - Keyboard.releaseAll();
     68 + Keyboard.rawrelease(key, 0);
    70 69   SetModifiersArd();
    71 70   key_modifier = key|modifiersard,HEX;
    72 71   SDlog = SD.open("log.txt", FILE_WRITE);
    skipped 121 lines
    194 193   cmd = Serial1.readStringUntil('\n');
    195 194   delay(500);
    196 195   ProcessCommand();
     196 + cmd ="";
    197 197   }
    198 198  }
    199 199   
  • ■ ■ ■ ■ ■
    code/ESP32/ESP32.ino
    skipped 27 lines
    28 28   
    29 29  const bool formatOnFail = true;
    30 30   
    31  -void runpayload() {
    32  - File f = SPIFFS.open(autopayload, "r");
    33  - int defaultdelay = DelayLength;
    34  - int settingsdefaultdelay = DelayLength;
    35  - int custom_delay;
    36  - delay(livepayloaddelay);
    37  - while(f.available()) {
    38  - String line = f.readStringUntil('\n');
    39  - line.replace("&lt;", "<");
    40  - 
    41  - String fullkeys = line;
    42  - int str_len = fullkeys.length()+1;
    43  - char keyarray[str_len];
    44  - fullkeys.toCharArray(keyarray, str_len);
    45  - 
    46  - char *i;
    47  - String cmd;
    48  - String cmdinput;
    49  - cmd = String(strtok_r(keyarray," ",&i));
    50  -
    51  - delay(DelayLength);
    52  - DelayLength = defaultdelay;
    53  - }
    54  - f.close();
    55  - DelayLength = settingsdefaultdelay;
    56  -}
    57  - 
    58 31  void setup() {
    59 32   Serial.begin(38400);
    60 33   delay(500);
    skipped 17 lines
    78 51   String livepayload;
    79 52   livepayload += server.arg("livepayload");
    80 53   if (server.hasArg("livepayloadpresent")) {
    81  - //server.send(200, "text/html", "<pre>Running live payload: <br>"+livepayload+"</pre>");
    82 54   char* splitlines;
    83 55   int payloadlen = livepayload.length()+1;
    84 56   char request[payloadlen];
    skipped 18 lines
    103 75   
    104 76   delay(DelayLength);
    105 77   DelayLength = defaultdelay;
     78 + cmd = "";
    106 79   }
    107 80   DelayLength = settingsdefaultdelay;
    108 81   return 0;
    skipped 1 lines
    110 83   else {
    111 84   server.send(200, "text/html", F("Type or Paste a payload and click \"Run Payload\"."));
    112 85   }
    113  - });
    114  - 
    115  - server.on("/dopayload", [](){
    116  - String dopayload;
    117  - dopayload += server.arg(0);
    118  - server.send(200, "text/html", HTML_CSS_STYLING + "<pre><h3>Running payload: "+dopayload+"</h3></pre><br></body></html>");
    119  - File f = SPIFFS.open(dopayload, "r");
    120  - while(f.available()) {
    121  - String line = f.readStringUntil('\n');
    122  - Serial.println(line);
    123  - delay(DelayLength); //delay between lines in payload, I found running it slower works best
    124  - }
    125  - f.close();
    126 86   });
    127 87   
    128 88   server.on("/viewlog", [](){
    skipped 31 lines
  • ■ ■ ■ ■ ■
    code/ESP32/livepayload.h
    skipped 60 lines
    61 61   <ul>
    62 62   <a class="myButton" href="/">Menu</a>
    63 63   <a class="myButton" href="/livepayload">Live Payload</a>
    64  - <a class="myButton" href="/uploadpayload">Upload Payload</a>
    65 64   <a class="myButton" href="/viewlog">View Log</a>
    66 65   <a class="myButton" href="/delete">Delete Log</a>
    67 66   </ul>
    skipped 20 lines
Please wait...
Page is in error, reload to recover