Evil Crow Cable Wind - jak zaprogramować firmware i nie zwariować
Każdy, kto kiedykolwiek trzymał w ręku kabel USB i pomyślał „a gdyby tak ten kabel mógł robić coś więcej niż ładować telefon" - prawdopodobnie trafił w końcu na Evil Crow Cable Wind. To niepozorny kabelek USB, który w środku skrywa mikrokontroler ESP32-S3 z WiFi, pamięcią flash i ambicjami znacznie przekraczającymi jego rozmiar.
Dzisiaj pokażę Wam, jak wgrać na niego najnowszy firmware - od zera, na czysto, na Windowsie. A potem, jak się z nim połączyć i zacząć zabawę.
W sumie to możesz ten poradnik też wrzucić do AI i on poprowadzi Cię za rączkę... :)
Co siedzi w środku
Evil Crow Cable Wind to tak naprawdę pełnoprawny mikrokontroler ESP32-S3-PICO-1 zamknięty w obudowie kabla USB. Konkretnie mamy do dyspozycji:
- 8 MB pamięci Flash (wbudowanej, nie na karcie)
- 2 MB PSRAM
- WiFi i Bluetooth LE
- interfejs USB HID - kabel potrafi udawać klawiaturę
Firmware zapewnia panel webowy, z którego można pisać i uruchamiać payloady, uploadować skrypty, planować autoexec - słowem, wszystko czego potrzebujemy do pracy z BadUSB. Ale żeby to wszystko działało, trzeba najpierw wgrać odpowiedni firmware.

Co będzie potrzebne
Zanim przejdziemy do właściwej zabawę, musimy przygotować stanowisko pracy. Lista zakupów wygląda następująco:
- Arduino CLI - narzędzie konsolowe do kompilacji i wgrywania firmware. Można oczywiście użyć pełnego Arduino IDE z interfejsem graficznym, ale po co klikać, skoro można wpisać jedno polecenie?
- ESP32 Board Manager v3.2.0 - platforma Espressif dla Arduino, zawiera kompilator, narzędzia do flashowania i definicje płytek. Wersja 3.2.0 jest wymagana - nowsze mogą wprowadzić niekompatybilności.
- Repozytorium EvilCrowCable-Wind - tam siedzi firmware i zmodyfikowana biblioteka USB.
- Biblioteka ArduinoJson - firmware jej potrzebuje do obsługi konfiguracji.
- Magnes - tak, fizyczny magnes. Przyłożony do aktywnego końca kabla przełącza go w tryb programowania. Bez niego kabel zachowuje się jak zwykły kabel USB i nie da się go flashować.
Przygotowanie środowiska krok po kroku
Zaczynamy od stworzenia katalogu roboczego i pobrania wszystkiego, co potrzebne.
Krok 1 - Pobierz arduino-cli
Wchodzimy na stronę arduino-cli releases i pobieramy najnowszą wersję ZIP dla Windows 64-bit. Rozpakowujemy do naszego katalogu roboczego.
mkdir EvilCrowCable-Wind-Setup
cd EvilCrowCable-Wind-Setup
curl -L -o arduino-cli.zip https://github.com/arduino/arduino-cli/releases/download/v1.4.1/arduino-cli_1.4.1_Windows_64bit.zip
unzip arduino-cli.zip -d arduino-cli-bin
Krok 2 - Skonfiguruj ESP32 board manager
Dodajemy URL repozytorium Espressif i instalujemy platformę ESP32 w wersji 3.2.0:
arduino-cli-bin/arduino-cli.exe config init --overwrite
arduino-cli-bin/arduino-cli.exe config add board_manager.additional_urls https://espressif.github.io/arduino-esp32/package_esp32_index.json
arduino-cli-bin/arduino-cli.exe core update-index
arduino-cli-bin/arduino-cli.exe core install esp32:[email protected]
To zajmie chwilę - platforma ESP32 waży ponad 1 GB. Dobry moment na kawę.
Krok 3 - Sklonuj repozytorium i biblioteki
git clone https://github.com/joelsernamoreno/EvilCrowCable-Wind.git
git clone https://github.com/bblanchon/ArduinoJson.git
Teraz trzeba skopiować biblioteki tam, gdzie Arduino CLI będzie ich szukał - do folderu Documents\Arduino\libraries:
mkdir -p ~/Documents/Arduino/libraries
unzip EvilCrowCable-Wind/modified-libraries/USB.zip -d ~/Documents/Arduino/libraries/
cp -r ArduinoJson ~/Documents/Arduino/libraries/ArduinoJson
Biblioteka USB w katalogu modified-libraries to zmodyfikowana wersja biblioteki ESP32 USB - nie jest to standardowa biblioteka z managera, więc trzeba ją zainstalować ręcznie. Bez niej firmware się nie skompiluje.
Flashowanie - jedno polecenie
A teraz najlepsza część. Cała kompilacja i wgranie firmware jednym poleceniem w terminalu:
arduino-cli-bin/arduino-cli.exe compile --fqbn "esp32:esp32:esp32s3:CDCOnBoot=default,CPUFreq=80,DFUOnBoot=default,FlashMode=qio,FlashSize=8M,PartitionScheme=default_8MB,UploadSpeed=921600,USBMode=hwcdc" --libraries ~/Documents/Arduino/libraries --upload --port COM3 EvilCrowCable-Wind/firmware
Rozbijmy to na czynniki pierwsze, bo wygląda groźnie:
| Parametr | Wartość | Co to robi |
|---|---|---|
--fqbn |
esp32:esp32:esp32s3:... |
Fully Qualified Board Name - identyfikuje płytkę i jej konfigurację |
CDCOnBoot=default |
Disabled | Wyłącza USB CDC przy starcie |
CPUFreq=80 |
80MHz (WiFi) | Taktowanie procesora - 80 MHz wystarczy i oszczędza energię |
DFUOnBoot=default |
Disabled | Wyłącza tryb DFU przy starcie |
FlashMode=qio |
QIO 80MHz | Tryb komunikacji z pamięcią flash - najszybszy dostępny |
FlashSize=8M |
8MB (64Mb) | Rozmiar pamięci flash w kablu |
PartitionScheme=default_8MB |
3MB APP / 1.5MB SPIFFS | Schemat partycji - 3 MB na aplikację, 1.5 MB na system plików |
UploadSpeed=921600 |
921600 baud | Prędkość wgrywania - im szybciej, tym lepiej |
USBMode=hwcdc |
Hardware CDC and JTAG | Tryb USB - hardware'owy CDC |
--port COM3 |
Port szeregowy | Port, na którym kabel jest widoczny - u Was może być inny |
--libraries |
Ścieżka do bibliotek | Wskazuje na nasze ręcznie zainstalowane biblioteki |
Flaga --upload mówi arduino-cli, żeby po kompilacji od razu wgrał firmware na urządzenie. Bez niej dostaniemy tylko skompilowany plik binarny.
Jak znaleźć port COM
Zanim odpalicie powyższe polecenie, musicie wiedzieć, na którym porcie siedzi kabel. Wystarczy:
arduino-cli-bin/arduino-cli.exe board list
Zobaczycie coś takiego:
Port Protocol Type Board Name FQBN Core
COM3 serial Serial Port (USB) ESP32 Family Device esp32:esp32:esp32_family esp32:esp32
Zapamiętajcie numer portu i wstawcie go w parametr --port.
Tryb programowania - magnes
To jest element, który odróżnia Evil Crow Cable Wind od zwykłej płytki deweloperskiej. Kabel nie ma przycisku BOOT - zamiast niego ma czujnik magnetyczny. Żeby wejść w tryb programowania:
- Weź magnes (taki mały neodymowy wystarczy)
- Przyłóż go do aktywnego końca kabla (tego oznaczonego naklejką)
- Podłącz kabel do komputera
- Teraz kabel jest w trybie programowania i pojawi się jako port COM
Po wgraniu firmware odłóż magnes. Kabel zrestartuje się i uruchomi nowy firmware.

Łączenie się z kablem - panel webowy
Firmware wgrany, kabel działa. Ale jak się z nim skomunikować? Evil Crow Cable Wind łączy się z siecią WiFi jako klient (tryb STA) - to znaczy, że nie tworzy własnej sieci, tylko łączy się z istniejącą.
Domyślna konfiguracja WiFi
W firmware domyślnie ustawione są następujące dane:
-
SSID:
Evil Crow Cable Wind -
Hasło:
123456789
Kabel po uruchomieniu szuka sieci o takiej nazwie i próbuje się z nią połączyć. Jeśli jej nie znajdzie - po prostu nie nawiąże połączenia i panel webowy będzie niedostępny.
Stawiamy hotspot
Najprościej jest postawić hotspot na laptopie lub telefonie z dokładnie takimi parametrami jak wyżej. Na Windowsie można to zrobić przez Ustawienia > Sieć > Mobilny hotspot, ustawiając:
- Nazwa sieci:
Evil Crow Cable Wind - Hasło:
123456789
Po uruchomieniu hotspota podłącz kabel do USB (bez magnesu). Po kilku sekundach kabel powinien się automatycznie połączyć z siecią.
Znajdowanie adresu IP
Teoretycznie kabel powinien być dostępny pod adresem http://cable-wind.local dzięki mDNS. Praktycznie - mDNS potrafi nie działać na Androidzie i bywa kapryśny na Windowsie. Dlatego lepszym rozwiązaniem jest sprawdzenie, jaki adres IP dostał kabel.
Na laptopie z hotspotem wystarczy wejść w listę podłączonych urządzeń lub w terminalu wykonać:
arp -a
Szukamy adresu w podsieci hotspota - zazwyczaj będzie to coś w stylu 192.168.0.x. Wpisujemy ten adres w przeglądarkę i powinniśmy zobaczyć panel Evil Crow Cable Wind.
Panel webowy
Po wejściu na adres IP kabla w przeglądarce mamy do dyspozycji pełen panel zarządzania:
- Home - status urządzenia, informacje o połączeniu
- Payload Editor - edytor payloadów w czasie rzeczywistym
- Upload Payload - wgrywanie gotowych skryptów
- List Payloads - lista zapisanych payloadów
- AutoExec Planning - planowanie automatycznego wykonywania skryptów po podłączeniu
- Config - konfiguracja WiFi, USB (Vendor ID, Product ID, nazwa urządzenia), hostname i layout klawiatury
W sekcji Config można zmienić SSID i hasło WiFi na własne - wtedy kabel będzie się łączył z Waszą siecią domową i nie trzeba za każdym razem stawiać dedykowanego hotspota.
Aktualizacja firmware przez WiFi (OTA)
Jeśli kabel ma już wgrany firmware i jest podłączony do sieci WiFi, kolejne aktualizacje można wgrywać bezprzewodowo - bez magnesu i bez podłączania do komputera.
W Arduino CLI eksportujemy skompilowany plik binarny:
arduino-cli-bin/arduino-cli.exe compile --fqbn "esp32:esp32:esp32s3:CDCOnBoot=default,CPUFreq=80,DFUOnBoot=default,FlashMode=qio,FlashSize=8M,PartitionScheme=default_8MB,UploadSpeed=921600,USBMode=hwcdc" --libraries ~/Documents/Arduino/libraries --output-dir ./build EvilCrowCable-Wind/firmware
A następnie wysyłamy go do kabla jednym poleceniem curl:
curl -F "image=@./build/firmware.ino.bin" http://192.168.137.22/update
Oczywiście adres IP trzeba podmienić na aktualny adres Waszego kabla. Po wgraniu kabel automatycznie się zrestartuje.
Podsumowanie
Cały proces od zera do działającego firmware wygląda tak:
- Pobierz arduino-cli, sklonuj repozytorium i biblioteki
- Zainstaluj ESP32 board manager v3.2.0
- Przyłóż magnes, podłącz kabel, sprawdź port COM
- Odpal jedno polecenie
compile --upload - Postaw hotspot, znajdź IP, otwórz panel w przeglądarce
Całość - od pustego dysku do działającego panelu webowego - zajmuje jakieś 15 minut, z czego większość to czekanie na pobranie platformy ESP32. Sam flash trwa niecałe 10 sekund.
Evil Crow Cable Wind to ciekawe narzędzie do testów bezpieczeństwa i nauki o atakach BadUSB. Jak każde takie narzędzie - używajcie go odpowiedzialnie i wyłącznie na urządzeniach, do których macie autoryzowany dostęp. Etyczny hacking zaczyna się od zgody właściciela.