1. 程式人生 > >用PN532對RFID進行讀寫和複製(附winfrom軟體)

用PN532對RFID進行讀寫和複製(附winfrom軟體)

1、前言

通過本文你可以瞭解到PN523的通訊協議,並且能夠對RFID卡進行讀寫和複製操作。這裡不會深度探討理論,而是重點展示如何使用。

2、PN523串列埠通訊協議

2.1 喚醒模組

按照模組的文件來看,在每次上電的時候需要喚醒,讓他退出休眠模式。
對其傳送:

55 55 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF 03 FD D4 14 01 17 00

將會收到回覆

00 00 FF 00 FF 00 00 00 FF 02 FE D5 15 16 00

這幀沒啥變化,就不進行解析了

2.2掃描卡

先舉例一幀資料

00 00 FF 04 FC D4 4A 01 00 E1 00

其中 00 00 FF 04 FC 屬於包頭

資料 說明
00 00 FF 固定頭
04 資料包長度
FC 包長度校驗(04+FC=0X10)

其中 D4 4A 01 00 屬於資料包

資料 說明
D4 4A 指令標識碼
01 尋卡數量
00 通訊速率 106kbps

其中E1 00 屬於包尾

資料 說明
E1 校驗(0x100-(0xD4+0x4A+0x01+0x00))
00 固定尾巴

傳送之後模組會回覆兩幀,一幀是應答,一幀是回覆

00 00 FF 00 FF 00 
00 00 FF 0C F4 D5 4B 01 01 00 04 08 04 94
8A 3B 0B 6A 00
資料 說明
00 00 FF 固定頭
0C 資料包長度
F4 包長度校驗
D5 4B 指令的標識碼(是主機發送的指令 加 1,主機發的 D4 AA,回 D5 4B)
01 目標卡 1
01 找到目標卡的數量
00 04 Mifare S50 卡,00 44是UltraLight卡
08 卡的容量 08=1K
04 UID 的位元組數
94 8A 3B 0B 卡的 UID
6A (0X100—累加和)校驗
00 包尾

2.3 授權

這裡就是對資料包進行修改,完整請求如下:

00 00 FF F F1 D4 40 01 60 03 FF FF FF FF FF FF C8 70 47 E9 26 0

上文討論過的包頭包尾去掉,僅僅看資料包

D4 40 01 60 03 FF FF FF FF FF FF C8 70 47 E9
資料 說明
D4 40 命令格式
01 資料大於6位元組這裡為1
60 驗證密碼A(命令位元組,具體含義見下表)
03 在第三塊儲存密碼
FF FF FF FF FF FF 密碼
94 8A 3B 0B UID

命令類別

資料 說明
0x60 / 0x61 Authentication A / Authentication B
0x30 16 bytes reading
0xA0 16 bytes writing
0xA2 4 bytes writing
0xC1 Incrementation
0xC0 Decrementation
0xB0 Transfer
0xC2 Restore

返回幀資料:

00 00 FF 03 FD D5 41 00 EA 00

這裡只關注 D5 41 00中的最後一位,如果是00則表示驗證成功。
補充說明一下,上面舉例幀是驗證的塊3,也就是我們僅能對扇區0進行操作,如何想對其他塊操作需要先進行授權喲,但是UltraLight卡不需要授權就可以直接讀寫。

2.4 讀

同樣首先來看一幀完整請求

00 00 FF 05 FB D4 40 01 30 02 B9 00

其中資料包是D4 40 01 30 02

資料 說明
D4 40 命令格式
01 資料大於6位元組這裡為1
30 命令字,讀16位元組資料
02 從第二塊開始讀

返回兩幀資料

00 00 FF 00 FF 00

00 00 FF 13 ED D5 41 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 72 00

提取資料幀

D5 41 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
資料 說明
D5 41 命令格式
00 成功
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 讀取結果

2.5 寫

完整請求

00 00 FF 15 EB D4 40 01 A0 02 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F D1 00

資料

D4 40 01 A0 02 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
資料 說明
D4 40 命令格式
01 大於 6 位元組
A0 16位元組寫資料指令
02 往第 02 塊寫
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 寫入資料

返回資料:

00 00 FF 03 FD D5 41 00 EA 00

D5 41 返回的指令標示符,00 說明寫入成功

3、M1卡、UID卡和UltraLight卡

MI卡的0塊是儲存UID的不能進行修改,也就是如果你想複製什麼卡的話,最好不要選用M1卡,而是選擇能夠修改任何位置的UID卡。UltraLight卡是沒有密碼的,並且每塊大小隻有四個位元組,也就是在寫入的時候選擇命令請選擇0xA2來寫哦。

4、使用軟體進行讀寫

這裡簡單介紹下使用上位機軟體進行讀寫卡的操作
這裡寫圖片描述
首先將你的模組和串列埠模組連線,然後把串列埠模組插上電腦,再開啟軟體。之後按照2-3-4的點就好了,UltraLight的話是點不動4的。

這裡寫圖片描述
這時就可以進行讀寫操作咯,讀和寫的右邊都有一個下拉選單,用來選擇讀寫的塊,我只寫了前面幾個塊,並且沒有給輸入功能。讀一次讀16個位元組,無論哪種卡都是這樣,但是寫會根據卡的不同,寫入16位元組或是4位元組。卡的型別在左下角可以看到。例如我對塊2進行寫和讀,額對了,授權哪裡我只對第一個扇區授權了,之後軟體版本迭代會弄個下拉框的。。。忘記了 - -|.
下面三個圖分別是,先讀塊2,寫塊2,再讀塊2
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述

5、使用軟體進行復制

這裡是使用網上別人編寫的程式進行復制,介面如下

這裡寫圖片描述
先點選PN532來串列埠連線,然後點選讀整卡來把M1卡所以類容讀取出來,讀取出來後點擊左邊的三角可以儲存。
這裡寫圖片描述
將讀取的檔案儲存起來,換一個白卡後,再點選寫整卡
這裡寫圖片描述

就可以複製卡的類容了,但是0塊由於是UID的位置M1卡是不能被改寫的,如果你需要複製門禁卡的話,可以寫在UID卡里面而不是M1卡,價格十幾塊錢20張的樣子。

6、下載

相關推薦

PN532RFID進行複製winfrom軟體

1、前言 通過本文你可以瞭解到PN523的通訊協議,並且能夠對RFID卡進行讀寫和複製操作。這裡不會深度探討理論,而是重點展示如何使用。 2、PN523串列埠通訊協議 2.1 喚醒模組 按照模組的文件來看,在每次上電的時候需要喚醒,讓他退出休眠模

【Python】pythonexcel進行

Description 0014 :純文字檔案 student.txt為學生資訊, 裡面的內容(包括花括號)如下所示: { "1":["張三",150,120,100], "2":["李四",90,99,95], "3":[

IO練習FileReaderWriter檔案進行

package aa; import java.io.*; public class aaa {     public static void main(String[] args) throws IOException {         File file=new Fi

分別使用(字元流)(位元組流)檔案進行操作

一.使用(字元流)對檔案進行讀寫操作/* * 使用字元流對檔案進行讀寫操作 */ import java.io.BufferedReader; import java.io.FileInputSt

linux c通過檔案描述符以及writeread方法檔案進行

1、write和read方法講解 #include<unistd.h> ssize_t read(int fd, void *buf,size_t count); fd為檔案描述符,buf

Python—Excel進行操作

href ace 需要 文件中 tle net 過程 ova 設置 學習Python的過程中,我們會遇到Excel的讀寫問題。通過搜索得知,我們可以使用xlwt module將數據寫入Excel表格,使用xlrd module從Excel讀取數據。下面介紹如何實現使用pyt

Office加載項Excel進行操作

ted 是否 nta 文字 個人 asc log account col 轉載自我的個人主頁 前言 在開發ExcelWeb插件的時候,一大亮點就是可以在web項目中操作Excel,讀取Excel的內容,也可以將服務端的數據寫入的 Excel中,大大方便的用戶使用Excel

如何使用x86彙編硬碟進行

  硬碟讀寫的基本單位是扇區。就是說,要讀就至少讀一個扇區,要寫就至少寫一個扇區,不可能僅讀寫一個扇區中的幾個位元組。這樣一來,就使得主機和硬碟之間的資料交換是成塊的,所以硬碟是典型的塊裝置。      從硬碟讀寫資料,最經典的方式是向硬碟控制器分別傳送磁頭號、柱面號和扇區

Office載入項Excel進行操作

轉載自我的個人主頁 前言 在開發ExcelWeb外掛的時候,一大亮點就是可以在web專案中操作Excel,讀取Excel的內容,也可以將服務端的資料寫入的 Excel中,大大方便的使用者使用Excel,提高工作效率 Ranges Ranges表示Excel的區域,例如一個單元格的區域是=A1,多個單元格的

JavaHWPFDocument03word進行插入表格內容

import org.apache.poi.hwpf.HWPFDocument; import org.apache.poi.hwpf.usermodel.Range; import org.apach

redis基礎簡介- jedis使用管道pipelineredis進行使用hmset、hgetall測試

一般情況下,Redis Client端發出一個請求後,通常會阻塞並等待Redis服務端處理,Redis服務端處理完後請求命令後會將結果通過響應報文返回給Client。這有點類似於HBase的Scan,通常是Client端獲取每一條記錄都是一次RPC呼叫服務端。在Redis中,有沒有類似HBase Scan

LinuxC程式設計之IO-通過lseek檔案進行

1.相關API 通過lseek對檔案進行讀寫 1)open函式 int open(const char *pathname, int flags); int open(const char *pathname, int flags, mode_t mode); 2)re

mysql 命令列檔案進行操作

首先在mysql中,使用如下指令: secure_file_priv後面跟著的路徑就是我們進行檔案操作的路徑: 檔案讀入: 將要讀的檔案放在上述路徑中, 使用如下指令: mysql> load data infile'c:/ProgramData/MySQL/My

使用C#Excel進行操作NPOI以及使用EFMysql進行CURD

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq;

linux程式設計——FIFO進行操作第十三章

4.對FIFO進行讀寫操作 使用O_NONBLOCK模式會影響的對FIFO的read和write呼叫. 對一個空的,阻塞的FIFO(即沒有用O_NONBLOCK標誌開啟)的read呼叫將等待,直到有資料可以讀時才繼續執行.與此相反,對一個空的,非阻塞的FIFO的read呼叫

Java建立一個text文字檔案,並進行操作

package test; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileReader; import java.

通過位元組流來檔案進行操作

import java.io.*; public class OutPutStreamDemo01 { public static void main(String[] args) throws

C++檔案進行操作

1、 定義資料流物件指標 對檔案進行讀寫操作首先必須要定義一個數據流物件指標,資料流物件指標有三種類型,它們分別是: Ifstream:表示讀取檔案流,使用的時候必須包含標頭檔案“ifstream”; Ofstream:表示檔案寫入流,使用的時候必須包含標頭檔案“ofstr

使用CFile類檔案進行

CFile類提供了對檔案進行開啟,關閉,讀,寫,刪除,重新命名以及獲取檔案資訊等檔案操作的基本功能,足以處理任意型別的檔案操作 一個讀寫檔案的例子:檔案I/O   雖然使用CArchive類內建的序列化功能是儲存和載入永續性資料的便捷方式,但有時在程式中需要對檔案處理過程擁有更多的控制權,對於這種檔案輸入輸

Keras進行字型識別MNIST資料集

資料 首先載入資料 from keras.datasets import mnist (train_images, train_labels), (test_images, test_labels) = mnist.load_data() 接下來,看