Guest User

Untitled

a guest
Nov 19th, 2025
72
0
Never
1
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Smarty 12.48 KB | None | 0 0
  1. # Pełna analiza U-Boot z mtd11.bin
  2.  
  3. ## 📋 Podsumowanie
  4.  
  5. **Partycja**: mtd11.bin
  6. **Typ**: ELF 32-bit ARM shared object
  7. **Rozmiar**: 1.3 MB
  8. **Wersja U-Boot**: uboot2.0 version:25.03.19 (najnowsza) / 24.03.17
  9. **Data kompilacji**: 2025-03-19 10:40:04
  10. **Platform**: Qualcomm IPQ5018/8074/8072/8076
  11.  
  12. ---
  13.  
  14. ## ✅ POTWIERDZONE MOŻLIWOŚCI U-BOOT
  15.  
  16. ### 🔌 **USB - PEŁNE WSPARCIE!**
  17.  
  18. #### Dostępne komendy USB:
  19. ```bash
  20. usb start          # Inicjalizacja USB
  21. usb stop           # Zatrzymanie USB
  22. usb tree           # Pokaż drzewo urządzeń USB
  23. usb enumeration    # Enumeracja urządzeń
  24. ```
  25.  
  26. #### Obsługa USB Storage:
  27. ```bash
  28. fatload usb <dev>:<part> <addr> <filename>   # Ładowanie pliku z USB
  29. fatwrite usb <dev>:<part> <addr> <filename> <size>  # Zapis pliku na USB
  30. ```
  31.  
  32. #### Funkcje USB w systemie:
  33. - `xhci_usb_probe` - Wykrywanie USB 3.0 (xHCI)
  34. - `ipq_reset_usb_phy` - Reset kontrolera USB PHY
  35. - `ipq_fdt_fixup_usb_device_mode` - Konfiguracja trybu USB (host/device)
  36. - `dump_to_usb` - Zrzut crashdump na USB
  37. - `usb_mode` - Przełączanie trybu USB
  38. - `usb_gpio` / `usb_pwr_gpio` - Sterowanie GPIO dla USB
  39.  
  40. #### Obsługiwane systemy plików USB:
  41. ✅ **FAT16/FAT32** - Pełna obsługa (read/write)
  42.  
  43. #### USB Device Mode:
  44. - Obsługa trybu "peripheral" (router jako urządzenie USB)
  45. - Ograniczenie prędkości do "high-speed" (USB 2.0)
  46.  
  47. ---
  48.  
  49. ### 🌐 **HTTP Server - Interfejs WWW Recovery!**
  50.  
  51. #### Jak uruchomić:
  52. ```bash
  53. # W konsoli U-Boot:
  54. IPQ5018# httpd 192.168.1.254
  55.  
  56. # Lub domyślnie:
  57. IPQ5018# httpd
  58. ```
  59.  
  60. #### Dostępne strony WWW:
  61.  
  62. 1. **Firmware Update** - `/firmware`
  63.    - Upload i aktualizacja firmware przez przeglądarkę
  64.    - Automatyczny restart po aktualizacji
  65.  
  66. 2. **U-Boot Update** - `/uboot`
  67.    - ⚠️ NIEBEZPIECZNE - aktualizacja bootloadera
  68.    - Może uszkodzić urządzenie przy błędzie
  69.  
  70. 3. **ART Update** - `/art`
  71.    - Aktualizacja Atheros Radio Test (kalibracja WiFi)
  72.  
  73. 4. **MIBIB Update** - `/mibib`
  74.    - Multi-Image Boot Information Block
  75.    - Tabela partycji
  76.  
  77. #### Konfiguracja sieci dla HTTP:
  78. ```bash
  79. setenv ipaddr 192.168.1.1        # IP routera
  80. setenv serverip 192.168.1.2      # IP komputera
  81. setenv netmask 255.255.255.0
  82. httpd
  83. ```
  84.  
  85. **Jak użyć:**
  86. 1. Podłącz kabel Ethernet PC <-> Router
  87. 2. Ustaw IP PC na 192.168.1.2
  88. 3. W U-Boot: `httpd`
  89. 4. Otwórz przeglądarkę: `http://192.168.1.1`
  90. 5. Wybierz firmware i wgraj!
  91.  
  92. ---
  93.  
  94. ### 📡 **TFTP - Pełna obsługa**
  95.  
  96. #### Dostępne komendy:
  97. ```bash
  98. tftpboot <addr> <filename>           # Pobierz plik z serwera TFTP
  99. tftpput <addr> <size> <path/filename> # Wyślij plik na serwer TFTP
  100. ```
  101.  
  102. #### Przykład recovery przez TFTP:
  103. ```bash
  104. setenv serverip 192.168.1.100
  105. setenv ipaddr 192.168.1.1
  106. tftpboot 0x44000000 openwrt-firmware.bin
  107. # Firmware załadowany do RAM
  108.  
  109. # Nagraj do NAND:
  110. nand device 0
  111. nand erase 0x0 0x4000000
  112. nand write 0x44000000 0x0 ${filesize}
  113. reset
  114. ```
  115.  
  116. ---
  117.  
  118. ### 💾 **NAND Flash - Pełna obsługa**
  119.  
  120. #### Komendy NAND:
  121. ```bash
  122. nand device <num>                    # Wybór urządzenia NAND
  123. nand read <addr> <offset> <size>     # Czytanie z NAND
  124. nand write <addr> <offset> <size>    # Zapis do NAND
  125. nand erase <offset> <size>           # Kasowanie NAND
  126. ```
  127.  
  128. #### Układ partycji NAND:
  129. ```bash
  130. # Automatycznie ustawiane przez bootipq:
  131. mtdparts=nand0:
  132.   - rootfs      (główny system)
  133.   - rootfs_1    (backup system - dual boot)
  134. ```
  135.  
  136. ---
  137.  
  138. ### 💿 **MMC/eMMC - Pełna obsługa**
  139.  
  140. #### Komendy MMC:
  141. ```bash
  142. mmc read <addr> <blk> <cnt>          # Czytanie bloków
  143. mmc write <addr> <blk> <cnt>         # Zapis bloków
  144. mmc erase <blk> <cnt>                # Kasowanie bloków
  145. ```
  146.  
  147. ---
  148.  
  149. ### 🚀 **Boot Commands**
  150.  
  151. #### Główna komenda boot:
  152. ```bash
  153. bootipq
  154. ```
  155.  
  156. #### Sekwencja bootowania:
  157. 1. Wykrywa typ flash (NAND/MMC)
  158. 2. Ustawia `mtdparts` i `mtdids`
  159. 3. Montuje UBI partition "fs"
  160. 4. Czyta kernel: `ubi read 0x<addr> kernel`
  161. 5. Bootuje kernel: `bootm` lub `bootz`
  162.  
  163. #### Zmienne środowiskowe boot:
  164. ```bash
  165. bootargs=console=ttyMSM0,115200n8   # Argumenty kernela
  166. bootcmd=bootipq                      # Komenda boot
  167. bootdelay=5                          # Opóźnienie (sekundy)
  168. baudrate=115200                      # UART baud rate
  169.  
  170. # Sieć:
  171. ipaddr=192.168.1.1
  172. serverip=192.168.1.2
  173. netmask=255.255.255.0
  174.  
  175. # Partycje:
  176. rootfsname=rootfs                    # Aktywna partycja
  177. rootfsname=rootfs_1                  # Backup (dual boot)
  178. ```
  179.  
  180. ---
  181.  
  182. ## 🎛️ Dodatkowe funkcje
  183.  
  184. ### Device Tree
  185. - `dtb_combined.bin` - skompresowany gzip
  186. - Timestamp: 2025-03-19 10:40:04
  187. - Rozmiar: 5993 bytes
  188. - Lokalizacja w U-Boot: offset 0x75790
  189.  
  190. ### Crashdump do USB
  191. ```bash
  192. dump_to_usb
  193. ```
  194. Automatycznie zbiera crashdump i zapisuje na USB storage.
  195.  
  196. ### GPT Support
  197. - Obsługa GUID Partition Table
  198. - `root=PARTUUID=<uuid>`
  199.  
  200. ### Dual Boot System
  201. Router obsługuje **dwa niezależne systemy**:
  202. - `rootfs` - główny
  203. - `rootfs_1` - backup
  204.  
  205. Przełączanie:
  206. ```bash
  207. setenv rootfsname rootfs_1
  208. saveenv
  209. reset
  210. ```
  211.  
  212. ---
  213.  
  214. ## 📊 Mapa partycji (typowa dla IPQ5018)
  215.  
  216. | MTD | Nazwa | Rozmiar | Opis |
  217. |-----|-------|---------|------|
  218. | mtd0 | SBL1 | 512 KB | Primary Boot Loader |
  219. | mtd1 | MIBIB | 512 KB | Partition Table |
  220. | mtd2 | BOOTCONFIG | 256 KB | Boot Configuration |
  221. | mtd3 | BOOTCONFIG1 | 256 KB | Backup Boot Config |
  222. | mtd4 | QSEE | 1 MB | TrustZone (ELF 64-bit) |
  223. | mtd5 | QSEE_1 | 1 MB | TrustZone backup |
  224. | mtd6 | DEVCFG | 256 KB | Device Config (ELF 64-bit) |
  225. | mtd7 | DEVCFG_1 | 256 KB | Device Config backup |
  226. | mtd8 | RPM | 256 KB | Resource Power Manager |
  227. | mtd9 | RPM_1 | 256 KB | RPM backup |
  228. | mtd10 | CDT | 512 KB | Config Data Table |
  229. | **mtd11** | **APPSBL** | **1.3 MB** | **U-Boot (ELF 32-bit)** ⭐ |
  230. | mtd12 | APPSBLENV | 1.3 MB | U-Boot Environment (pusty) |
  231. | mtd13 | ??? | 1 MB | Nieznane (pusty) |
  232. | mtd14 | ??? | 1 MB | Nieznane (pusty) |
  233. | mtd15 | ART | 512 KB | Radio calibration |
  234. | mtd16 | rootfs | 58 MB | System główny (UBI) |
  235. | mtd17 | rootfs_1 | 58 MB | System backup (pusty) |
  236.  
  237. ---
  238.  
  239. ## 🔧 Dostępne komendy U-Boot (wykryte)
  240.  
  241. ### Podstawowe:
  242. ```
  243. help           - pomoc
  244. version        - wersja U-Boot
  245. printenv       - zmienne środowiskowe
  246. setenv         - ustaw zmienną
  247. saveenv        - zapisz zmienne do flash
  248. reset          - restart
  249. ```
  250.  
  251. ### Boot:
  252. ```
  253. boot           - boot system
  254. bootm          - boot z obrazu w pamięci
  255. bootz          - boot zImage z pamięci
  256. bootipq        - boot IPQ system
  257. bootelf        - boot ELF
  258. bootvx         - boot VxWorks
  259. ```
  260.  
  261. ### Pamięć:
  262. ```
  263. md             - memory display
  264. mw             - memory write
  265. cp             - copy memory
  266. ```
  267.  
  268. ### Flash NAND:
  269. ```
  270. nand device    - wybór urządzenia
  271. nand read      - czytaj
  272. nand write     - pisz
  273. nand erase     - kasuj
  274. ```
  275.  
  276. ### MMC/eMMC:
  277. ```
  278. mmc read       - czytaj
  279. mmc write      - pisz
  280. mmc erase      - kasuj
  281. ```
  282.  
  283. ### USB:
  284. ```
  285. usb start      - inicjalizacja
  286. usb stop       - zatrzymaj
  287. usb tree       - pokaż drzewo
  288. fatload usb    - ładuj plik
  289. fatwrite usb   - zapisz plik
  290. ```
  291.  
  292. ### Sieć:
  293. ```
  294. tftp           - klient TFTP
  295. tftpboot       - pobierz przez TFTP
  296. tftpput        - wyślij przez TFTP
  297. httpd          - uruchom serwer HTTP
  298. ```
  299.  
  300. ### UBI:
  301. ```
  302. ubi part       - montuj partycję UBI
  303. ubi read       - czytaj z UBI volume
  304. ```
  305.  
  306. ---
  307.  
  308. ## 🎯 Praktyczne scenariusze użycia
  309.  
  310. ### Scenariusz 1: Recovery firmware przez HTTP (NAJŁATWIEJSZY!)
  311.  
  312. ```bash
  313. # 1. Podłącz UART i przerwij bootowanie
  314. # 2. W U-Boot:
  315. IPQ5018# setenv ipaddr 192.168.1.1
  316. IPQ5018# saveenv
  317. IPQ5018# httpd
  318.  
  319. # 3. Na PC ustaw IP: 192.168.1.2
  320. # 4. Otwórz przeglądarkę: http://192.168.1.1
  321. # 5. Wybierz "Firmware Update"
  322. # 6. Upload firmware.bin
  323. # 7. Czekaj na automatyczny restart
  324. ```
  325.  
  326. ### Scenariusz 2: Recovery przez USB
  327.  
  328. ```bash
  329. # 1. Przygotuj pendrive FAT32 z firmware.bin
  330. # 2. Podłącz do routera i włącz
  331. # 3. Przerwij bootowanie
  332. # 4. W U-Boot:
  333.  
  334. IPQ5018# usb start
  335. scanning bus 0 for devices... 2 USB Device(s) found
  336.  
  337. IPQ5018# fatload usb 0:1 0x44000000 firmware.bin
  338. reading firmware.bin
  339. 45678912 bytes read in 5432 ms
  340.  
  341. IPQ5018# nand device 0
  342. IPQ5018# nand erase 0x0 0x4000000
  343. IPQ5018# nand write 0x44000000 0x0 ${filesize}
  344. IPQ5018# reset
  345. ```
  346.  
  347. ### Scenariusz 3: Recovery przez TFTP
  348.  
  349. ```bash
  350. # 1. Uruchom serwer TFTP na PC (192.168.1.100)
  351. # 2. Skopiuj firmware.bin do /srv/tftp/
  352. # 3. Podłącz kabel Ethernet
  353. # 4. W U-Boot:
  354.  
  355. IPQ5018# setenv serverip 192.168.1.100
  356. IPQ5018# setenv ipaddr 192.168.1.1
  357. IPQ5018# tftpboot 0x44000000 firmware.bin
  358. IPQ5018# nand erase 0x0 0x4000000
  359. IPQ5018# nand write 0x44000000 0x0 ${filesize}
  360. IPQ5018# reset
  361. ```
  362.  
  363. ### Scenariusz 4: Dual Boot - przełączenie na backup system
  364.  
  365. ```bash
  366. IPQ5018# setenv rootfsname rootfs_1
  367. IPQ5018# saveenv
  368. IPQ5018# reset
  369. ```
  370.  
  371. ### Scenariusz 5: Crashdump na USB
  372.  
  373. ```bash
  374. # Jeśli system crashuje:
  375. IPQ5018# dump_to_usb
  376.  
  377. # Crashdump zostanie zapisany na USB storage
  378. ```
  379.  
  380. ---
  381.  
  382. ## ⚠️ NIEBEZPIECZNE operacje
  383.  
  384. ### ❌ NIE RÓB tego bez backupu!
  385.  
  386. ```bash
  387. # Aktualizacja U-Boot przez HTTP:
  388. # - Może zablokować router na stałe (brick)
  389. # - Tylko jeśli masz pewność co robisz!
  390.  
  391. # Kasowanie całego NAND:
  392. nand erase 0x0 0x8000000  # ❌ NIEBEZPIECZNE!
  393.  
  394. # Kasowanie MIBIB (partition table):
  395. # ❌ Router się nie uruchomi!
  396.  
  397. # Kasowanie ART (radio calibration):
  398. # ❌ WiFi przestanie działać!
  399. ```
  400.  
  401. ---
  402.  
  403. ## 🔍 Analiza techniczna
  404.  
  405. ### Architektura:
  406. - **CPU**: ARM 32-bit (EABI5)
  407. - **Format**: ELF shared object
  408. - **Endianness**: Little endian
  409. - **Linkowanie**: Statically linked
  410.  
  411. ### Komponenty:
  412. - CRC32 polynomial tables (offset 0x5A104, 0x5A504)
  413. - Device Tree Blob compressed (gzip, offset 0x75790)
  414. - HTTP server z embedded HTML
  415. - USB stack (xHCI driver)
  416. - NAND/MMC drivers
  417. - Network stack (TFTP)
  418.  
  419. ### Obsługiwane SoC:
  420. - IPQ5018 ⭐ (główny)
  421. - IPQ8074
  422. - IPQ8072
  423. - IPQ8076
  424.  
  425. ---
  426.  
  427. ## 📝 Zmienne środowiskowe (domyślne)
  428.  
  429. ```bash
  430. # Boot:
  431. bootargs=console=ttyMSM0,115200n8
  432. bootcmd=bootipq
  433. bootdelay=5
  434. baudrate=115200
  435.  
  436. # Sieć:
  437. ipaddr=192.168.1.1
  438. serverip=192.168.1.2
  439. netmask=255.255.255.0
  440.  
  441. # Partycje:
  442. rootfsname=rootfs
  443. mtdparts=nand0:...
  444. mtdids=nand0=nand0
  445.  
  446. # USB:
  447. usb_mode=host
  448. usbethaddr=<MAC>
  449. ```
  450.  
  451. ---
  452.  
  453. ## 🎓 Jak dostać się do U-Boot?
  454.  
  455. ### Wymagania sprzętowe:
  456. 1. **Adapter USB-UART** (CP2102, FTDI, CH340)
  457. 2. **3 przewody**: GND, TX, RX
  458. 3. **Komputer** z terminalem
  459.  
  460. ### Procedura:
  461.  
  462. ```bash
  463. # 1. Podłącz UART:
  464. #    Router GND  -> Adapter GND
  465. #    Router TX   -> Adapter RX
  466. #    Router RX   -> Adapter TX
  467.  
  468. # 2. Terminal (Linux/Mac):
  469. screen /dev/ttyUSB0 115200
  470.  
  471. # Lub:
  472. minicom -D /dev/ttyUSB0 -b 115200
  473.  
  474. # Windows: Putty/TeraTerm na COM port, 115200 baud
  475.  
  476. # 3. Włącz router i NATYCHMIAST wciskaj:
  477. #    - ESC lub
  478. #    - Spacja lub
  479. #    - 0
  480.  
  481. # 4. Powinieneś zobaczyć:
  482. IPQ5018#
  483. ```
  484.  
  485. ---
  486.  
  487. ## 📚 Podsumowanie możliwości
  488.  
  489. ### ✅ TAK - U-Boot OBSŁUGUJE:
  490.  
  491. | Funkcja | Status | Notatki |
  492. |---------|--------|---------|
  493. | **USB Storage** | ✅ Pełne | FAT16/FAT32 read/write |
  494. | **USB Boot** | ✅ Pełne | `fatload usb` działa |
  495. | **TFTP** | ✅ Pełne | Download i upload |
  496. | **HTTP Server** | ✅ Pełne | Web recovery interface |
  497. | **NAND Flash** | ✅ Pełne | Read/write/erase |
  498. | **eMMC** | ✅ Pełne | Read/write/erase |
  499. | **Dual Boot** | ✅ Pełne | rootfs / rootfs_1 |
  500. | **UBI** | ✅ Pełne | UBI volumes |
  501. | **Device Tree** | ✅ Embedded | dtb_combined.bin |
  502. | **Crashdump USB** | ✅ Pełne | Automatyczny zrzut |
  503.  
  504. ### ❌ NIE - U-Boot NIE OBSŁUGUJE:
  505.  
  506. | Funkcja | Status | Alternatywa |
  507. |---------|--------|-------------|
  508. | ext2/ext3/ext4 | ❌ Nie | Użyj FAT32 |
  509. | NTFS | ❌ Nie | Użyj FAT32 |
  510. | USB 3.0 SuperSpeed | ⚠️ Ograniczone | Działa w trybie USB 2.0 |
  511. | WiFi | ❌ Nie | Tylko Ethernet/USB |
  512.  
  513. ---
  514.  
  515. ## 🔐 Bezpieczeństwo
  516.  
  517. ### Secure Boot:
  518. - U-Boot prawdopodobnie nie jest podpisany
  519. - Brak weryfikacji firmware (można wgrać dowolny)
  520. - ⚠️ Potencjalne ryzyko bezpieczeństwa
  521.  
  522. ### Zalecenia:
  523. 1. **Backup wszystkich partycji** przed modyfikacją
  524. 2. **Nie aktualizuj U-Boot** bez dobrego powodu
  525. 3. **Nie kasuj MIBIB** (partition table)
  526. 4. **Zachowaj ART** (kalibracja WiFi)
  527. 5. **Testuj na kopii** jeśli to możliwe
  528.  
  529. ---
  530.  
  531. ## 📞 Kontakt / Support
  532.  
  533. Jeśli coś pójdzie nie tak:
  534. 1. Sprawdź logi przez UART
  535. 2. Użyj trybu failsafe
  536. 3. Recovery przez TFTP/HTTP/USB
  537. 4. Ostateczność: JTAG (wymaga sprzętu)
  538.  
  539. ---
  540.  
  541. **Data analizy**: 2025-01-20
  542. **Źródło**: mtd11.bin (1.3 MB)
  543. **Format**: ELF 32-bit ARM
  544. **U-Boot Version**: 2.0 (2025-03-19)
  545. **Platform**: Qualcomm IPQ5018
  546.  
Advertisement
Comments
  • User was banned
Add Comment
Please, Sign In to add comment