Trong bài viết này, mình sẽ chia sẻ 1 trig nhỏ để bảo mật chương trình cho esp8266, với phương pháp này, dù bạn có gửi thẳng file .bin của bạn cho người khác thì họ nạp vào chip của họ cũng không chạy được

Các bạn theo dõi đoạn code sau

Trong chương trình trên, khi khởi động mình sẽ so sánh mac của thiết bị với biến check_MAC nếu giống nhau thì mới cho phép chạy

PHÉP THUẬT

Giờ hãy làm 1 chút ảo thuật nào

Khi bạn ấn nút nạp trên arduino, Arduino IDE sẽ sinh ra 1 file .bin, chính là file firmware của bạn đã được biên dịch thành mã máy. Bên trong file bin đó có chứa 1 đoạn dữ liệu chính là XX:XX:XX:XX:XX:XX

Sau khi file .bin được tạo thành công, arduino IDE sẽ nạp chương trình xuống cho esp8266 bằng 1 script

Cụ thể, arduino ide sử dụng 1 chương trình nạp được có tên là esptool.py. đây là 1 đoạn mã python, điều tuyệt vời là nó là mã nguồn mở, có nghĩa là ta có thể chèn thêm vào 1 vài dòng code để thêm chức năng cho nó.

Cụ thể, trong quá trình nạp, mình sẽ đọc MAC của esp8266 lên và thay thế nó vào đoạn dữ liệu XX:XX:XX:XX:XX:XX trong file .bin kia. Nghe thì dòng dài nhưng chỉ cần thêm đúng 5 dòng code thôi 😀

Các bạn mở file esptool.py lên, có thể mở bằng nodepad hay bất kì phần mềm chỉnh sửa văn bản nào. Nếu không biết vị trí của file này ở đâu thì hãy ấn nút upload trên arduino IDE, trước khi nạp arduino IDE sẽ in ra 1 dòng lệnh, trong đó có chưa vị trí của file upload.py, file esptool.py nằm trong thư mục esptool cùng cấp với upload.py

Nếu arduino IDE của bạn không hiển thị, thì là do bạn chưa bật chức năng show log upload, hãy vào FILE -> Preferences và tích vào upload

Khi đã mở được file esptool.py các bạn dùng chức năng tìm kiếm ( Ctrl + F ) để tìm hàm read_mac sau đó chèn 2 dòng mã này vào cuối hàm

Tiếp tục tìm tới hàm write_flash và chèn thêm 3 dòng code này vào dưới dòng image = _update_image_flash_params(esp, address, args, image)

Vậy là xong, lưu lại và nạp code thử , từ giờ khi upload trên arduino sẽ có in thêm dòng Thay doi XX:XX:XX:XX:XX:XX thành mac của chip là thành công

Nâng cao khả năng bảo mật

Việc lưu trực tiếp ID vào flash vẫn có thể bị hacker phát hiện ra khi dump code và phân tích, vì vậy hãy thêm 1 số thuật toán mã hóa để “che” đi MAC của bạn, thậm chí bạn có thể tạo thêm nhiều biến so sánh ở nhều nơi khác nhau trong chương trình để làm hacker “nản lòng”

Hạn chế

XX:XX:XX:XX:XX:XX là 1 value đặc biệt trong code của bạn. Do đó hãy đảm bảo trong chương trình của bạn không dữ liệu nào có thể chứa XX:XX:XX:XX:XX:XX hoặc bạn cũng có thể thay đổi khóa XX:XX:XX:XX:XX:XX thành 1 từ khóa đặc biệt khác khó bị trùng hơn

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

I found your article to be very well-researched and informative. Thank you for taking the time to provide such valuable information.

Thanks for sharing valuable ideas in this article.

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 *

5 + 5 =