当前位置: 首页 > news >正文

水卡修改金额_【技术分享】关于IC卡,水卡修改控制位教程

M1卡修改各区块控制位值和数据

mifare 控制字节生成工具,根据读写权限计算S50/S70的密码控制字节,根据控制字节,解析读写的权限。

此软件可根据条件生成控制字节,前三个宇节是控制位,第四个字节是备用的,可任意更改。另B密码为不可读时才有效。

(一),以常用设置"08 77 8F 69"控制条件为例,先搞清楚它――具有的访问权限。

1、对"08 77 8F 69"值进行计算,该值定位于各区块3的6,7,8,9四个字节内,字节6=08,字节7=77, 字节8=8F,   字节9=69(默认值,不予计算)。

2、例如:字节6=08,对应其二进制值=00001000, 则对6,7,8这三个字节进行二进制转换结果见下表:

3、参照表2及表4算法,字节6的全部二进制值取反,字节7的低四位二进制值取反,字节8不变,得到:

4、对以上6,7,8字节的存取/控制二进制已取反值,依照表2,表4块位转换为各块控制值,如下表:

注意: 高4位的各块值=低4位的各块值时,其值可用。高4位值≠低4位值时,其值不可用!

如果相应扇区尾块Key B可读,则不得用作认证(前表中所有灰色行)。后果:如果读写器试图用灰色行的访问控制条件以Key B认证任何扇区的任何块,卡将在认证后拒绝所有后续存储器访问。

表5: 尾块的读写条件

注:灰色行为key B可读并可用于存储数据的访问控制条件。

5、查对访问权限(数据存取控制依照表3,块3存取控制依照表5),该例"08 77 8F 69"的访问权限为:

◆ 块3 = 011:权限为:KeyA,KeyB均不可读,验证KeyB正确后可改写KeyA和KeyB,验证KeyA或KeyB正确后可读"控制位"。在此可见密钥KeyB的重要性,KeyB不正确是无法看到块3控制值,更无法修改密钥。

◆ 块2 = 块1 = 块0 = 110:权限为:验证KeyA或KeyB后可读该块数据,减值以及初始化值,只有验证KeyB 正确后才可改写该块数据,在此可以看到密钥KeyB对改写数据块也起着关键性作用。

(二)、"08 77 8F 69" 控制条件设置步骤:

由(一)可知:KeyB设置后为不可读,并且改写数据和改写控制位都需要正确验证它,故KeyB设置后程序

操作员必须妥善保管KeyB值,否则以后改写数据和控制位时,不正确的KeyB值将无法实现卡的任何操作!!!

1、修改块3控制位的值:最初的各区块3内的KeyA,KeyB都是厂商12个"F"默认值(KeyA在任何条件下均为不可读,大部分读写机程序表现KeyA为未知的12个"0" ),在修改控制值时,先不要修改默认密码KeyA和KeyB,在控制位修改成功后,再去更改新密码值。即先对块3的控制位进行修改(默认值FF 07 80 69改为新值08 77 8F 69)并执行写操作。控制位写成功后,KeyB亦为12个"0"不可读了,但仍是隐藏的12个"f"默认值。

2、修改块3的KeyA和KeyB值:控制位08 77 8F 69值写成功后,验证KeyB正确后方可改写KeyA和KeyB新密码。在密码操作模式键入要改写区块之先前密码B(先前密码为默认值时,则不需改动和加载),加载后反回数据操作模式,再进行读值,KeyA和KeyB值的改写。

3、修改块0~块2中数据:由新的控制条件08778F69可知,要修改数据,必须先验证KeyB,故先设置密码操作为KeyB认证方式,加载后再返回数据操作模式,对要修改的数据块进行值的改写操作。

4、上例中分析了"08 77 8F 69"的访问条件及其改写步骤,对用户的其它控制条件亦可参照应用

相关文章:

  • excel导出多重表头utils_java excel复杂表头和复杂数据导出
  • 程序异常退出的原因_Python异常处理详解(基础篇十一)
  • h5显示今天的时间_试驾红旗H5!红旗品牌卖得最火的车型,开起来究竟咋样?...
  • 雷迪9000使用说明_雷迪司UPS监控软件使用说明
  • libsvm python_LibSVM for Python 使用
  • 列表输出循环左移_Java Note-数据结构(3)列表
  • mysql 远程日志_将syslog ng日志写入MySQL(远程)数据库
  • mysql npe问题_万恶的 NPE 如何避免,几种你必须知道的方案!!!
  • dubbo monitor mysql_dubbox 的各种管理和监管
  • mysql传入Bean_mysql 表映射为java bean 手动生成。
  • mysql数据库程序员_大神程序员养成之路-Mysql数据库基础
  • mac svn客户端_SmartSVN 12 for Mac(SVN客户端)
  • mysql随机数据插入_mysql随机数据生成并插入
  • asp 备份 mysql数据库_用Asp备份与恢复SQL Server 数据库_数据库相关_脚本
  • mysql rds数据库优势_云数据库RDS基础版的优势及适用场景
  • 9月CHINA-PUB-OPENDAY技术沙龙——IPHONE
  • 4个实用的微服务测试策略
  • Android路由框架AnnoRouter:使用Java接口来定义路由跳转
  • angular2开源库收集
  • JavaScript的使用你知道几种?(上)
  • laravel5.5 视图共享数据
  • markdown编辑器简评
  • MySQL主从复制读写分离及奇怪的问题
  • PHP 的 SAPI 是个什么东西
  • python学习笔记 - ThreadLocal
  • vue中实现单选
  • 阿里云Kubernetes容器服务上体验Knative
  • 观察者模式实现非直接耦合
  • 机器学习学习笔记一
  • 解析带emoji和链接的聊天系统消息
  • 聊聊flink的TableFactory
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)
  • 实战|智能家居行业移动应用性能分析
  • 试着探索高并发下的系统架构面貌
  • 微服务核心架构梳理
  • 想写好前端,先练好内功
  • ​flutter 代码混淆
  • #define,static,const,三种常量的区别
  • #pragma once与条件编译
  • (6)STL算法之转换
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (附源码)springboot“微印象”在线打印预约系统 毕业设计 061642
  • (剑指Offer)面试题34:丑数
  • (转)Windows2003安全设置/维护
  • (转)关于pipe()的详细解析
  • (转载)(官方)UE4--图像编程----着色器开发
  • .dwp和.webpart的区别
  • .NET BackgroundWorker
  • .NET Core中的去虚
  • .NET 使用配置文件
  • .net6 webapi log4net完整配置使用流程
  • .NET单元测试
  • .Net中的设计模式——Factory Method模式
  • /bin、/sbin、/usr/bin、/usr/sbin