Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Pełna analiza U-Boot z mtd11.bin
- ## 📋 Podsumowanie
- **Partycja**: mtd11.bin
- **Typ**: ELF 32-bit ARM shared object
- **Rozmiar**: 1.3 MB
- **Wersja U-Boot**: uboot2.0 version:25.03.19 (najnowsza) / 24.03.17
- **Data kompilacji**: 2025-03-19 10:40:04
- **Platform**: Qualcomm IPQ5018/8074/8072/8076
- ---
- ## ✅ POTWIERDZONE MOŻLIWOŚCI U-BOOT
- ### 🔌 **USB - PEŁNE WSPARCIE!**
- #### Dostępne komendy USB:
- ```bash
- usb start # Inicjalizacja USB
- usb stop # Zatrzymanie USB
- usb tree # Pokaż drzewo urządzeń USB
- usb enumeration # Enumeracja urządzeń
- ```
- #### Obsługa USB Storage:
- ```bash
- fatload usb <dev>:<part> <addr> <filename> # Ładowanie pliku z USB
- fatwrite usb <dev>:<part> <addr> <filename> <size> # Zapis pliku na USB
- ```
- #### Funkcje USB w systemie:
- - `xhci_usb_probe` - Wykrywanie USB 3.0 (xHCI)
- - `ipq_reset_usb_phy` - Reset kontrolera USB PHY
- - `ipq_fdt_fixup_usb_device_mode` - Konfiguracja trybu USB (host/device)
- - `dump_to_usb` - Zrzut crashdump na USB
- - `usb_mode` - Przełączanie trybu USB
- - `usb_gpio` / `usb_pwr_gpio` - Sterowanie GPIO dla USB
- #### Obsługiwane systemy plików USB:
- ✅ **FAT16/FAT32** - Pełna obsługa (read/write)
- #### USB Device Mode:
- - Obsługa trybu "peripheral" (router jako urządzenie USB)
- - Ograniczenie prędkości do "high-speed" (USB 2.0)
- ---
- ### 🌐 **HTTP Server - Interfejs WWW Recovery!**
- #### Jak uruchomić:
- ```bash
- # W konsoli U-Boot:
- IPQ5018# httpd 192.168.1.254
- # Lub domyślnie:
- IPQ5018# httpd
- ```
- #### Dostępne strony WWW:
- 1. **Firmware Update** - `/firmware`
- - Upload i aktualizacja firmware przez przeglądarkę
- - Automatyczny restart po aktualizacji
- 2. **U-Boot Update** - `/uboot`
- - ⚠️ NIEBEZPIECZNE - aktualizacja bootloadera
- - Może uszkodzić urządzenie przy błędzie
- 3. **ART Update** - `/art`
- - Aktualizacja Atheros Radio Test (kalibracja WiFi)
- 4. **MIBIB Update** - `/mibib`
- - Multi-Image Boot Information Block
- - Tabela partycji
- #### Konfiguracja sieci dla HTTP:
- ```bash
- setenv ipaddr 192.168.1.1 # IP routera
- setenv serverip 192.168.1.2 # IP komputera
- setenv netmask 255.255.255.0
- httpd
- ```
- **Jak użyć:**
- 1. Podłącz kabel Ethernet PC <-> Router
- 2. Ustaw IP PC na 192.168.1.2
- 3. W U-Boot: `httpd`
- 4. Otwórz przeglądarkę: `http://192.168.1.1`
- 5. Wybierz firmware i wgraj!
- ---
- ### 📡 **TFTP - Pełna obsługa**
- #### Dostępne komendy:
- ```bash
- tftpboot <addr> <filename> # Pobierz plik z serwera TFTP
- tftpput <addr> <size> <path/filename> # Wyślij plik na serwer TFTP
- ```
- #### Przykład recovery przez TFTP:
- ```bash
- setenv serverip 192.168.1.100
- setenv ipaddr 192.168.1.1
- tftpboot 0x44000000 openwrt-firmware.bin
- # Firmware załadowany do RAM
- # Nagraj do NAND:
- nand device 0
- nand erase 0x0 0x4000000
- nand write 0x44000000 0x0 ${filesize}
- reset
- ```
- ---
- ### 💾 **NAND Flash - Pełna obsługa**
- #### Komendy NAND:
- ```bash
- nand device <num> # Wybór urządzenia NAND
- nand read <addr> <offset> <size> # Czytanie z NAND
- nand write <addr> <offset> <size> # Zapis do NAND
- nand erase <offset> <size> # Kasowanie NAND
- ```
- #### Układ partycji NAND:
- ```bash
- # Automatycznie ustawiane przez bootipq:
- mtdparts=nand0:
- - rootfs (główny system)
- - rootfs_1 (backup system - dual boot)
- ```
- ---
- ### 💿 **MMC/eMMC - Pełna obsługa**
- #### Komendy MMC:
- ```bash
- mmc read <addr> <blk> <cnt> # Czytanie bloków
- mmc write <addr> <blk> <cnt> # Zapis bloków
- mmc erase <blk> <cnt> # Kasowanie bloków
- ```
- ---
- ### 🚀 **Boot Commands**
- #### Główna komenda boot:
- ```bash
- bootipq
- ```
- #### Sekwencja bootowania:
- 1. Wykrywa typ flash (NAND/MMC)
- 2. Ustawia `mtdparts` i `mtdids`
- 3. Montuje UBI partition "fs"
- 4. Czyta kernel: `ubi read 0x<addr> kernel`
- 5. Bootuje kernel: `bootm` lub `bootz`
- #### Zmienne środowiskowe boot:
- ```bash
- bootargs=console=ttyMSM0,115200n8 # Argumenty kernela
- bootcmd=bootipq # Komenda boot
- bootdelay=5 # Opóźnienie (sekundy)
- baudrate=115200 # UART baud rate
- # Sieć:
- ipaddr=192.168.1.1
- serverip=192.168.1.2
- netmask=255.255.255.0
- # Partycje:
- rootfsname=rootfs # Aktywna partycja
- rootfsname=rootfs_1 # Backup (dual boot)
- ```
- ---
- ## 🎛️ Dodatkowe funkcje
- ### Device Tree
- - `dtb_combined.bin` - skompresowany gzip
- - Timestamp: 2025-03-19 10:40:04
- - Rozmiar: 5993 bytes
- - Lokalizacja w U-Boot: offset 0x75790
- ### Crashdump do USB
- ```bash
- dump_to_usb
- ```
- Automatycznie zbiera crashdump i zapisuje na USB storage.
- ### GPT Support
- - Obsługa GUID Partition Table
- - `root=PARTUUID=<uuid>`
- ### Dual Boot System
- Router obsługuje **dwa niezależne systemy**:
- - `rootfs` - główny
- - `rootfs_1` - backup
- Przełączanie:
- ```bash
- setenv rootfsname rootfs_1
- saveenv
- reset
- ```
- ---
- ## 📊 Mapa partycji (typowa dla IPQ5018)
- | MTD | Nazwa | Rozmiar | Opis |
- |-----|-------|---------|------|
- | mtd0 | SBL1 | 512 KB | Primary Boot Loader |
- | mtd1 | MIBIB | 512 KB | Partition Table |
- | mtd2 | BOOTCONFIG | 256 KB | Boot Configuration |
- | mtd3 | BOOTCONFIG1 | 256 KB | Backup Boot Config |
- | mtd4 | QSEE | 1 MB | TrustZone (ELF 64-bit) |
- | mtd5 | QSEE_1 | 1 MB | TrustZone backup |
- | mtd6 | DEVCFG | 256 KB | Device Config (ELF 64-bit) |
- | mtd7 | DEVCFG_1 | 256 KB | Device Config backup |
- | mtd8 | RPM | 256 KB | Resource Power Manager |
- | mtd9 | RPM_1 | 256 KB | RPM backup |
- | mtd10 | CDT | 512 KB | Config Data Table |
- | **mtd11** | **APPSBL** | **1.3 MB** | **U-Boot (ELF 32-bit)** ⭐ |
- | mtd12 | APPSBLENV | 1.3 MB | U-Boot Environment (pusty) |
- | mtd13 | ??? | 1 MB | Nieznane (pusty) |
- | mtd14 | ??? | 1 MB | Nieznane (pusty) |
- | mtd15 | ART | 512 KB | Radio calibration |
- | mtd16 | rootfs | 58 MB | System główny (UBI) |
- | mtd17 | rootfs_1 | 58 MB | System backup (pusty) |
- ---
- ## 🔧 Dostępne komendy U-Boot (wykryte)
- ### Podstawowe:
- ```
- help - pomoc
- version - wersja U-Boot
- printenv - zmienne środowiskowe
- setenv - ustaw zmienną
- saveenv - zapisz zmienne do flash
- reset - restart
- ```
- ### Boot:
- ```
- boot - boot system
- bootm - boot z obrazu w pamięci
- bootz - boot zImage z pamięci
- bootipq - boot IPQ system
- bootelf - boot ELF
- bootvx - boot VxWorks
- ```
- ### Pamięć:
- ```
- md - memory display
- mw - memory write
- cp - copy memory
- ```
- ### Flash NAND:
- ```
- nand device - wybór urządzenia
- nand read - czytaj
- nand write - pisz
- nand erase - kasuj
- ```
- ### MMC/eMMC:
- ```
- mmc read - czytaj
- mmc write - pisz
- mmc erase - kasuj
- ```
- ### USB:
- ```
- usb start - inicjalizacja
- usb stop - zatrzymaj
- usb tree - pokaż drzewo
- fatload usb - ładuj plik
- fatwrite usb - zapisz plik
- ```
- ### Sieć:
- ```
- tftp - klient TFTP
- tftpboot - pobierz przez TFTP
- tftpput - wyślij przez TFTP
- httpd - uruchom serwer HTTP
- ```
- ### UBI:
- ```
- ubi part - montuj partycję UBI
- ubi read - czytaj z UBI volume
- ```
- ---
- ## 🎯 Praktyczne scenariusze użycia
- ### Scenariusz 1: Recovery firmware przez HTTP (NAJŁATWIEJSZY!)
- ```bash
- # 1. Podłącz UART i przerwij bootowanie
- # 2. W U-Boot:
- IPQ5018# setenv ipaddr 192.168.1.1
- IPQ5018# saveenv
- IPQ5018# httpd
- # 3. Na PC ustaw IP: 192.168.1.2
- # 4. Otwórz przeglądarkę: http://192.168.1.1
- # 5. Wybierz "Firmware Update"
- # 6. Upload firmware.bin
- # 7. Czekaj na automatyczny restart
- ```
- ### Scenariusz 2: Recovery przez USB
- ```bash
- # 1. Przygotuj pendrive FAT32 z firmware.bin
- # 2. Podłącz do routera i włącz
- # 3. Przerwij bootowanie
- # 4. W U-Boot:
- IPQ5018# usb start
- scanning bus 0 for devices... 2 USB Device(s) found
- IPQ5018# fatload usb 0:1 0x44000000 firmware.bin
- reading firmware.bin
- 45678912 bytes read in 5432 ms
- IPQ5018# nand device 0
- IPQ5018# nand erase 0x0 0x4000000
- IPQ5018# nand write 0x44000000 0x0 ${filesize}
- IPQ5018# reset
- ```
- ### Scenariusz 3: Recovery przez TFTP
- ```bash
- # 1. Uruchom serwer TFTP na PC (192.168.1.100)
- # 2. Skopiuj firmware.bin do /srv/tftp/
- # 3. Podłącz kabel Ethernet
- # 4. W U-Boot:
- IPQ5018# setenv serverip 192.168.1.100
- IPQ5018# setenv ipaddr 192.168.1.1
- IPQ5018# tftpboot 0x44000000 firmware.bin
- IPQ5018# nand erase 0x0 0x4000000
- IPQ5018# nand write 0x44000000 0x0 ${filesize}
- IPQ5018# reset
- ```
- ### Scenariusz 4: Dual Boot - przełączenie na backup system
- ```bash
- IPQ5018# setenv rootfsname rootfs_1
- IPQ5018# saveenv
- IPQ5018# reset
- ```
- ### Scenariusz 5: Crashdump na USB
- ```bash
- # Jeśli system crashuje:
- IPQ5018# dump_to_usb
- # Crashdump zostanie zapisany na USB storage
- ```
- ---
- ## ⚠️ NIEBEZPIECZNE operacje
- ### ❌ NIE RÓB tego bez backupu!
- ```bash
- # Aktualizacja U-Boot przez HTTP:
- # - Może zablokować router na stałe (brick)
- # - Tylko jeśli masz pewność co robisz!
- # Kasowanie całego NAND:
- nand erase 0x0 0x8000000 # ❌ NIEBEZPIECZNE!
- # Kasowanie MIBIB (partition table):
- # ❌ Router się nie uruchomi!
- # Kasowanie ART (radio calibration):
- # ❌ WiFi przestanie działać!
- ```
- ---
- ## 🔍 Analiza techniczna
- ### Architektura:
- - **CPU**: ARM 32-bit (EABI5)
- - **Format**: ELF shared object
- - **Endianness**: Little endian
- - **Linkowanie**: Statically linked
- ### Komponenty:
- - CRC32 polynomial tables (offset 0x5A104, 0x5A504)
- - Device Tree Blob compressed (gzip, offset 0x75790)
- - HTTP server z embedded HTML
- - USB stack (xHCI driver)
- - NAND/MMC drivers
- - Network stack (TFTP)
- ### Obsługiwane SoC:
- - IPQ5018 ⭐ (główny)
- - IPQ8074
- - IPQ8072
- - IPQ8076
- ---
- ## 📝 Zmienne środowiskowe (domyślne)
- ```bash
- # Boot:
- bootargs=console=ttyMSM0,115200n8
- bootcmd=bootipq
- bootdelay=5
- baudrate=115200
- # Sieć:
- ipaddr=192.168.1.1
- serverip=192.168.1.2
- netmask=255.255.255.0
- # Partycje:
- rootfsname=rootfs
- mtdparts=nand0:...
- mtdids=nand0=nand0
- # USB:
- usb_mode=host
- usbethaddr=<MAC>
- ```
- ---
- ## 🎓 Jak dostać się do U-Boot?
- ### Wymagania sprzętowe:
- 1. **Adapter USB-UART** (CP2102, FTDI, CH340)
- 2. **3 przewody**: GND, TX, RX
- 3. **Komputer** z terminalem
- ### Procedura:
- ```bash
- # 1. Podłącz UART:
- # Router GND -> Adapter GND
- # Router TX -> Adapter RX
- # Router RX -> Adapter TX
- # 2. Terminal (Linux/Mac):
- screen /dev/ttyUSB0 115200
- # Lub:
- minicom -D /dev/ttyUSB0 -b 115200
- # Windows: Putty/TeraTerm na COM port, 115200 baud
- # 3. Włącz router i NATYCHMIAST wciskaj:
- # - ESC lub
- # - Spacja lub
- # - 0
- # 4. Powinieneś zobaczyć:
- IPQ5018#
- ```
- ---
- ## 📚 Podsumowanie możliwości
- ### ✅ TAK - U-Boot OBSŁUGUJE:
- | Funkcja | Status | Notatki |
- |---------|--------|---------|
- | **USB Storage** | ✅ Pełne | FAT16/FAT32 read/write |
- | **USB Boot** | ✅ Pełne | `fatload usb` działa |
- | **TFTP** | ✅ Pełne | Download i upload |
- | **HTTP Server** | ✅ Pełne | Web recovery interface |
- | **NAND Flash** | ✅ Pełne | Read/write/erase |
- | **eMMC** | ✅ Pełne | Read/write/erase |
- | **Dual Boot** | ✅ Pełne | rootfs / rootfs_1 |
- | **UBI** | ✅ Pełne | UBI volumes |
- | **Device Tree** | ✅ Embedded | dtb_combined.bin |
- | **Crashdump USB** | ✅ Pełne | Automatyczny zrzut |
- ### ❌ NIE - U-Boot NIE OBSŁUGUJE:
- | Funkcja | Status | Alternatywa |
- |---------|--------|-------------|
- | ext2/ext3/ext4 | ❌ Nie | Użyj FAT32 |
- | NTFS | ❌ Nie | Użyj FAT32 |
- | USB 3.0 SuperSpeed | ⚠️ Ograniczone | Działa w trybie USB 2.0 |
- | WiFi | ❌ Nie | Tylko Ethernet/USB |
- ---
- ## 🔐 Bezpieczeństwo
- ### Secure Boot:
- - U-Boot prawdopodobnie nie jest podpisany
- - Brak weryfikacji firmware (można wgrać dowolny)
- - ⚠️ Potencjalne ryzyko bezpieczeństwa
- ### Zalecenia:
- 1. **Backup wszystkich partycji** przed modyfikacją
- 2. **Nie aktualizuj U-Boot** bez dobrego powodu
- 3. **Nie kasuj MIBIB** (partition table)
- 4. **Zachowaj ART** (kalibracja WiFi)
- 5. **Testuj na kopii** jeśli to możliwe
- ---
- ## 📞 Kontakt / Support
- Jeśli coś pójdzie nie tak:
- 1. Sprawdź logi przez UART
- 2. Użyj trybu failsafe
- 3. Recovery przez TFTP/HTTP/USB
- 4. Ostateczność: JTAG (wymaga sprzętu)
- ---
- **Data analizy**: 2025-01-20
- **Źródło**: mtd11.bin (1.3 MB)
- **Format**: ELF 32-bit ARM
- **U-Boot Version**: 2.0 (2025-03-19)
- **Platform**: Qualcomm IPQ5018
Advertisement