资源简介
文档+代码,读取身份证UID方法和技术指导,熟悉NFC协议的专业人士可以下载,小白就不要凑热闹了。
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include “posapi.h“
#include “iso14443.h“
#include “hexdump.h“
int main(int argc char **argv)
{
int fd;
int retval;
uint8_t atqb_len;
uint8_t atqb[64];
uint8_t attrib_len;
uint8_t attrib[64];
uint8_t cid = 0x08; // CID
uint8_t fsdi = 0x08; // 256 buffer
uint8_t BRit = 0x00; // Baud rate 106kbps
uint8_t BRti = 0x00; // Baud rate 106kbps
const uint8_t readfile[] = {0x80 0xB0 0x00 0x00 0x20};
const uint8_t uidcmd[] = {0x00 0x36 0x00 0x00 0x08};
uint8_t txbuf[256] = {0x00 0xA4 0x00 0x00 0x02 0x60 0x02};
uint8_t rxbuf[256];
uint32_t txlen;
uint32_t rxlen;
uint32_t timeout = 5000;
printf(“Identification Card Test\n“);
/* OPEN */
printf(“Open: processing...\n“);
fd = mif_open(“/dev/nfc“);
if (fd < 0) {
printf(“Open: failed erron:%d %s\n“ errno strerror(errno));
goto exit_entry;
}
/* RESET */
iso14443_reset_picc(fd);
usleep(6*1000);
retval = mif_select_carrier_type(fd MIF_TYPE_B);
if(retval<0) {
printf(“mif_select_carrier_type ret:%d errno:%d\n“ retval errno);
goto close_exit_entry;
}
retval = iso14443_WupB(fd0x000x00 &atqb_len atqb);
if (retval) {
printf(“iso14443_WupB ret:%d errno:%d\n“ retval errno);
goto close_exit_entry;
}
printf(“ATQB:\n“);
hexdump(atqb atqb_len);
retval = iso14443_AttriB(fd cid fsdi &atqb[1] (BRit<<4) | BRti &attrib_len attrib);
if (retval) {
printf(“iso14443_AttriB ret:%d errno:%d\n“ retval errno);
goto close_exit_entry;
}
printf(“ATTRIB:\n“);
hexdump(attrib attrib_len);
/* APDU */
txlen = sizeof(uidcmd);
retval = iso14443_no_tcl_exchange(fd txlen uidcmd &rxlen rxbuf timeout);
if (retval) {
printf(“iso14443_no_tcl_exchange send uid cmd ret:%d errno:%d\n“ retval errno);
goto close_exit_entry;
}
printf(“txbuf:\n“);
hexdump(uidcmd txlen);
printf(“rxbuf:\n“);
hexdump(rxbuf rxlen);
txlen = 0x07;
retval = iso14443_no_tcl_exchange(fd txlen txbuf &rxlen rxbuf timeout);
if (retval) {
printf(“iso14443_no_tcl_exchange ret:%d errno:%d\n“ retval errno);
goto close_exit_entry;
}
printf(“txbuf:\n“);
hexdump(txbuf txlen);
printf(“rxbuf:\n“);
hexdump(rxbuf rxlen);
txlen = sizeof(readfile);
retval = iso14443_no_tcl_exchange(fd txlen readfile &rxlen rxbuf timeout);
if (retval) {
printf(“iso14443_no_tcl_exchange send uid cmd ret:%d errno:%d\n“ retval errno);
goto close_exit_entry;
}
printf(“txbuf:\n“);
hexdump(readfile txlen);
printf(“rxbuf:\n“);
hexdump(rxbuf rxlen);
close_exit_entry:
/* CLOSE */
close(fd);
exit_entry:
return 0;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2999 2017-05-06 10:05 code\main.c
文件 3634 2017-05-06 10:02 log.txt
文件 2864987 2017-05-06 10:01 第二代居民身份证管理号和序列号的读取设备及方法.pdf
文件 66720 2017-05-05 09:20 读取指令.png
目录 0 2017-05-06 10:06 code
----------- --------- ---------- ----- ----
2938340 5
- 上一篇:opencv视觉测距
- 下一篇:工作台设计内含装配,电路,零件,计算程序,说明书
相关资源
- 基于Qt和opencv的身份证号码识别系统
- 医院驾驶证体检使用普通身份证读卡
- 基于神经网络的身份证号码识别算法
- 精伦 idr210 基于BS模式的 ocx控件和接口
- 区号身份证手机号码归属地查询
- 精伦IDR210身份证阅读器,OCX控件
- 自定义键盘 身份证键盘
- 国腾二代身份证读卡器WEB控件OCX
- 身份证后六位。全国弱口令top1000常见
- 身份证号码检查(check_sfz)
- IDCardOCR_China 基于tesseract,实现摄像头
- 研腾身份证 浏览器扫描 最新开发包
- 精伦身份证阅读器通用二次开发SDK
- 一个最简单的二代身份证阅读器通用
- 身份证前6位对应城市代码大全
- 武汉精伦身份证阅读器的二次开发包
- 身份证号码校验程序.exe
- 使用Qt开发NFC应用.pdf
- 算身份证校验码.xls
- extractFromExcel.rar
- 浏览器使用华视读取身份证信息demo、
- Excel自定义函数_身份证号码校验
- 身份证识别
- rec_idc_二代身份证正面OCR.rar
- PN532 NFC RFID V3模块 开发板 支持和手机
- NFC 协议Analog/Digital/Activity/LLCP
- PN532工具V3.0老司机的店版本,nfc上位
- stm32-PN532串口驱动
- PM3官方windows GUI客户端软件
- 10、NFC技术:读写NFC标签中的文本数据
评论
共有 条评论