diff --git a/todo/hardware-hacking/uart.md b/todo/hardware-hacking/uart.md index a81665333..68b7fbec6 100644 --- a/todo/hardware-hacking/uart.md +++ b/todo/hardware-hacking/uart.md @@ -4,57 +4,79 @@ Inne sposoby wsparcia HackTricks: -* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)! +* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)! * Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com) * Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family) * **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. +* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) na GitHubie. # Podstawowe informacje -UART to protokół szeregowy, co oznacza, że przesyła dane między komponentami po jednym bicie na raz. W przeciwieństwie do tego, równoległe protokoły komunikacyjne przesyłają dane jednocześnie przez wiele kanałów. Powszechnie stosowane protokoły szeregowe to RS-232, I2C, SPI, CAN, Ethernet, HDMI, PCI Express i USB. +UART to protokół szeregowy, co oznacza, że przesyła dane między komponentami po jednym bicie na raz. W przeciwieństwie do tego, protokoły komunikacji równoległej przesyłają dane jednocześnie przez wiele kanałów. Powszechne protokoły szeregowe obejmują RS-232, I2C, SPI, CAN, Ethernet, HDMI, PCI Express i USB. -Zazwyczaj linia jest utrzymywana na wysokim poziomie (wartość logiczna 1) podczas gdy UART jest w stanie bezczynności. Następnie, aby sygnalizować rozpoczęcie transferu danych, nadajnik wysyła bit startu do odbiornika, podczas którego sygnał jest utrzymywany na niskim poziomie (wartość logiczna 0). Następnie nadajnik wysyła pięć do ośmiu bitów danych zawierających rzeczywistą wiadomość, po których następuje opcjonalny bit parzystości i jeden lub dwa bity stopu (o wartości logicznej 1), w zależności od konfiguracji. Bit parzystości, używany do sprawdzania błędów, rzadko jest stosowany w praktyce. Bity stopu (lub bity) oznaczają koniec transmisji. +Zazwyczaj linia jest utrzymywana na wysokim poziomie (na wartości logicznej 1), gdy UART jest w stanie bezczynności. Następnie, aby sygnalizować rozpoczęcie transferu danych, nadajnik wysyła bit startowy do odbiornika, podczas którego sygnał jest utrzymywany na niskim poziomie (na wartości logicznej 0). Następnie nadajnik wysyła pięć do ośmiu bitów danych zawierających rzeczywistą wiadomość, a następnie opcjonalny bit parzystości i jeden lub dwa bity stopu (o wartości logicznej 1), w zależności od konfiguracji. Bit parzystości, używany do sprawdzania błędów, rzadko jest widoczny w praktyce. Bit(y) stopu oznaczają koniec transmisji. -Najczęściej stosowaną konfigurację nazywamy 8N1: osiem bitów danych, brak bitu parzystości i jeden bit stopu. Na przykład, jeśli chcielibyśmy wysłać znak C, czyli 0x43 w kodzie ASCII, w konfiguracji UART 8N1, wysłalibyśmy następujące bity: 0 (bit startu); 0, 1, 0, 0, 0, 0, 1, 1 (wartość 0x43 w kodzie binarnym) i 0 (bit stopu). +Najczęściej stosowaną konfigurację nazywamy 8N1: osiem bitów danych, brak bitu parzystości i jeden bit stopu. Na przykład, jeśli chcielibyśmy wysłać znak C, czyli 0x43 w ASCII, w konfiguracji UART 8N1, wysłalibyśmy następujące bity: 0 (bit startowy); 0, 1, 0, 0, 0, 0, 1, 1 (wartość 0x43 w systemie binarnym) i 0 (bit stopu). ![](<../../.gitbook/assets/image (648) (1) (1) (1) (1).png>) Narzędzia sprzętowe do komunikacji z UART: -* Adapter USB-serial +* Adapter USB-do-szeregowego * Adaptery z układami CP2102 lub PL2303 -* Uniwersalne narzędzie, takie jak: Bus Pirate, Adafruit FT232H, Shikra lub Attify Badge +* Narzędzie wielofunkcyjne, takie jak: Bus Pirate, Adafruit FT232H, Shikra lub Attify Badge ## Identyfikacja portów UART -UART ma 4 porty: **TX** (Transmit), **RX** (Receive), **Vcc** (Voltage) i **GND** (Ground). Możesz być w stanie znaleźć 4 porty z literami **`TX`** i **`RX`** **napisanymi** na PCB. Jeśli jednak nie ma oznaczenia, możesz spróbować znaleźć je samodzielnie za pomocą **multimetru** lub **analizatora logicznego**. +UART ma 4 porty: **TX**(Transmit), **RX**(Receive), **Vcc**(Voltage) i **GND**(Ground). Możesz znaleźć 4 porty z literami **`TX`** i **`RX`** **napisanymi** na PCB. Jeśli nie ma wskazówek, możesz spróbować znaleźć je samodzielnie, używając **multimetru** lub **analizatora logicznego**. -Z użyciem **multimetru** i wyłączonym urządzeniem: +Z **multimetrem** i wyłączonym urządzeniem: -* Aby zidentyfikować pin **GND**, użyj trybu **Testu ciągłości**, umieść tylną sondę w ziemi i przetestuj czerwoną sondę, aż usłyszysz dźwięk z multimetru. Na PCB można znaleźć kilka pinów GND, więc możesz znaleźć lub nie ten należący do UART. -* Aby zidentyfikować port **VCC**, ustaw tryb **napięcia stałego** i ustaw go na 20 V napięcia. Czarna sonda na ziemi, a czerwona sonda na pinie. Włącz urządzenie. Jeśli multimetr mierzy stałe napięcie 3,3 V lub 5 V, znalazłeś pin Vcc. Jeśli otrzymasz inne napięcia, spróbuj z innymi portami. -* Aby zidentyfikować port **TX**, ustaw tryb **napięcia stałego** do 20 V napięcia, czarna sonda na ziemi, a czerwona sonda na pinie i włącz urządzenie. Jeśli napięcie fluktuuje przez kilka sekund, a następnie ustabilizuje się na wartości Vcc, najprawdopodobniej znalazłeś port TX. Dzieje się tak, ponieważ podczas uruchamiania wysyła pewne dane debugowania. -* Port **RX** będzie najbliższy do pozostałych 3, ma najmniejsze fluktuacje napięcia i najniższą wartość spośród wszystkich pinów UART. +* Aby zidentyfikować pin **GND**, użyj trybu **Testu ciągłości**, umieść tylną sondę w uziemieniu i przetestuj czerwoną sondą, aż usłyszysz dźwięk z multimetru. Na PCB można znaleźć kilka pinów GND, więc możesz znaleźć lub nie ten należący do UART. +* Aby zidentyfikować port **VCC**, ustaw tryb **napięcia stałego** i ustaw go na 20 V napięcia. Czarna sonda na uziemieniu, a czerwona sonda na pinie. Włącz urządzenie. Jeśli miernik mierzy stałe napięcie 3,3 V lub 5 V, znalazłeś pin Vcc. Jeśli otrzymasz inne napięcia, spróbuj z innymi portami. +* Aby zidentyfikować port **TX**, tryb **napięcia stałego** do 20 V napięcia, czarna sonda na uziemieniu, a czerwona sonda na pinie, i włącz urządzenie. Jeśli napięcie zmienia się przez kilka sekund, a następnie ustabilizuje się na wartości Vcc, najprawdopodobniej znalazłeś port TX. Dzieje się tak, ponieważ podczas włączania wysyła pewne dane diagnostyczne. +* Port **RX** będzie najbliższy pozostałym 3, ma najmniejsze wahania napięcia i najniższą ogólną wartość ze wszystkich pinów UART. -Możesz pomylić porty TX i RX i nic się nie stanie, ale jeśli pomylić porty GND i VCC, możesz uszkodzić obwód. +Możesz pomylić porty TX i RX i nic się nie stanie, ale jeśli pomyliłbyś GND z portem VCC, możesz uszkodzić obwód. -Z użyciem analizatora logicznego: +W niektórych urządzeniach docelowych port UART jest wyłączony przez producenta poprzez wyłączenie RX lub TX lub nawet obu. W takim przypadku pomocne może być śledzenie połączeń na płycie drukowanej i znalezienie punktu rozgałęzienia. Silnym wskazaniem potwierdzającym brak wykrycia UART i przerwania obwodu jest sprawdzenie gwarancji urządzenia. Jeśli urządzenie zostało dostarczone z jakąś gwarancją, producent pozostawia pewne interfejsy diagnostyczne (w tym przypadku UART) i z tego powodu musiał odłączyć UART i ponownie go podłączyć podczas debugowania. Te piny rozgałęzienia można połączyć poprzez lutowanie lub przewody mostkujące. -## Identyfikacja prędkości transmisji UART +## Identyfikacja szybkości transmisji UART -Najłatwiejszym sposobem na zidentyfikowanie poprawnej prędkości transmisji jest spojrzenie na wyjście pinu **TX i próba odczytania danych**. Jeśli otrzymywane dane nie są czytelne, przejdź do następnej możliwej prędkości transmisji, aż dane staną się czytelne. Możesz do tego użyć adaptera USB-serial lub uniwersalnego urządzenia, takiego jak Bus Pirate, w połączeniu z pomocnym skryptem, na przykład [baudrate.py](https://github.com/devttys0/baudrate/). Najczęściej stosowane prędkości transmisji to 9600, 38400, 19200, 57600 i 115200. +Najprostszym sposobem zidentyfikowania poprawnej szybkości transmisji jest spojrzenie na **wyjście pinu TX i próba odczytania danych**. Jeśli otrzymywane dane nie są czytelne, przełącz się na następną możliwą szybkość transmisji, aż dane staną się czytelne. Możesz użyć adaptera USB-do-szeregowego lub urządzenia wielofunkcyjnego, takiego jak Bus Pirate, w połączeniu z pomocniczym skryptem, takim jak [baudrate.py](https://github.com/devttys0/baudrate/). Najczęstsze szybkości transmisji to 9600, 38400, 19200, 57600 i 115200. {% hint style="danger" %} Ważne jest zauważenie, że w tym protokole musisz połączyć TX jednego urządzenia z RX drugiego! {% endhint %} +# Adapter UART CP210X do TTY + +Układ Chip CP210X jest używany w wielu płytach prototypowych, takich jak NodeMCU (z esp8266) do komunikacji szeregowej. Te adaptery są stosunkowo niedrogie i mogą być używane do połączenia z interfejsem UART celu. Urządzenie ma 5 pinów: 5V, GND, RXD, TXD, 3.3V. Upewnij się, że podłączasz napięcie zgodnie z obsługiwanym przez cel, aby uniknąć uszkodzeń. Na koniec połącz pin RXD adaptera z pinem TXD celu i pin TXD adaptera z pinem RXD celu. + +Jeśli adapter nie jest wykrywany, upewnij się, że sterowniki CP210X są zainstalowane w systemie hosta. Po wykryciu i podłączeniu adaptera można użyć narzędzi takich jak picocom, minicom lub screen. + +Aby wyświetlić podłączone urządzenia w systemach Linux/MacOS: +``` +ls /dev/ +``` +Do podstawowej interakcji z interfejsem UART użyj następującej komendy: +``` +picocom /dev/ --baud +``` +Dla minicom użyj poniższej komendy, aby go skonfigurować: +``` +minicom -s +``` +Skonfiguruj ustawienia takie jak szybkość transmisji (baudrate) i nazwę urządzenia w opcji `Konfiguracja portu szeregowego`. + +Po skonfigurowaniu, użyj polecenia `minicom`, aby rozpocząć korzystanie z konsoli UART. + # Bus Pirate -W tym scenariuszu będziemy podsłuchiwać komunikację UART Arduino, który wysyła wszystkie wydruki programu do Monitora szeregowego. +W tym scenariuszu będziemy podsłuchiwać komunikację UART Arduino, która wysyła wszystkie wydruki programu do monitora szeregowego. ```bash # Check the modes UART>m @@ -128,14 +150,14 @@ waiting a few secs to repeat.... ```
-Dowiedz się, jak hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)! +Nauka hakowania AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)! Inne sposoby wsparcia HackTricks: -* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)! -* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com) +* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)! +* Kup [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com) * Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family) * **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytoriów github. +* **Podziel się swoimi sztuczkami hakowania, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) na GitHubie.