使用NFC模拟校园卡门禁功能 【Mac, Windows, Android, 手环】
COVID-19期间,我们学校实行通行证制度,只有具有通行证的同学的卡才可以自由进出校园,他而没有通行证的人下人出校只能是一种奢望。在这种无理取闹的制度之下,我试想通过NFC模拟出那些可以自由进出的同学的校园卡,从而实现自由进出校园。其实这个想法已经有人做了,使用手机自带的nfc模拟校园卡,是可以实现门禁进出功能的。经过实际测试,一下方案是可行的:
- 使用带NFC功能手机模拟
- NFC读卡器 + 白卡
- 带NFC功能手机+手环 or NFC 读卡器+白卡+手环
首先第一种,使用带nfc功能的手机模拟,这个是最简单的,只需要打开手机的钱包/卡包app然后模拟门禁卡读取需要复制的卡即可,这样每次进学校大门的时候直接刷手机进来就行。
然而对于手机不带NFC功能的手机,譬如我的就是,就比较难搞了。此外,使用手机NFC模拟不具有可拓展性,一台手机只能当作一张卡片使用,如果需要多张卡片就需要多个手机了。因此我们的解决方案是通过复制白卡来实现制作门禁卡,白卡复制不存在可拓展性这个问题。首先自己购买白卡,然后先读校园卡,再将其写入白卡。我们知道每一张卡都有唯一的ID,这个ID在门禁识别的时候用到。接下里本文的所有操作遵循1.读卡获取卡片ID ;2.将ID写入白卡。通过这两步,就得到了和原来的卡ID一模一样的卡,这个卡就可以拿来刷进校门了。
根据读卡,写卡的媒介不同,可以分为三种平台,win,mac,和手机&手环这些。根据卡片的类型不同,可以分为UID,CUID,M1,CPU卡。
卡片类型介绍:
- M1卡:全称Mifare classic 1K,普通IC卡,0扇区不可修改,其他扇区可以反复擦写。通常我们使用的门禁卡、电梯卡都是M1卡。M1卡是NXP(恩智浦半导体)公司研发的IC卡,执行标准是ISO/IEC14443 Type A,读写频率是13.56MHz。目前大多数手机厂商使用的NFC芯片都是NXP,另一部分则是BRCM(博通)方案,均执行同一标准,这是手机读写M1卡的技术基础。
- UID卡:普通复制卡,可以反复擦写所有扇区,门禁有防火墙则失效。
- CUID:升级复制卡,可以反复擦写所有扇区,可以穿透大部分防火墙。【我们的白卡是购买此种类型的卡】
- CPU卡:有操作系统,可存储数据,也有自己的ID号,CPU卡发一串数据给设备,设备与SAM卡进行运算,设备再发一串数据回CPU卡确认,然后进行交易或身份认证;跟M1卡的区别在于一个算法在空中,一个算法在设备里面;无论是卡商,设备商,运营商,都不知道其中的算法,所以这个系统的安全性会高很多。【校园卡等大多数具有金融功能的卡属于此种类型】
目前,大多数校园卡为CPU卡,也就是加密级别最高的卡。好在,金融扇区和门禁ID扇区是分开的,这使得我们可以通过复制卡片的ID来实现门禁功能。
根据不同平台,其复制校园卡的难度排序是
Mac > Win > 手机写卡> 手机模拟,手环模拟
平台
- Win
- Mac OS X
- Android&手环
卡片类型
- UID
- CUID
- M1
- CPU
读卡器
- PN532 【for mac and windows】
该读卡器从某宝购入,附赠两个这种白卡,一共花费¥63。又额外买了10张CUID白卡,长下面这个样子,约¥1/张。
- PN532 【for mac and windows】
1. 使用Mac进行NFC读写
【GUI 工具】
现存的针对Mac平台的NFC读写软件较少,我只找到了这两个GUI程序,但是这两个软件都连接不上我的PN532读卡器,遂作罢。查看App Store上的说明看到,这两个工具均不支持PN532,但是支持另一个非常常用的读卡器ACR122U。我手头上没有对应的读卡器,所以这条路走不通了。(以后可以考虑再买一个ACR122U)【Command Line Tools or 读写API】
考虑使用命令行工具,或者是用对应的API来读写NFC。
在网上搜索,使用关键词Mac NFC百度搜索,得到的结果都是用iPhone来做的??难道Mac == IPhone了??后来找到了一篇记录: 记Macbook Pro配合FT232使用PN532模块,算是中文互联网上位数不多的经验贴了,跟着这位兄弟一点点搭建好了需要的依赖库。硬件连接:MBP2019 雷电3 接口-> type-c 转USB3.0拓展坞->USB连接PN532
驱动Driver ?
软件需求: libusb -> libnfc ,mfoc ,mfcuk
- 安装Libusb
- 官网 https://libusb.info/,GitHub:https://github.com/libusb/libusb
- 安装方法一: 从官网或者是GitHub下载源代码->解压->进入包目录 ->依次执行
$ ./configure ->$ make ->$ make install
- 即
$ ./configure&&make&&make install
- 即
- 安装方法二:Homebrew安装
- 直接
$ brew install libusb
- 刚开始的时候执行这个命令报错:
Error: libusb: undefined method `license' brew install
在这里找到了解决方案,出现这个原因说明当前brew版本太老了,只需要更新一下,brew update -v
,执行两次这个命令,然后再brew install libusb
就成功了。
- 直接
- 注1: 这里推荐使用homebrew安装,接下来的几个也是推荐brew。
- 注二:一个问题,我第一次使用的是源代码编译安装,最后
$ make install
也都成功了。但是执行下一步的时候提示libusb.h头文件找不到,header not found.第二遍安装使用的是$ brew install libusb安装,就没有这个问题出现,可见,使用brew可以轻松的安装配置各种包,不需要自己对各种环境配置揪心。所以强烈建议使用homebrew安装。
- 安装Libnfc
- 官网 http://www.libnfc.org/,GitHub :https://github.com/nfc-tools/libnfc
- 安装方法同样两种,一样的操作
- 安装方法一:官网或者GitHub下载源代码,解压,进入目录,依次执行
$ ./configure ->$ make ->$ make install
- 安装方法二:
$ brew install libnfc
- 安装mfoc
- GitHub:https://github.com/nfc-tools/mfoc
- 安装方法一:参见GitHub readme,
$ autoreconf -is
[注:这里需要安装autoreconf,方法$brew install automake
]
$./configure
$ make && sudo make install
- 执行
$./configure
时报错如下:PKG_CHECK_MODULES(libnfc, libnfc >= $LIBNFC_REQUIRED_VERSION, , AC_MSG_ERROR([libnfc >= $LIBNFC_REQUIRED_VERSION is mandatory.]))
,没有找到解决办法,这里有一个解释。最后采用了homebrew安装。 - 安装方法二:homebrew安装
$ brew install mfoc
- 安装mfcuk
- 放弃源代码安装,直接homebrew安装
$ brew install mfcuk
- 放弃源代码安装,直接homebrew安装
- 安装Libusb
至此,所有软件已经安装完毕,此时进入终端输入nfc-list,即可查看当前的卡片信息
可以看到这张卡的SAK是20,这意味着我这张卡是一张CPU卡,我们需要的东西即是这个UID。
使用nfc-mfcassic 命令可以读写卡。但是在后续的写卡过程中遇到两个严重的问题:
- nfc写入不进去
不知怎么地,写入命令可以正常执行,没有报错,但是却没有写入。卡片的ID还是之前的。不知为何。 - 大端小端问题
可以后续对dump文件进行编辑的过程中,可能由于大小端问题,编辑的文件总是不对。这个dump文件就是这张卡的1K字节的二进制文件,前4个字节是UID,第5个字节是校验字节,其值是UID四个字节的异或值。我们只需要修改这5个字节,其他的不需要改动。
2.使用Windows进行读写
使用Windows相对较为简单,相关的经验贴也有很多,出现问题大多数也都能找得到解决方案。首先是软件,读卡器软件链接 :https://pan.baidu.com/s/1DQVDdLNUirx33kr18j7EEw 提取码:0rkw,这个是我在淘宝店买读卡器赠送的。这个文件里面包含了很多细节,里面描述的很清楚,在这里就不再赘述了,按照里面的来一般不会有问题。
使用步骤:
1.准备工作
- 硬件连接: PN352直接插上USB口即可
- 软件准备
- 安装驱动 : 参照文件
- 安装读写工具 NFC reader
这里我建议使用教程与软件/增值资料/PN532工具V3.0_crack.exe
这一个来安装,使用NFC REA 3.0
这一个读取不到CPU卡的UID,因此后续无法使用,如果你的卡是普通的M1卡,则可以使用这一个软件。
2.读卡 : 使用该读写软件的玩转NFC,再扫描卡片类型,就可以看到这张卡片的信息来,可以看到UID,为4个字节。这就是我们费劲千辛万苦需要的东西!
3.写白卡
准备一张白卡,读白卡,点扇区左边
使用NFC模拟校园卡门禁功能 【Mac, Windows, Android, 手环】相关推荐
- android beam小米,小米手机自定义空白卡模拟加密卡门禁卡教程
小米手机自定义空白卡模拟加密卡门禁卡教程,使用MIUI自带门卡模拟功能,并尝试烧录完整数据,不依赖任何第三方软件.不会对系统做什么恶,意,修,改,也不会对其他依赖NFC的服务(小米公交.Mi Pay银 ...
- android 自定义空白,小米手机自定义空白卡模拟加密卡门禁卡教程
小米手机自定义空白卡模拟加密卡门禁卡教程,使用MIUI自带门卡模拟功能,并尝试烧录完整数据,不依赖任何第三方软件.不会对系统做什么恶,意,修,改,也不会对其他依赖NFC的服务(小米公交.Mi Pay银 ...
- esp8266单片机透传_基于WeMos D1(ESP8266)的校园卡门禁系统
刷卡https://www.zhihu.com/video/1107591334902345728 电脑端控制https://www.zhihu.com/video/11075913630797332 ...
- id nfc模拟_手机NFC也可以刷ID卡门禁?无聊测试居然成功了
前段时间换了个K20pro,有NFC功能后手又痒了,就想折腾一下NFC的日常使用. 小区的门禁前几个月刚换成了亲邻开门,可以用微信小程序开门,但每次都要拿手机出来点几下(特别是手机提着东西的时候),还 ...
- iqooz1手机能搭载鸿蒙吗,iQOOZ1有NFC功能吗?iQOO Z1支持NFC刷公交卡与门禁卡吗
iQOOZ1有NFC功能吗?随着NFC实现了对于公交卡.门禁卡.银行卡等功能的支持,它已经成为了手机中必不可少的功能之一.作为iQOO Z系列的第一款产品,iQOO Z1在硬件创新.交互变革方面有着很 ...
- rfid sim卡 android,RFID-SIM卡门禁系统方案介绍:原理,参数,功能..
原标题:RFID-SIM卡门禁系统方案介绍:原理,参数,功能.. RFID-SIM卡门禁系统方案原理 用户将持有RFID-SIM卡的手机接近多奥RFID-SIM卡门禁系统读头,同时将RFID-SIM卡 ...
- 防复制防破解小区门禁梯控升级非联网CPU卡脱机写卡门禁梯控一卡通系统92HID623CPU V5.00操作说明之软件功能说明
1.软件概述 防复制防破解小区门禁梯控升级非联网CPU卡脱机写卡门禁梯控一卡通系统92HID623CPU V5.00版可同时管理门禁系统和梯控系统,门禁系统设备有嵌入式.一体式.分体式,主要设置控制设 ...
- Android使用NFC模拟IC卡
前言:前几天不知道老板出于什么原因居然给我们研发部门安装了门禁,只有我们研发部的人员使用员工卡才能进出,每天上下班携带员工卡着实不太方便,于是想着动了点歪脑筋... NFC是在RFID的基础上发展而来 ...
- Android使用NFC模拟M卡实现 (二)
Android使用NFC模拟M卡实现 (一) Android使用NFC模拟M卡实现 (二) Android使用NFC模拟M卡实现 (三) 前几天写的第一篇关于NFC的官方文档的翻译,今天才更新第二篇. ...
最新文章
- swift 闭包的使用
- 精美UI版iApp对接hybbs论坛功能APP源码
- php complex,PHP復雜的基於角色的訪問控制列表
- wordpress专属线报网主题模板
- Spring @RequestMapping 注解原理
- Linux kernel ‘aac_send_raw_srb’函数输入验证漏洞
- latex normal是几号字_Latex之字体 | 学步园
- 微信公众号注册时提示该主体注册数量已超过上限怎么办?
- Uiautomator2 GitHub文档转载
- 全国职业院校技能大赛网络搭建与应用赛项——云平台底层的一些命令
- 快速学习nodejs系列:微信公众号开发一之环境准备
- Mac 安卓投屏Scrcpy使用
- GPS北斗模块串口助手输出测试
- Tableau图表 • 蝴蝶图
- 汉字动图动态图gif格式,无水印 4500个汉字
- 15 个 “高效实用” 的Python工具库!
- kindeditor图片上传 jsp版
- 编译与调试以及makefile
- windows11右下角小地球,可以正常上网,但显示无法访问internet
- python查询手机号信息
热门文章
- 2021乐平四中高考成绩查询,喜报!乐平高考成绩出炉!2019再创佳绩!!
- 接口技术课程设计——一种基于MFC构造自动测量系统
- GNSS CORS站观测值数据FTP下载
- ANSYS APDL学习(8):选取全部的封闭曲面生成实体(体积)的命令流讲解
- 详解安卓Gravity的进制封装
- 步步为营 .NET 代码重构学习笔记 二、提炼方法(Extract Method)
- Filter Listener
- □ 影片名:《武大郎版大长今》(9225) 在线播放
- python怎么使用库里的pi_python怎么调用pi
- 【stm32入门】第二天环境搭建、RCC时钟、GPIO、闪烁实验与有源蜂鸣器实验
- android beam小米,小米手机自定义空白卡模拟加密卡门禁卡教程