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

2024-03-02 23:48

本文主要是介绍M1卡修改各区块控制位值和数据,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

(一),以常用设置"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这三个字节进行二进制转换结果见下表:

字节6 = 0 0 0 0 1 0 0 0字节7 = 0 1 1 1 0 1 1 1字节8 = 1 0 0 0 1 1 1 1

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

字节号对应二进制值位置高4位位置低4位
字节6 
字节7 
字节8
0 0 0 0 1 0 0 0
0 1 1 1 0 1 1 1
1 0 0 0 1 1 1 1
C2Y
C1Y
C3Y
1 1 1 1
0 1 1 1
1 0 0 0
C1Y
C3Y
C2Y
0 1 1 1
1 0 0 0
1 1 1 1
   块3 块2 块1 块0 块3 块2 块1 块0

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

块3位字节7,字节6,字节8 = C13,C23,C33 = C1Y,C2Y,C3Y = 0 1 1
块2位
块1位
块0位
字节7,字节6,字节8 = C12,C22,C32 = C1Y,C2Y,C3Y = 1 1 0
字节7,字节6,字节8 = C11,C21,C31 = C1Y,C2Y,C3Y = 1 1 0
字节7,字节6,字节8 = C10,C20,C30 = C1Y,C2Y,C3Y = 1 1 0

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

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"的访问条件及其改写步骤,对用户的其它控制条件亦可参照应用。

转自:M1卡修改各区块控制位值和数据 | 堕落的鱼

这篇关于M1卡修改各区块控制位值和数据的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/767797

相关文章

SpringBoot集成Milvus实现数据增删改查功能

《SpringBoot集成Milvus实现数据增删改查功能》milvus支持的语言比较多,支持python,Java,Go,node等开发语言,本文主要介绍如何使用Java语言,采用springboo... 目录1、Milvus基本概念2、添加maven依赖3、配置yml文件4、创建MilvusClient

SpringValidation数据校验之约束注解与分组校验方式

《SpringValidation数据校验之约束注解与分组校验方式》本文将深入探讨SpringValidation的核心功能,帮助开发者掌握约束注解的使用技巧和分组校验的高级应用,从而构建更加健壮和可... 目录引言一、Spring Validation基础架构1.1 jsR-380标准与Spring整合1

MySQL 中查询 VARCHAR 类型 JSON 数据的问题记录

《MySQL中查询VARCHAR类型JSON数据的问题记录》在数据库设计中,有时我们会将JSON数据存储在VARCHAR或TEXT类型字段中,本文将详细介绍如何在MySQL中有效查询存储为V... 目录一、问题背景二、mysql jsON 函数2.1 常用 JSON 函数三、查询示例3.1 基本查询3.2

SpringBatch数据写入实现

《SpringBatch数据写入实现》SpringBatch通过ItemWriter接口及其丰富的实现,提供了强大的数据写入能力,本文主要介绍了SpringBatch数据写入实现,具有一定的参考价值,... 目录python引言一、ItemWriter核心概念二、数据库写入实现三、文件写入实现四、多目标写入

使用Python将JSON,XML和YAML数据写入Excel文件

《使用Python将JSON,XML和YAML数据写入Excel文件》JSON、XML和YAML作为主流结构化数据格式,因其层次化表达能力和跨平台兼容性,已成为系统间数据交换的通用载体,本文将介绍如何... 目录如何使用python写入数据到Excel工作表用Python导入jsON数据到Excel工作表用

Mysql如何将数据按照年月分组的统计

《Mysql如何将数据按照年月分组的统计》:本文主要介绍Mysql如何将数据按照年月分组的统计方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mysql将数据按照年月分组的统计要的效果方案总结Mysql将数据按照年月分组的统计要的效果方案① 使用 DA

鸿蒙中Axios数据请求的封装和配置方法

《鸿蒙中Axios数据请求的封装和配置方法》:本文主要介绍鸿蒙中Axios数据请求的封装和配置方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1.配置权限 应用级权限和系统级权限2.配置网络请求的代码3.下载在Entry中 下载AxIOS4.封装Htt

Docker镜像修改hosts及dockerfile修改hosts文件的实现方式

《Docker镜像修改hosts及dockerfile修改hosts文件的实现方式》:本文主要介绍Docker镜像修改hosts及dockerfile修改hosts文件的实现方式,具有很好的参考价... 目录docker镜像修改hosts及dockerfile修改hosts文件准备 dockerfile 文

Python获取中国节假日数据记录入JSON文件

《Python获取中国节假日数据记录入JSON文件》项目系统内置的日历应用为了提升用户体验,特别设置了在调休日期显示“休”的UI图标功能,那么问题是这些调休数据从哪里来呢?我尝试一种更为智能的方法:P... 目录节假日数据获取存入jsON文件节假日数据读取封装完整代码项目系统内置的日历应用为了提升用户体验,

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放