Mục lục:

Hack cửa nhà để xe của bạn: 5 bước
Hack cửa nhà để xe của bạn: 5 bước

Video: Hack cửa nhà để xe của bạn: 5 bước

Video: Hack cửa nhà để xe của bạn: 5 bước
Video: Cô Bé 5t Tìm Cách Ghép Đôi Tổng Tài Với Mẹ Mình, Mà Ko Biết Anh Chính Là Bố Mình | review phim hay 2024, Tháng bảy
Anonim
Hack cửa nhà để xe của bạn
Hack cửa nhà để xe của bạn
Hack cửa nhà để xe của bạn
Hack cửa nhà để xe của bạn
Hack cửa nhà để xe của bạn
Hack cửa nhà để xe của bạn

Ai chưa từng mơ về nhà chỉ với một ứng dụng điện thoại hoặc có thể nghe và sao chép lại các chuyến tàu dữ liệu? Tôi rất vui khi có thể chia sẻ với bạn những gì tôi nhận ra và cách tôi đã tiến hành. Tôi bắt đầu dự án này sau lần thứ hai tôi quên chìa khóa…

Tất nhiên, mã hóa, loại điều chế, tần số của nhà cung cấp dịch vụ, thông tin kết nối bluetooth và dữ liệu mà tôi sẽ hiển thị trong ví dụ không phải là bản gốc, tôi không muốn có khách truy cập;-).

Ứng dụng này áp dụng cho bất kỳ đối tượng nào có khả năng nhận thông tin kỹ thuật số bằng sóng điện từ (cửa nhà để xe, ô tô, một số cửa chớp…). Toàn bộ hệ thống bao gồm một đối tượng được kết nối bằng bluetooth với điện thoại, đối tượng này có thể gửi các khung hình giống như điều khiển từ xa được liên kết với những gì chúng ta muốn hack. Tôi đã đặt đối tượng này trong nhà để xe của mình và tôi có thể kết nối với nó từ bên ngoài.

Bước 1: Trang bị

Thiết bị
Thiết bị
Thiết bị
Thiết bị

Ngôn ngữ được sử dụng: C ++, MATLAB, Typescript, C, html.

Kiến thức cơ bản về điện tử kỹ thuật số và viễn thông / xử lý tín hiệu.

Chi phí: ít hơn $ 35.

Yêu cầu phần cứng:

- NooELEC NESDR: để thu thập dữ liệu. Mô-đun rất rẻ này thực hiện giải điều chế kỹ thuật số, do đó có tính di động cao. Mô hình này tương thích với MATLAB. ($ 18,95)

www.nooelec.com/store/sdr/sdr-receivers/nes…

- Wemos Lolin32 lite: esp32 này là vi điều khiển giá rẻ, được trang bị Wifi và Bluetooth. Chúng tôi sẽ không sử dụng Wifi trong ứng dụng này, nhưng điều này phần lớn có thể hình dung được. ($ 4,74)

wiki.wemos.cc/products:lolin32:lolin32_lit…

- CDSENET cc1101: máy phát vô tuyến này mang lại cho chúng ta một sự linh hoạt cao độ, từ tần số sóng mang đã chọn đến kiểu điều chế. ($ 2,63)

www.aliexpress.com/item/2PC-Lot-E07-868MS1…

- Dây điện, tiêu đề, thiết bị hàn, pin lipo 3.7V để tự động, có thể là máy hiện sóng và / hoặc máy phân tích logic để gỡ lỗi và ngẫu nhiên, điện thoại thông minh…

Yêu cầu phần mềm:

- MATLAB / Simulink: để thu thập dữ liệu. Có thể sử dụng các phần mềm thay thế miễn phí khác, như Audacity để hiển thị dữ liệu. (giấy phép)

fr.mathworks.com/products.html?s_tid=gn_ps

- chuỗi công cụ esp-idf: cái này sẽ được sử dụng để lập trình esp32. Ý tưởng Arduino cũng có thể được sử dụng, nhưng nó không cho phép nhiều tự do như những gì chúng ta sẽ sử dụng. (miễn phí)

esp-idf.readthedocs.io/en/latest/get-starte…

- TI SmartRF Studio: điều này sẽ giúp chúng tôi cấu hình các thanh ghi cc1101, theo thông số kỹ thuật của chúng tôi. (miễn phí)

www.ti.com/tool/SMARTRFTM-STUDIO

- Ionic: để xây dựng ứng dụng. Bạn có thể lựa chọn xây dựng các ứng dụng gốc, nhưng Ionic cho phép chúng tôi chạy ứng dụng của mình trên cả thiết bị Android và IOS, chỉ với một mã duy nhất. Hiệu suất không được tìm kiếm trong trường hợp của chúng tôi. (miễn phí)

ionicframework.com/

- Ý tưởng yêu thích của bạn…

Bước 2: Theo dõi điều khiển từ xa

Theo dõi điều khiển từ xa
Theo dõi điều khiển từ xa
Theo dõi điều khiển từ xa
Theo dõi điều khiển từ xa
Theo dõi điều khiển từ xa
Theo dõi điều khiển từ xa

Chúng ta sẽ bắt đầu bằng cách quan sát dữ liệu mà các lệnh của điều khiển từ xa tạo ra. Để làm điều này, chúng tôi sẽ sử dụng dongle và ăng-ten rtl-sdr:

fr.mathworks.com/hardware-support/rtl-sdr….

Bằng cách nhấp vào liên kết này, bạn sẽ tìm thấy gói MATLAB, cũng như một cuốn sách miễn phí giải thích tất cả các phần mềm kèm theo lời giải thích. Để tóm tắt những gì chúng ta quan tâm, dữ liệu chuyển tuyến ở dạng tín hiệu IQ: dữ liệu trong pha "I", kết hợp với dữ liệu vuông góc "Q". Phương pháp này tạo điều kiện thuận lợi cho viễn thông. Chúng tôi sẽ chỉ quan tâm đến việc nhận tín hiệu theo pha. Bây giờ chúng tôi sẽ thu thập thông tin vật lý và kỹ thuật số trên điều khiển từ xa. Nếu bạn có thể tìm thấy một số tài liệu về nó, mọi việc sẽ dễ dàng hơn. Tôi không tìm thấy bất kỳ. Để có thể quan sát tạm thời tín hiệu, trước tiên chúng ta phải biết sóng mang tần số của tín hiệu phát ra là gì. Chúng tôi sẽ sử dụng ví dụ được cung cấp cùng với tài liệu gói "Phân tích phổ với RTL-SDR Radio", để biết chính xác tần số mà chúng tôi quan sát thấy công suất đỉnh khi chúng tôi gửi lệnh. Trong trường hợp của tôi, nó là 868,22 MHz. Các tần số "tiêu chuẩn" cho loại ứng dụng này là khoảng 868 MHz.

Với những chỉ dẫn này, chúng tôi sẽ có thể viết mã MATLAB để khôi phục dữ liệu. Kết quả này được đính kèm trong ảnh và có chú thích. điều chế. Thật vậy, chúng ta quan sát thấy rằng tần số là bất biến, tuy nhiên, tín hiệu chỉ có hai biên độ: một giá trị rỗng và một biên độ cố định. Phần còn lại của mã cho phép chúng tôi khôi phục phong bì của tín hiệu đã nhận, giúp dễ đọc hơn để biết dấu vết. Sau khi hiển thị, chúng ta có thể xác định điều chế băng tần cơ sở: đây là mã hóa Manchester (xem ảnh đính kèm). Chúng ta cũng có thể suy ra tốc độ truyền (ký hiệu trên giây). Tất cả những thông tin này đang được thu thập, chúng ta có thể biết được khung dữ liệu. Trong trường hợp của tôi, các byte được tìm thấy là: 249, 39, 75, 178, 45, 200 và được xóa nhiều lần, để đảm bảo rằng lệnh được nhận tốt. May mắn thay, mã không cuộn, khung dữ liệu luôn giống nhau.

Bước 3: Gửi cùng một khung dữ liệu

Gửi cùng một khung dữ liệu
Gửi cùng một khung dữ liệu
Gửi cùng một khung dữ liệu
Gửi cùng một khung dữ liệu
Gửi cùng một khung dữ liệu
Gửi cùng một khung dữ liệu

Texas Instruments cc1101 rất linh hoạt nên bạn sẽ vẫn đạt được mục tiêu của mình, ngay cả khi các cài đặt bạn tìm thấy ở bước trước hoàn toàn khác với cài đặt của tôi. Thật vậy, bạn sẽ thấy trong tài liệu, trang 2 (https://www.ti.com/lit/ds/symlink/cc1101.pdf) rằng nó cho phép thực hiện điều chế NRZ, Manchester, FSK, ASK / OOK, tần số khoảng 433 MHz hoặc 868 MHz, và nhiều thứ khác. Tôi khuyên bạn nên đọc tài liệu để làm quen với mô-đun này.

Trên liên kết này, bạn sẽ tìm thấy như một ví dụ về công việc của Loboris liên quan đến việc xây dựng các chức năng bằng cách sử dụng mô-đun này:

github.com/loboris/ESP32_CC1101/tree/maste…

Chúng tôi sẽ viết mã cho esp32 của chúng tôi bằng chuỗi công cụ esp-idf (xem các liên kết của bước đầu tiên). Bạn có thể thêm các tệp của liên kết trong thư mục con các thành phần của dự án của bạn. Để cấu hình đúng cc1101 của chúng tôi, chúng tôi sẽ cần sửa các thanh ghi của nó. Texas Instruments cung cấp cho chúng tôi phần mềm cung cấp cho chúng tôi giá trị của các thanh ghi theo cấu hình của chúng tôi: SmartRF Studio.

Liên quan đến tôi, tôi chỉ ra với phần mềm rằng tôi muốn mã hóa Manchester, rằng tần số sóng mang của tôi là 868,22 MHz, rằng loại điều chế của tôi là ASK / OOK… Tôi cho phép bạn nhập các thông số của bạn. Trong trường hợp mã hóa băng tần cơ sở của bạn không khả dụng, bạn có thể xem xét mã hóa NRZ, bằng cách tăng tốc độ truyền đúng cách và điều chỉnh dữ liệu.

Khi bạn đã xác định các giá trị của mình, bạn có một số lựa chọn liên quan đến việc sử dụng mô-đun: bạn có thể sử dụng các chức năng mà tôi đã liên kết với bạn hoặc những gì tôi đã làm, chỉ lấy cảm hứng từ mã này, để định cấu hình mọi thứ cách tàn bạo (xem ảnh đính kèm), và chỉ sử dụng những gì chúng ta cần.

Khi chip cc1101 giao tiếp bằng SPI, bạn sẽ tìm thấy trong liên kết của mã ví dụ tệp tiêu đề "spi_master_lobo.h", chứa nhiều chức năng dễ dàng hơn để sử dụng SPI so với việc bạn phải sử dụng nó chỉ với chuỗi công cụ. Tôi cùng bạn chụp ảnh sơ đồ giao tiếp CC1101 trong SPI, ảnh chụp từ trang 30 của biểu dữ liệu CC1101. Bốn dây được trình bày là: CS (Chip Select, hoặc SS: Slave Select, hoặc ở đây là CSn), CLK (hoặc SCLK, Clock, được cung cấp bởi master), MISO (hoặc SO, Master In Slave Out) và MOSI (hoặc SI, Master Out Slave In). Trong trường hợp của chúng ta, cái chính là ESP32 và cái phụ là CC1101. Nói chung, giao tiếp bắt đầu khi chân CS ở mức thấp.

Đừng quên bật trong các tùy chọn biên dịch của menuconfig các ngoại lệ C ++ để biên dịch.

Bước 4: Kết nối với Hệ thống

Kết nối với hệ thống
Kết nối với hệ thống
Kết nối với hệ thống
Kết nối với hệ thống
Kết nối với hệ thống
Kết nối với hệ thống

Nếu mã của bạn hoạt động, bạn đã làm được điều cần thiết. Trong phần này, chúng ta sẽ tập trung vào cách tạo một ứng dụng điện thoại kết nối với hệ thống. Giải pháp thú vị nhất là kết nối bằng bluetooth, vì nó cho phép sử dụng giao thức năng lượng thấp: Bluetooth Low Energy (BLE). Cấu hình phân cấp được thể hiện trong hình vẽ đính kèm: chúng ta sẽ đọc và viết lệnh trong Đặc tính của một Dịch vụ. Và tất nhiên, esp32 và điện thoại thông minh của chúng tôi được trang bị bluetooth.

Bước này được chia thành hai phần: phần esp32 và phần ứng dụng. Hình ảnh đính kèm hiển thị và giải thích các phần chính của mã.

Bạn có thể tạo UUID của mình bằng cách nhấp vào liên kết sau:

www.uuidgenerator.net/

Đây là những số nhận dạng sẽ cung cấp quyền truy cập vào các dịch vụ và tính năng của hồ sơ BLE của chúng tôi.

Về mã esp32 BLE, Kolban đã làm một công việc tuyệt vời khi làm cho tất cả các hàm C ++ cấp cao này tương thích:

github.com/nkolban/esp32-snippets/tree/mas…

Bạn có thể đặt các tệp này trong thư mục con các thành phần. Nếu không, bạn sẽ cần thêm thời gian để hiểu cách sử dụng BLE với chuỗi công cụ esp-idf.

Tóm lại những gì bạn sẽ thấy trong mã, chúng tôi tạo Máy chủ, Dịch vụ và Đặc tính, với các UUID được liên kết và chúng tôi thêm một lớp gọi lại được xác định lại, với một phương thức được liên kết khi ghi: khi chúng tôi nhận được "O" ký tự, chúng tôi gửi một lệnh ghi tới cc1101.

Tất nhiên, đừng quên bật Bluetooth trong cấu hình Thành phần của Menuconfig.

Về phần ứng dụng, chúng tôi sẽ sử dụng Framework Ionic. Bạn có thể tìm thêm thông tin về nó trong liên kết được trình bày ở bước đầu tiên và để biết thêm chi tiết về cách sử dụng BLE với Ionic:

ionicframework.com/docs/native/ble/

Và các ví dụ, được viết bởi don:

github.com/don/ionic-ble-examples/tree/mas…

Ví dụ, bạn có thể chỉnh sửa ví dụ "Kết nối". Chúng tôi quét các thiết bị trên trang đầu tiên và đến trang thứ hai nếu chúng tôi chọn thiết bị của mình. Sau đó, chúng tôi truy cập một giao diện nơi bạn có thể thêm một nút với phương thức được trình bày trong ảnh: nó gửi lệnh "O" của chúng tôi với các UUID thích hợp. Bạn cũng có thể thêm vào hàm tạo của trang đầu tiên phương thức "enable", yêu cầu kích hoạt bluetooth khi bắt đầu ứng dụng.

Tôi thực sự khuyên bạn nên khám phá trang web Ionic và khám phá tất cả các Thành phần (nút, cảnh báo, hộp kiểm…) để nâng cao ứng dụng của bạn:

ionicframework.com/docs/components/#overvi…

Bước 5: Tối ưu hóa mức tiêu thụ điện năng

Tối ưu hóa mức tiêu thụ điện năng
Tối ưu hóa mức tiêu thụ điện năng
Tối ưu hóa mức tiêu thụ điện năng
Tối ưu hóa mức tiêu thụ điện năng

Chúng tôi bắt đầu làm việc với mức tiêu thụ thấp, vì vậy chúng ta hãy làm việc với nhau.

Chuỗi công cụ esp-idf cho phép chúng tôi sử dụng GUI cấu hình, menuconfig: nhiều thông số có thể làm giảm mức tiêu thụ esp32. Trước hết, vì chúng tôi không cần Wifi, chúng tôi có thể tắt nó trong cấu hình Thành phần. Trong cùng một thư mục, trong FreeRTOS, bạn có thể chọn "Chỉ chạy FreeRTOS trên lõi đầu tiên. Sau đó, trong ESP cụ thể, bạn có thể giảm tần số CPU xuống 80 MHz. Tất cả các chức năng vẫn hoạt động ở tốc độ đồng hồ này. Cuối cùng, bạn có thể kiểm tra "Bật bộ đồng xử lý công suất cực thấp (ULP). Cấu hình này làm cho mức tiêu thụ hiện tại đi từ khoảng một trăm mA đến khoảng ba mươi mA. Điều này vẫn còn quá nhiều…

ESP32 có thể xử lý giấc ngủ sâu. Chỉ có lõi năng lượng thấp đang bật và chờ đánh thức.

Xem liên kết này bên dưới để biết thêm chi tiết:

esp-idf.readthedocs.io/en/latest/api-refere…

Thật không may, trong phiên bản cuối cùng có sẵn của chuỗi công cụ esp-idf (3.0), lần đánh thức duy nhất có sẵn là do bộ hẹn giờ và do sự gián đoạn của GPIO. May mắn thay, Espressif hứa với chúng ta sẽ thức dậy BLE trong phiên bản tiếp theo (3.1).

Bạn cũng có thể đặt CC1101 ở chế độ nghỉ, bằng cách gửi SPI lệnh thích hợp để tắt nguồn thiết bị (xem biểu dữ liệu cc1101, lệnh SPWD, trang 51). Để đặt thiết bị ở chế độ ngủ hoặc để đánh thức thiết bị, bạn có thể đặt chốt Chọn chip của các chân SPI ở mức thấp rồi cao (thêm thông tin trong biểu dữ liệu).

Những cấu hình cuối cùng này sẽ có thể làm cho mức tiêu thụ của hệ thống vượt qua dưới mili-ampe…

Cuối cùng, để làm cho hệ thống hoạt động lâu nhất có thể mà không cần sạc lại, hoặc thậm chí đạt đến một tháng tự chủ, hãy chọn pin 3,7V với nhiều mili-ampe nhất mỗi giờ. Bằng cách đo mức tiêu thụ điện năng của hệ thống, với màn hình của máy phát điện hoặc ampe kế được kết nối nối tiếp trước cực + của hệ thống, bạn có thể ước tính thời gian mà hệ thống của bạn sẽ hoạt động!

Đề xuất: