QuânSysAd's Blog: wr740n
Hiển thị các bài đăng có nhãn wr740n. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn wr740n. Hiển thị tất cả bài đăng

25 tháng 5 2017

Unbrick TP LINK WR740N V4 gargoyle firmware

Bước 1: Thực hiện kết nối các chân serial (TX,RX,GND,VCC) với bộ chuyển đổi serial to USB.
Lưu ý nối dây ở 2 chân nằm ở mặt sau của mạch router.
Bước 2: Cắm chân USB của bộ chuyển đổi vào cổng USB máy tính.
Đặt lại ip của máy tính là 192.168.1.32
Subnet mask: 255.255.255.0
Bước 3: Thực hiện kết nối bằng putty thông qua cổng COM (COM22 tùy từng máy) với các thông số:
Speed: 115200
Data bit: 8
Stop bit : 1
Parity:none
Flow control : none.
Bước 4: Cài tftpd server, copy firmware gargoyle có tên firmware.bin vào trong thư mục cài của tftpd. Thực hiện cấu hình chỉnh địa chỉ IP trên tftpd là 192.168.1.32
Bước 5: Thực hiện vào màn hình lệnh của WR740N bằng cách đợi khi màn hình hiện dòng Autobooting in 1 seconds thì bấm nhanh “tpl” (3 phím TPL).
Bước 6: Ở cửa sổ dòng lệnh router thực hiện các lệnh sau:
setenv ipaddr 192.168.1.2
setenv serverip 192.168.1.32
Bước 7: Thực hiện dùng lệnh sau để đẩy firmware vào trong router:
tftpboot 0x80000000 firmware.bin
Sau khi đẩy xong Thực hiện tiếp 3 lệnh sau:
erase 0x9f020000 +0x3c0000
cp.b 0x80000000 0x9f020000 0x3c0000
bootm 0x9f020000
Nếu không được thực hiện thay 3c0000 bằng số hiện lên sau khi đẩy firmware trên màn hình console.
Sau khi xong bước 7 dùng router như bình thường.
Nâng cao:
Chú ý khi xóa cần xác định dung lượng file firmware và đổi về giá trị hợp lý
Flashing firmware serial
Đầu tiên ta sẽ phải chạy tftp server chạy trên địa chỉ 192.168.1.234, phục vụ firmware file, được đổi tên thành firm.bin.
mkdir -p /tmp/tftp/
cp openwrt-...-factory.bin /tmp/tftp/firm.bin

sudo ip addr add 192.168.1.234/24 dev eth0
sudo dnsmasq -d --port=0 --enable-tftp --tftp-root=/tmp/tftp/
Sau đó, trên một console khác, chạy serial terminal program đặt rate thành 115200 8N1, no flow control.
screen /dev/ttyUSB0 115200
Cuối cùng, chỉ dẫn bootloader để transfer firm.bin từ tftp server trên computer và lưu nó vào RAM memory (0x81000000) và sau đó xóa 0x7c0000 bytes (7.75 MiB) từ flash (bắt đầu từ 0xbf020000). Cuối cùng copy image stored trong RAM vào flash.
KHÔNG DÙNG CÁC GIÁ TRỊ SAU ĐÂY. PHẢI TÌM GIÁ TRỊ ĐÚNG.
0x7c0000: kích thước của firmware (cẩn thận vì bạn có thể có kích thước khác do đó bricking router của bạn). Tính bằng byte. Đây là hệ cơ số hexa, cần đổi 0x7c0000 về hệ cơ số decimal để tính theo bytes. Ở đây sẽ là 8126464 bytes.
setenv serverip 192.168.1.234
tftpboot 0x81000000 firm.bin
erase 0xbf020000 +0x7c0000
cp.b 0x81000000 0xbf020000 0x7c0000
bootm 0xbf020000
Tức là 0x7c0000 là dung lượng kích thước file firmware
0x81000000 là ram memory
erase 0xbf020000 +0x7c0000
Xóa flash bắt đầu từ `bf020000`
0x7c0000 bytes = 7.75 MiB = 8126464 bytes
Câu lệnh thực tế với WR740N chạy:
tftpboot 0x80000000 firmware.bin
erase 0x9f020000 +0x3c0000
cp.b 0x80000000 0x9f020000 0x3c0000
bootm 0x9f020000
0x3c0000 bytes ta đổi về hệ decimal ta được 3932160 bytes (decimal)
Như firmware gargoyle của WR740N có dung lượng là 3932160 byte. Đổi ra được 3.75 MB (Megabyte) (đổi theo hệ số 1024)
Đối với từng dòng router ta cần xác định offset của flash, bắt đầu từ địa chỉ đó router sẽ thực hiện boot. Đối với WR740N địa chỉ sẽ là 0x9f020000. Các thông tin này có thể lấy trong khi theo dõi quá trình boot trước khi ấn tpl khi kết nối bằng serial.
Để restore về stock firmware wr740n thì
Bước 1: Download bản firmware wr740n từ trang web của tp link (đặt tên là origin.bin).
Bước 2: Tuyệt đối không restore bản firmware này. Thực hiện đưa file này vào hệ điều hành linux.
Dùng lệnh sau để chế lại bản firmware để có thể flash:
dd if=origin.bin of=tplink.bin skip=257 bs=512
Sau đó lấy bản tplink.bin này thực hiện flash bằng serial hoặc copy vào thư mục /tmp trong gargoyle và dùng lệnh:
mtd -r write /tmp/tplink.bin firmware