Bài viết hướng dẫn dump firmware công tắc wifi tuya với UART và áp dụng được cho các module esp8266, esp32. Phục vụ cho việc dịch ngược mã nguồn của các thiết bị smarthome tuyna hoặc các sản phẩm dựa trên chip espxx.

Mạch PCB công tắc Tuya

Sau khi unbox công tắc ta sẽ tách được khối xử lý nguồn và khối mạch xử lý bao gồm PCB có đèn, nút công tắc, … và module TYWE3S sử dụng chip esp8266.

Chuẩn Bị các Công Cụ

Mạch USB UART

Trên mỗi chip esp8266 được cài đặt chương trình bootloader cho phép dùng uart để truy cập vào.
Chương trình bootloader cho phép truy cập rất nhiều thông tin như thông tin chip, flash, read, write, … Có quá trời chức năng cho bạn nghiên cứu.

mình sẽ lợi dụng tính năng read để dump firmware từ module ra.

ESP Tools

Công cụ esptool.py là công cụ được sử dụng rất nhiều để truy cập vào bootload và thực hiện các chức năng cần thiết như write chương trình vào flash sau mỗi lần bạn lập trình xong.

Do các bạn thường lập trình trên các IDE như Arduino, Eclipse, Visualcode nên không biết tới esptool vì sau khi các lập trình chương trình sẽ được build và upload chỉ bằng các kích chuột nên không biết tool esptool.py được các IDE gọi trong backgound các bạn không để ý.

Trên ubuntu ban có thể dụng câu lệnh sau để cài đặt:

sudo apt-get install esptool
dump file

Thực Hiện DUMP FIRMWARE

Xác định các chân của module

mình lấy ví dụ trên module TYWE3S có sơ đồ chân như sau:

Module TYWE3S đều sử dụng chip esp8266 việc dump trên các module có chip esp8266, esp32 là tương tự. Chỉ cần xác định đúng các PIN tín hiệu: RX, TX, GIPO0, GND, VCC.

Thực hiện đấu kết nối Module vs USB UART.

USB UART SERIALModule ESP
TXRX
RXTX
GNDGPIO0
Vout 3.3(v)Vin
GNDGND

Kết quả như sau:

Cơ Chế truy cập Bootloader

Để truy cập được vào bootloader bạn cần thực hiện các bước như sau:
mình lấy ví dụ đọc thông tin chip_id.

  • Chạy tool esptool.py --baudrate 9600 --port /dev/ttyUSB0 chip_id
  • Chân GPIO 0 phải được kéo xuống GND (khi boot chương trình sẽ sử dụng GPIO0 để active truy cập chế độ bootloader).
  • Reset module esp (bạn có thể tự thiết kế nút reset hoặc đơn giản là ngăn nguồn và cấp nguồn lại).

DUMP FRIMWARE

TRUNG TÂM SỬA CHỮA ĐIỆN TỬ QUẢNG BÌNH
MR. XÔ - 0901.679.359 - 80 Võ Thị Sáu, Phường Quảng Thuận, tx Ba Đồn, tỉnh Quảng Bình
Sửa điện tử tại Quảng Bình

Lặp lại lần nữa với chức năng đọc bộ nhớ flash.
Chạy tool esptool.py --baudrate 9600 --port /dev/ttyUSB0 read_flash 0x00 0x100000 fwbackup.bin

  • 0x100000 tương đương với kích thước flash 1M để xem flash có kích thức bao nhiều bạn lại sử dụng công cụ esptool hoặc tra mã ghi trên flash.

Dịch ngược chương trình

Xin hẹn các bạn trong phần tiếp theo nhé!

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

66 − = 58