Perangkat ini menggunakan chipset RTL8197DN, menggunakan set instruksi MIPS-Endian. Menurut penelitian saya, inti MIPS yang sebenarnya di dalam tampaknya adalah lexra (untuk diverifikasi).
Menekan WPS dan mengatur ulang pada saat yang sama selama boot memasuki mode bootloader. Bootloader menyediakan antarmuka perintah sederhana melalui UART, serta memungkinkan untuk mengunggah pembaruan melalui TFTP (lihat ./upload_update.sh ). Bootloader dimasukkan secara otomatis jika booting gagal (juga berfungsi sebagai mode pemulihan).
Ketika pembaruan diunggah melalui TFTP, ia dimuat ke RAM di alamat 0x80500000. Jika file adalah file pembaruan yang tepat, flashing dimulai secara otomatis, jika tidak file tetap di RAM dan dapat misalnya flash secara manual menggunakan perintah FLW.
Perintah kerja yang dikonfirmasi:
Perangkat ini memperlihatkan header UART dengan pesan bootloader dan shell Linux. 38400 baud
Nama Pengguna: Kata Sandi Root: Apa pun yang dikonfigurasi sebagai kata sandi admin untuk panel web (default: admin)
Semuanya Endian Besar. Lihat ./check_update.py untuk skrip yang mem -parsing file pembaruan, dan ./make_header.py untuk skrip yang menambahkan header pembaruan ke file biner mentah
File pembaruan dibuat dari blok berikut yang digabungkan bersama:
| mengimbangi | ukuran | keterangan |
|---|---|---|
| 0 | 4 | Jenis File-Lihat https://github.com/jameshilliard/wecb-vz-gpl/blob/master/rtl819x/bootcode/boot/init/rtk.h untuk tipe yang valid. Perangkat yang kami miliki hanya menggunakan "CR6C" untuk kernel dan "R6CR" untuk rootfs (dan mungkin "boot" untuk bootloader?) |
| 4 | 4 | Alamat beban dalam RAM (hanya digunakan untuk gambar kernel?) |
| 8 | 4 | Alamat dalam memori flash |
| 12 | 4 | Panjang data |
| 16 | * | Data |
Data diperiksa - jumlah endian besar 16 -bit dari semua byte harus 0x0000 (kecuali Anda mem -flash partisi file web, yang tidak dimiliki perangkat ini - dalam hal itu checksum 8 -bit). Ini biasanya dicapai dengan menambahkan dua byte di akhir.
Ketika bootloader mencoba memuat terlebih dahulu melihat ~ 4 alamat hardcoded terlebih dahulu, kemudian melanjutkan untuk mencari seluruh flash untuk tanda tangan, yang tampaknya menunjukkan bahwa tata letak flash mungkin berbeda pada perangkat yang berbeda. Data memiliki pemeriksaan checksum yang identik ke file pembaruan di atas.
Lihat ./split_img.sh
| Mulai alamat | alamat akhir | header | keterangan |
|---|---|---|---|
| 0x00000000 | 0x00006000 | - | Kode bootloader |
| 0x00006000 | 0x00008000 | H601 (?) | Konfigurasi Perangkat Keras (Alamat Mac dll.) |
| 0x00008000 | 0x00010000 | Compds (?) | Konfigurasi default |
| 0x00010000 | 0x00018000 | Compcs (?) | Konfigurasi saat ini |
| 0x00018000 | 0x00138000 | Perbarui header untuk CR6C | Kernel Linux, diawali dengan header yang identik dengan format header pembaruan |
| 0x00138000 | 0x00327002 | header sistem file squashfs, dimulai dengan HSQS | Root Filesystem. Dua byte terakhir ditambahkan untuk checksum. |
| 0x00327002 | 0x00400000 | - | 0xff 0xff 0xff 0xff ... |