Mục lục:

Ví điện tử: 3 bước
Ví điện tử: 3 bước

Video: Ví điện tử: 3 bước

Video: Ví điện tử: 3 bước
Video: Hiện tượng mất tiền qua dịch vụ ví điện tử MoMo - Tin Tức VTV24 2024, Tháng sáu
Anonim
Ví điện tử
Ví điện tử

LƯU Ý: Bây giờ tôi có các Tài liệu hướng dẫn cung cấp mã Arduino cho RC522 và PN532.

Trong bài đăng trước, tôi đã trình bày chi tiết những điều cơ bản để giao tiếp với các mô-đun RFID MFRC522 và PN532 để đọc / ghi dữ liệu từ thẻ Mifare Classic 1k. Trong bài đăng này, tôi thực hiện thêm một bước nữa và chỉ ra cách sử dụng các mô-đun đó để tạo ví điện tử từ các thẻ. Như với bài trước, đây được trình bày như một cách triển khai cơ bản nhưng sẽ cung cấp nền tảng cho nhiều ứng dụng khác nhau yêu cầu chức năng tăng / giảm hoặc kiểm đếm.

Bước 1: Tính toàn vẹn của dữ liệu

Đối với một ví điện tử, luôn có mối lo ngại rằng ai đó có thể thêm các khoản tín dụng mà không trả tiền cho chúng. Cũng có một mối lo ngại rằng các tín dụng trên thẻ có thể vô tình bị hỏng trong quá trình ghi dữ liệu. Việc truy cập dữ liệu yêu cầu sử dụng khóa thẻ, vì vậy cần phải thay đổi khóa mặc định khi thẻ được khởi tạo lần đầu tiên. Có những bài báo trên mạng nói về cách hack thẻ ngay cả khi bạn không biết khóa nhưng kỹ thuật này không hề tầm thường. Tôi không khuyên bạn nên sử dụng các thẻ này cho tài khoản ngân hàng của bạn nhưng chúng đủ tốt cho nhiều ứng dụng ít rủi ro hơn.

Xác suất hỏng dữ liệu tương đối nhỏ nhưng phần mềm ít nhất phải có thể xử lý các trường hợp cơ bản. Quá trình này bao gồm hai bước với bước đầu tiên chỉ đơn giản là phát hiện tham nhũng. Trong dự án này được xử lý bằng cách lưu trữ cả giá trị tín dụng cũng như phần bổ sung của giá trị tín dụng. Điều đó cho phép so sánh các giá trị một cách đơn giản. Bước thứ hai là lưu trữ phiên bản dự phòng của cả giá trị tín dụng và phần bổ sung của nó. Điều đó cho phép hoạt động khôi phục nếu tập hợp tín dụng đầu tiên bị hỏng. Nếu cả hai bộ đều bị hỏng thì phần mềm sẽ cố gắng khởi động lại thẻ, dẫn đến mất tất cả các khoản tín dụng.

Bước 2: Phần cứng

Phần cứng
Phần cứng

Các kết nối phần cứng được hiển thị trong sơ đồ trên. Đây là thiết lập tương tự như bài trước với việc bổ sung hai công tắc và một điện trở kéo lên. Một công tắc không yêu cầu điện trở kéo lên vì nó nằm trên đầu vào PIC có khả năng kéo lên yếu được tích hợp sẵn. Trong thực tế, cả hai công tắc sẽ bị ẩn vì chúng được sử dụng để thêm tín dụng và khởi tạo thẻ. Việc chuyển đổi khởi tạo là tùy chọn (để thực hiện việc xóa tín dụng thủ công) vì phần mềm có thể tự phát hiện và khởi tạo một thẻ mới. Chân jumper có thể được sử dụng thay cho công tắc.

Bước 3: Phần mềm

Các bổ sung cho vòng lặp chính trong phần mềm đã được thực hiện để cho phép đọc hai công tắc và để phát hiện điều kiện yêu cầu khởi tạo thẻ. Như đã đề cập trong phần phần cứng, việc khởi tạo thẻ có thể được chỉ huy thủ công bằng một công tắc. Phần mềm cũng có thể ra lệnh khởi tạo thẻ trong hai trường hợp khác. Đầu tiên, nếu nó phát hiện một thẻ hoặc khu vực dữ liệu mới và thứ hai, nếu cả hai bộ dữ liệu tín dụng bị hỏng.

Việc xác thực các thẻ yêu cầu sử dụng "khóa A" cho lĩnh vực dữ liệu mục tiêu. Khóa mặc định cho các thẻ Mifare Classic 1k là “FF FF FF FF FF FF FF” nhưng nên được thay đổi cho ứng dụng của bạn. Phần mềm cung cấp định nghĩa cho cả khóa mặc định và khóa mới (“My_Key”). Chỉ cần cắm bất kỳ giá trị nào bạn muốn vào “My_Key”. Phần mềm luôn cố gắng xác thực thẻ trước bằng cách sử dụng “My_Key”. Nếu không thành công, thì quy trình khởi tạo thẻ sẽ được gọi và khóa mặc định được sử dụng để xác thực. Quy trình khởi tạo thay đổi khóa thành “My_Key” và đặt tín dụng thành 0. Nếu bạn có thẻ có khóa không phải mặc định và bạn không biết khóa đó là gì thì thẻ đó không thể được xác thực. Nếu điều này xảy ra, bạn có thể muốn kiểm tra các lĩnh vực dữ liệu khác bằng cách sử dụng khóa mặc định để xem liệu có sẵn hay không. Khối Đoạn giới thiệu, khối Dữ liệu và khối Sao lưu đều được xác định ở đầu danh sách phần mềm nên bạn có thể dễ dàng thay đổi chúng.

Định dạng cho dữ liệu được lưu trữ trong thẻ cho ứng dụng này chỉ sử dụng các số dương (không cho phép bị thâm hụt) và các giá trị được lưu trữ dưới dạng bốn byte BCD được đóng gói (Số thập phân được mã hóa nhị phân). Điều đó cho phép phạm vi tín dụng từ 0 đến 99, 999, 999 (hai chữ số trên mỗi byte). Giá trị tín dụng và phần bổ sung 1 của nó chỉ sử dụng 8 trong số 16 byte trong một khối dữ liệu duy nhất và phần còn lại được đệm bằng các số không. Có chỗ trong cùng một khối dữ liệu cho bản sao lưu nhưng tôi quyết định rằng sẽ an toàn hơn nếu đặt bản sao lưu vào một khối dữ liệu riêng biệt. Khối sao lưu nằm trong cùng khu vực với khối dữ liệu nên không cần xác thực riêng. Để an toàn hơn nữa, bạn có thể cân nhắc đặt bản sao lưu vào một khu vực dữ liệu khác nhưng sau đó sẽ cần một bước xác thực riêng để truy cập dữ liệu đó.

Khi đọc xong các tín chỉ, giá trị bổ sung cũng được đọc và sau đó hai giá trị này được so sánh với nhau. Nếu có sự không khớp, thì tập giá trị / phần bổ sung dự phòng sẽ được đọc và so sánh. Nếu chúng khớp nhau thì bản sao lưu được coi là đúng và được sử dụng để sửa dữ liệu bị hỏng. Nếu các bản sao lưu không khớp thì thẻ được coi là không hợp lệ và chúng tôi sẽ cố gắng khởi tạo lại thẻ.

Các giá trị tăng và giảm được xác định gần mặt trước của danh sách và dự kiến sẽ nằm trong BCD đóng gói. Các quy trình tăng và giảm một cách hiệu quả thực hiện như vậy trên một số 32 bit. Phép toán rất đơn giản nhưng yêu cầu sử dụng các quy trình để điều chỉnh kết quả cho việc mang trong mỗi byte BCD được đóng gói và từ byte này sang byte tiếp theo. Điều đó được thực hiện bằng cách sử dụng macro DAA (Phép cộng điều chỉnh thập phân) và DAS (Phép trừ điều chỉnh thập phân). Các macro này đảm bảo rằng mỗi chữ số BCD 4 bit luôn nằm trong phạm vi 0-9.

Ngoài các thông báo hiển thị trong bài đăng trước, ứng dụng này có các thông báo cho nhiều bước bổ sung - đặc biệt nếu có lỗi dữ liệu và / hoặc thẻ cần được sửa hoặc khởi tạo. Các khoản tín dụng cũng được hiển thị trước và sau một bước tăng / giảm để bạn có thể thấy các giá trị thay đổi.

Đó là nó cho bài đăng này. Kiểm tra các dự án điện tử khác của tôi tại: www.boomerrules.wordpress.com

Đề xuất: