- 浏览: 2180930 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (1240)
- mac/IOS (287)
- flutter (1)
- J2EE (115)
- android基础知识 (582)
- android中级知识 (55)
- android组件(Widget)开发 (18)
- android 错误 (21)
- javascript (18)
- linux (70)
- 树莓派 (18)
- gwt/gxt (1)
- 工具(IDE)/包(jar) (18)
- web前端 (17)
- java 算法 (8)
- 其它 (5)
- chrome (7)
- 数据库 (8)
- 经济/金融 (0)
- english (2)
- HTML5 (7)
- 网络安全 (14)
- 设计欣赏/设计窗 (8)
- 汇编/C (8)
- 工具类 (4)
- 游戏 (5)
- 开发频道 (5)
- Android OpenGL (1)
- 科学 (4)
- 运维 (0)
- 好东西 (6)
- 美食 (1)
最新评论
-
liangzai_cool:
请教一下,文中,shell、C、Python三种方式控制led ...
树莓派 - MAX7219 -
jiazimo:
...
Kafka源码分析-序列5 -Producer -RecordAccumulator队列分析 -
hp321:
Windows该命令是不是需要安装什么软件才可以?我试过不行( ...
ImageIO读jpg的时候出现javax.imageio.IIOException: Unsupported Image Type -
hp321:
Chenzh_758 写道其实直接用一下代码就可以解决了:JP ...
ImageIO读jpg的时候出现javax.imageio.IIOException: Unsupported Image Type -
huanghonhpeng:
大哥你真强什么都会,研究研究。。。。小弟在这里学到了很多知识。 ...
android 浏览器
一般来说,基于MifareClassic的射频卡,一般内存大小有3种:
对于所有基于MifareClassic的卡来说,每个区最后一个块叫Trailer,16个byte, 主要来存放读写该区的key,可以有A,B两个KEY,每个key长6byte,默认的key一般是FF 或 0,最后一个块的内存结构如下:
Block 0 Data 16bytes
Block 1 Data 16 bytes
Block 2 Data 16 bytes
Block 3 Trailer 16 bytes
Trailer:
Key A: 6 bytes
Access Conditions: 4 bytes
Key B: 6 bytes
M1卡分为16个扇区,每个扇区由4块(块0、块1、块2、块3)组成,(我们也将16个
扇区的64个块按绝对地址编号为0~63,)
第0扇区的块0(即绝对地址0块),它用于存放厂商代码,已经固化,不可更改。 每个扇区的块0、块1、块2为数据块,可用于存贮数据。 每个扇区的块3为控制块,包括了密码A、存取控制、密码B。具体结构如下:
每个扇区的密码和存取控制都是独立的,可以根据实际需要设定各自的密码及存取控制; 存取控制为4个字节,共32位,扇区中的每个块(包括数据块和控制块)的存取条件是由密码和存取控制共同决定的。
工作原理:
读写器向M1卡发一组固定频率的电磁波,卡片内有一个LC串联谐振电路,其频率与读写器发射的频率相同,在电磁波的激励下,LC谐振电路产生共振,从而使电容内有了电荷,在这个电容的另一端,接有一个单向导通的电子泵,将电容内的电荷送到另一个电容内储存,当所积累的电荷达到2V时,此电容可做为电源为其它电路提供工作电压,将卡内数据发射出去或接取读写器的数据。
Android 读写M1卡
先了解一下MifareClassic协议
在 android sdk 的文档中,描述道 “all MifareClassic I/O operations will be supported, andMIFARE_CLASSIC NDEF tags will also be supported. In either case, NfcA will also be enumerated on the tag, because all MIFARE Classic tags are also NfcA.” 所以说NFCA协议是兼容MifareClassic 协议的, 我们可以通过NfcA在android的相关类来处理基于MifareClassic 的RFID卡。
读M1卡代码:
写M1卡代码:
- 1K: 16个分区(sector),每个分区4个块(block),每个块(block) 16个byte数据
- 2K: 32个分区,每个分区4个块(block),每个块(block) 16个byte数据
- 4K:64个分区,每个分区4个块(block),每个块(block) 16个byte数据
对于所有基于MifareClassic的卡来说,每个区最后一个块叫Trailer,16个byte, 主要来存放读写该区的key,可以有A,B两个KEY,每个key长6byte,默认的key一般是FF 或 0,最后一个块的内存结构如下:
Block 0 Data 16bytes
Block 1 Data 16 bytes
Block 2 Data 16 bytes
Block 3 Trailer 16 bytes
Trailer:
Key A: 6 bytes
Access Conditions: 4 bytes
Key B: 6 bytes
M1卡分为16个扇区,每个扇区由4块(块0、块1、块2、块3)组成,(我们也将16个
扇区的64个块按绝对地址编号为0~63,)
第0扇区的块0(即绝对地址0块),它用于存放厂商代码,已经固化,不可更改。 每个扇区的块0、块1、块2为数据块,可用于存贮数据。 每个扇区的块3为控制块,包括了密码A、存取控制、密码B。具体结构如下:
A0A1A2 A3 A4 A5 | FF 07 8069 | B0 B1 B2 B3 B4 B5 |
密码A(6字节) | 存取控制(4字节) | 密码B(6字节) |
每个扇区的密码和存取控制都是独立的,可以根据实际需要设定各自的密码及存取控制; 存取控制为4个字节,共32位,扇区中的每个块(包括数据块和控制块)的存取条件是由密码和存取控制共同决定的。
工作原理:
读写器向M1卡发一组固定频率的电磁波,卡片内有一个LC串联谐振电路,其频率与读写器发射的频率相同,在电磁波的激励下,LC谐振电路产生共振,从而使电容内有了电荷,在这个电容的另一端,接有一个单向导通的电子泵,将电容内的电荷送到另一个电容内储存,当所积累的电荷达到2V时,此电容可做为电源为其它电路提供工作电压,将卡内数据发射出去或接取读写器的数据。
Android 读写M1卡
先了解一下MifareClassic协议
在 android sdk 的文档中,描述道 “all MifareClassic I/O operations will be supported, andMIFARE_CLASSIC NDEF tags will also be supported. In either case, NfcA will also be enumerated on the tag, because all MIFARE Classic tags are also NfcA.” 所以说NFCA协议是兼容MifareClassic 协议的, 我们可以通过NfcA在android的相关类来处理基于MifareClassic 的RFID卡。
读M1卡代码:
protected void onResume() { super.onResume(); //得到是否检测到ACTION_TECH_DISCOVERED触发 if (NfcAdapter.ACTION_TECH_DISCOVERED.equals(getIntent().getAction())) { // 3) Get an instance of the TAG from the NfcAdapter Tag tagFromIntent = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG); // 4) Get an instance of the Mifare classic card from this TAG // intent mfc = MifareClassic.get(tagFromIntent); if (mfc != null) { Toast.makeText(this, "检测到卡片,读卡中。。。", Toast.LENGTH_SHORT).show(); try { mfc.connect(); boolean auth = false; auth = mfc.authenticateSectorWithKeyA(15,"passwo".getBytes());// 验证密码 if (auth) { card_number_edittext.setText(new String(mfc.readBlock(60)));// 读取M1卡的第60块即15扇区第0块 } }catch(Exception e){ if (BuildConfig.DEBUG) {e.printStackTrace();} } } } }// End of method
写M1卡代码:
try { mfc.connect(); boolean auth = false; short sectorAddress = 1; auth = mfc.authenticateSectorWithKeyA(sectorAddress,MifareClassic.KEY_DEFAULT); if (auth) { // the last block of the sector is used for KeyA and KeyB cannot // be overwritted mfc.writeBlock(4, "1383838438000000".getBytes());// 必须为16字节不够自己补0 mfc.close(); Toast.makeText(MainActivity.this,"写入成功", Toast.LENGTH_SHORT).show(); } }catch(Exception e){ e.printStackTrace(); }finally { try { mfc.close(); }catch (IOException e) { e.printStackTrace(); } }
发表评论
-
带你深入理解 FLUTTER 中的字体“冷”知识
2020-08-10 23:40 612本篇将带你深入理解 Flutter 开发过程中关于字体和文 ... -
Flutter -自定义日历组件
2020-03-01 17:56 1087颜色文件和屏幕适配的文件 可以自己给定 import ... -
Dart高级(一)——泛型与Json To Bean
2020-02-23 19:13 977从 Flutter 发布到现在, 越来越多人开始尝试使用 Da ... -
flutter loading、Progress进度条
2020-02-21 17:03 1132Flutter Progress 1 条形无固定值进度条 ... -
Flutter使用Https加载图片
2020-02-21 01:39 983Flutter使用Https加载图片 使用http加载图片出 ... -
flutter shared_preferences 异步变同步
2020-02-21 00:55 827前言 引用 在开发原生iOS或Native应用时,一般有判断上 ... -
Flutter TextField边框颜色
2020-02-19 21:31 911监听要销毁 myController.dispose(); T ... -
flutter Future的正确用法
2020-02-18 21:55 788在flutter中经常会用到异步任务,dart中异步任务异步处 ... -
记一次Flutter简单粗暴处理HTTPS证书检验方法
2020-02-18 14:13 921最近在做Flutter项目到了遇到一个无解的事情,当使用Ima ... -
flutter 获取屏幕宽度高度 通知栏高度等屏幕信息
2019-07-27 08:39 1307##MediaQuery MediaQuery.of(con ... -
关于flutter RefreshIndicator扩展listview下拉刷新的问题
2019-07-10 19:40 1058当条目过少时listview某些嵌套情况下可能不会滚动(条目 ... -
flutter listview 改变状态的时候一直无限添加
2019-07-10 16:01 721setstate的时候会一直无限的调用listview.bui ... -
Flutter Android端启动白屏问题的解决
2019-07-09 00:51 1478问题描述 Flutter 应用在 Android 端上启动时 ... -
Flutter中SnackBar使用
2019-07-08 23:43 742底部弹出,然后在指定时间后消失。 注意: build(Bui ... -
Flutter 之点击空白区域收起键盘
2019-07-08 18:43 1759点击空白处取消TextField焦点这个需求是非常简单的,在学 ... -
Flutter 弹窗 Dialog ,AlertDialog,IOS风格
2019-07-08 18:04 1349import 'package:flutter/mate ... -
flutter ---TextField 之 输入类型、长度限制
2019-07-08 14:30 2288TextField想要实现输入类型、长度限制需要先引入impo ... -
【flutter 溢出BUG】键盘上显示bottom overflowed by 104 PIXELS
2019-07-08 11:13 1520一开始直接使用Scaffold布局,body:new Colu ... -
解决Flutter项目卡在Initializing gradle...界面的问题
2019-07-07 12:53 842Flutter最近很火,我抽出了一点时间对Flutter进行了 ... -
关于android O 上 NotificationChannel 的一些注意事项
2019-07-04 11:47 921最近在适配android O,遇到个问题,应用中原本有设置界面 ...
相关推荐
在Android设备中,NFC芯片集成在主板上,与天线一起构成完整的NFC模块。 2. **工作模式:**NFC有四种工作模式——读卡器/写卡器模式、卡片模拟模式、点对点模式(P2P)和卡仿真模式。对于读写数据,通常涉及读卡器/...
《MifareClassicTool-master_mifare_zip_源码.zip》是一个包含Mifare Classic工具的源代码压缩包,主要用于处理和操作Mifare Classic系列的RFID(无线频率识别)卡片。Mifare Classic是一种广泛应用的非接触式智能卡...
在Android平台上,读取M1卡(也称为MiFare Classic卡)的数据是一个涉及NFC(近场通信)技术的任务。M1卡是一种常见的非接触式智能卡,广泛应用于门禁系统、公交卡、会员卡等领域。下面我们将深入探讨如何在Android...
- **读取操作**:手机通过NFC模块检测到标签后,可以读取标签的ID和已存储的数据。对于213、215、216类型的标签,需要理解其内存布局和访问权限来正确读取。 - **写入操作**:在确保权限允许的情况下,可以向标签...
PN532是一个常用的NFC/RFID控制器芯片,MCT可能是指Mifare Classic Tool,这是一个流行的NFC工具,用于读写Mifare Classic系列的NFC标签。"MifareClassicToo"和"MFCUK"可能是Mifare Classic Tool的不同变体或别名。 ...
例如,`FM1208M01.pdf`可能是一个关于NFC模块或者相关技术的说明书。Android提供了`FileInputStream`和`BufferedReader`等类来读取本地文件,而通过NFC则可以实现对远程标签上存储文件的读取。开发者需要理解如何...
读取MIFARE 1K卡通常涉及到NFC技术,因为这是实现非接触读写的常用方式。 NFC技术是短距离无线通信标准,允许设备在几厘米内进行数据交换。在读取MIFARE 1K卡时,NFC阅读器会发射一个射频场,激活卡片并与其通信。...
2. **MiFare Classic协议**:M1卡使用的是MiFare Classic协议,理解其工作原理,包括扇区、块的概念,以及如何进行读写操作。 3. **数据加密与安全**:由于M1卡可能涉及敏感数据,如支付信息,因此理解如何加密数据...
复旦卡和M1智能卡其实是同一种类型的卡片,通常指的是Mifare Classic系列,由恩智浦(原飞利浦半导体)制造。它们也遵循ISO/IEC 14443 Type A标准,具备加密功能,适用于各种需要安全认证的应用场景。M1卡内部有多个...
3. MIFARE处理:内置MIFARE协议栈,可读写MIFARE Classic、MIFARE Ultralight和MIFARE DESFire系列卡片。 4. 身份验证:支持安全密钥存储和卡片认证,确保交易安全性。 5. 多种接口:提供SPI、I2C和UART等多种接口,...