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

四路IC卡读卡器通信协议

1、摘要

       Sle4442卡为256字节加密卡,存在读数据、写数据、保护数据以及密码操作。该卡在密码验证之前数据为只读状态,需要写入数据必须先进行密码验证,密码为3个字节,新卡初始密码为0xff,0xff,0xff。该读卡器卡可读写主存储器和加密存储器,以及密码验证,和查询读卡器上卡的状态(是否验证过密码),当读卡器上有卡拔插时读卡器会主动发送卡状态指令给上位机。

2、通信协议内容

波特率 19200

表1 计算机发送到读卡器的数据格式

地址偏移

内容

说明

0

数据包头

0x55

1

指令字节1

1—操作卡1,2—操作卡2……4—操作卡4

2

指令字节2

Bit7:0—读,1—写

Bit2-Bit0: 0—主存储器,1—加密储存器,2—密码校验,3—查询卡状态

3

指令字节3

数据帧状态,0--单独帧,1--起始帧2--中间帧,3--结束帧

4

地址

0-255

5

数据字节数

取值范围0-32

6-37

数据

最多32字节的数据

38

校验高字节

前面0-37所有数据的和

39

校验低字节

表2 读卡器发送到计算机的数据格式

地址偏移

内容

说明

0

数据包头

0x55 — 正常,0x5A—未插卡,0xA5—卡无效或卡损坏,0xAA — 未验证密码,0xAB — 连续写入错误(没有起始帧),0xBB —密码验证失败

1

指令字节1

1—操作卡1,2—操作卡2……4—操作卡4

2

指令字节2

Bit7:0—读,1—写

Bit2-Bit0: 0—主存储器,1—加密储存器,2—密码验证,3—卡状态

3

指令字节3

数据帧状态,0--单独帧,1--起始帧2--中间帧,3--结束帧

4

地址

0-255

5

数据页数

取值范围0-16,对应数据总量0-256

6-37

数据

最多32字节的数据

38

校验高字节

前面0-37所有数据的和

39

校验低字节

3、读取数据示例

3.1单页读取数据

例如读取卡3读取地址0x0a开始的32个字节

地址偏移

0

1

2

3

4

5

6—37

38

39

内容

0x55

0x03

0x00

0x00

0x0a

0x01

0x00…0x00

0x00

0x63

解析:

0x55:起始字节,固定

0x03:指令字节1,卡3

0x00:指令字节2,读取主存储器

0x00:指令字节3:读取时忽略

0x0a:地址

0x01:页数,1页

0x00…0x00:数据,读取时忽略

0x00-0x63:校验,前面38字节和

收到此命令后,读卡器将返回主存储器地址0x0a开始的32字节数据

3.2 连续读取数据

例如要读取卡2的地址0x20处的96字节数据,则发送指令为:

地址偏移

0

1

2

3

4

5

6-37

38

39

内容

0x55

0x02

0x00

0x00

0x20

0x03

0x00…0x00

0x00

0x7A

解析:

0x55:起始字节,固定

0x02:指令字节1,卡2

0x00:指令字节2,读取主存储器

0x00:指令字节3:读取时忽略

0x20:地址

0x03:页数,3页(96字节)

0x00…0x00:数据,读取时忽略

0x00-0x7A:校验,前面38字节和

收到此命令后,读卡器将返回地址0x20开始的96字节数据,数据分三次次返回,每次返回32字节,每次返回数据的地址是实际地址,即第一次返回0x20,第二次返回0x40,第三次返回0x60

4.写入示例

4.1单页写入数据

例如要写入卡2的地址0x80处的32字节数据,则发送指令为:

地址偏移

0

1

2

3

4

5

6-37

38

39

内容

0x55

0x02

0x80

0x00

0x80

0x01

0x00…0x00

0x01

0x58

解析:

0x55:起始字节,固定

0x02:指令字节1,卡2

0x80:指令字节2,0x80表示写入主存储器

0x00:指令字节3,单独帧
0x80:写入的地址为0x80

0x01:写入1页数据

0x00…0x00:实际写入数据

0x01-0x58:校验,前面38字节的数据之和

收到此命令后,读卡器将32字节数据写入地址0x80开始的位置,并返回写入信息,返回的状态中,只要开头的0x55和校验对就说明写入成功,其他部分数据忽略。

4.2连续写入数据

例如要写入卡3的地址0x10处的128字节数据,则发送指令为:

地址偏移

0

1

2

3

4

5

6-37

38

39

内容

0x55

0x03

0x80

0x01

0x10

0x04

0x00…0x00

0x00

0xEE

解析:

0x55:起始字节,固定

0x03:指令字节1,卡3

0x80:指令字节2,0x80表示写入主存储器

0x01:指令字节3,0x01表示此帧是要写入的第一帧数据,写第2-第3帧数据时,发送指令为0x02,写第四帧数据时,发送指令为0x03,发送完第四帧数据后,读卡器将数据写入卡中,并返回状态

0x10:写入的地址为0x0120

0x04:写入4页数据

0x00…0x00:要写入的数据

0x00-0xEE:校验,前面38字节的数据之和

收到此4次数据写入命令完成后,读卡器将128字节数据写入地址0x10开始的位置,并返回状态,返回的状态中,只要开头的0x55和校验对就说明写入成功,其他部分数据忽略。

5. 密码验证示例

       例如要验证入卡1密码为0xff,0xff,0xff:

地址偏移

0

1

2

3—5

6

7

8

9-37

38

39

内容

0x55

0x01

0x02

0x00…0x00

0xff

0xff

0xff

0x00…0x00

0x03

0x55

解析:

0x55:起始字节,固定

0x01:指令字节1, 卡1

0x02:指令字节2,验证密码

0x00…0x00:验证密码时忽略

0xff,0xff,0xff:需要验证的密码
0x00…0x00:其余数据部分,忽略

0x03-0x55:校验,前面38字节的数据之和

收到此命令后,读卡器将写入卡1密码0xff,0xff,0xff,并返回写入信息,返回的状态中,只要开头的0x55和校验对就说明写入成功,其他部分数据忽略。

6. 查询卡状态示例

地址偏移

0

1

2

3—5

6-37

38

39

内容

0x55

0x00

0x03

0x00…0x00

0x00…0x00

0x00

0x5B

解析:

0x55:起始字节,固定

0x00:指令字节1, 查询卡状态时忽略

0x00…0x00:查询卡状态时忽略

0x00…0x00:数据,查询卡状态时忽略

0x00-0x5B:校验,前面38字节的数据之和

收到此命令后,读卡器将返回卡状态信息,返回的状态中,只要开头的0x55和校验对就说明成功,数据位6—9为位卡1—卡4状态,0—无卡,1—有卡但未验证密码,2—有卡且验证密码,其他部分数据忽略。

相关文章:

四路IC卡读卡器通信协议

1、摘要 Sle4442卡为256字节加密卡,存在读数据、写数据、保护数据以及密码操作。该卡在密码验证之前数据为只读状态,需要写入数据必须先进行密码验证,密码为3个字节,新卡初始密码为0xff,0xff,0xff。该读卡器…...

JavaFX作业

前言: 在写这个作业之前,尝试在JavaFX中添加全局快捷键,测试了大概5个小时,到处找教程换版本,结果最后还是没找到支持Java8以上的(也有可能是我自己的问题),最后只能退而求其次&…...

【使用Python编写游戏辅助工具】第五篇:打造交互式游戏工具界面:PySide6/PyQT高效构建GUI工具

前言 这里是【使用Python编写游戏辅助工具】的第五篇:打造交互式游戏工具界面:PySide6/PyQT高效构建GUI工具。本文主要介绍使用PySide6来实现构建GUI工具。 在前面,我们实现了两个实用的游戏辅助功能: 由键盘监听事件触发的鼠标连…...

06.Oracle数据备份与恢复

Oracle数据备份与恢复 一、通过RMAN方式备份二、使用emp/imp和expdb/impdb工具进行备份和恢复三、使用Data guard进行备份与恢复 一、通过RMAN方式备份 通过 RMAN(Oracle 数据库备份和恢复管理器)方式备份 Oracle 数据库,可以使用以下步骤&a…...

大航海时代Ⅳ 威力加强版套装 HD Version (WinMac)中文免安装版

《大航海时代》系列的人气SRPG《大航海时代IV》以HD的新面貌再次登场!本作品以16世纪的欧洲“大航海时代”为舞台,玩家将以探险家、商人、军人等不同身份与全世界形形色色的人们一起上演出跌宕起伏的海洋冒险。游戏中玩家的目的是在不同的海域中掌握霸权…...

微信小程序 uCharts的使用方法

一、背景 微信小程序项目需要渲染一个柱状图,使用uCharts组件完成 uCharts官网指引👉:uCharts官网 - 秋云uCharts跨平台图表库 二、实现效果 三、具体使用 进入官网查看指南,有两种方式进行使用:分别是原生方式与组…...

面试算法54:所有大于或等于节点的值之和

题目 给定一棵二叉搜索树,请将它的每个节点的值替换成树中大于或等于该节点值的所有节点值之和。假设二叉搜索树中节点的值唯一。例如,输入如图8.10(a)所示的二叉搜索树,由于有两个节点的值大于或等于6(即…...

七月论文审稿GPT第二版:从Meta Nougat、GPT4审稿到LongLora版LLaMA、Mistral

前言 如此前这篇文章《学术论文GPT的源码解读与微调:从chatpaper、gpt_academic到七月论文审稿GPT》中的第三部分所述,对于论文的摘要/总结、对话、翻译、语法检查而言,市面上的学术论文GPT的效果虽暂未有多好,可至少还过得去&am…...

PyTorch入门学习(十二):神经网络-搭建小实战和Sequential的使用

目录 一、介绍 二、先决条件 三、代码解释 一、介绍 在深度学习领域,构建复杂的神经网络模型可能是一项艰巨的任务,尤其是当您有许多层和操作需要组织时。幸运的是,PyTorch提供了一个方便的工具,称为Sequential API&#xff0c…...

Linux shell编程学习笔记20:case ... esac、continue 和break语句

一、case ... esac语句说明 在实际编程中,我们有时会请到多条件多分支选择的情况,用if…else语句来嵌套处理不烦琐,于是JavaScript等语言提供了多选择语句switch ... case。与此类似,Linux Shell脚本编程中提供了case...in...esa…...

树莓派4无法进入桌面模式(启动后出现彩色画面,然后一直黑屏,但是可以正常启动和ssh)

本文记录了这段比较坎坷的探索之路,由于你的问题不一定是我最终解决方案的,可能是前面探索路上试过的,所以建议按顺序看排除前置问题。 双十一又买了个树莓派 4B,插上之前树莓派 4B 的 TF 卡直接就能使用(毕竟是一样规…...

花草世界生存技能

多菌灵 杀菌常用 阿维菌素 杀虫常用 除蚜虫 吡虫啉 有毒性 内吸性(植物吸收) 苦参碱 无毒,中药提取 内吸性药 吡虫啉,噻虫嗪、啶虫脒、苦参碱 栀子花 春秋花后修剪 牡丹 秋冬种植; 洛阳产地; 肥料 …...

执行npm install时老是安装不成功node-sass的原因和解决方案

相信你安装前端项目所需要的依赖包(npm install 或 yarn install)时,有可能会出现如下报错: D:\code\**project > yarn install ... [4/4] Building fresh packages... [-/6] ⠁ waiting... [-/6] ⠂ waiting... [-/6] ⠂ wai…...

【MongoDB】集群搭建实战 | 副本集 Replica-Set | 分片集群 Shard-Cluster | 安全认证

文章目录 MongoDB 集群架构副本集主节点选举原则搭建副本集主节点从节点仲裁节点 连接节点添加副本从节点添加仲裁者节点删除节点 副本集读写操作副本集中的方法 分片集群分片集群架构目标第一个副本集第二个副本集配置集初始化副本集路由集添加分片开启分片集合分片删除分片 安…...

「Verilog学习笔记」四选一多路器

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点,刷题网站用的是牛客网 分析 通过波形示意图我们可以发现,当sel为0,1,2时,输出mux_out分别为d3,d2,d1,那么sel3…...

asp.net 创建docker容器

首先创建asp.net web api 创建完成后如下图 添加docker支持 添加docker支持 添加linux docker支持...

Linux项目自动化构建工具-make/Makefile使用

make/Makefile使用介绍 make是一个命令makefile是一个在当前目录下存在的一个具有特定格式的文本文件 ​ 下面我们设计一个场景&#xff0c;实现make命令对我们code.c文件进行编译和删除。 1 #include<stdio.h> 2 3 int main() 4 { 5 printf("hello,world!…...

【React】03.脚手架的进阶应用

文章目录 暴露webpack配置暴露前后的区别config文件夹&#xff1a;scripts文件夹&#xff1a;package.json 常见的配置修改1.把sass改为less2.配置别名3.修改域名和端口号4.修改浏览器兼容5.处理Proxy跨域 2023年最新珠峰React全家桶【react基础-进阶-项目-源码-淘系-面试题】 …...

WPF开源控件HandyControl——零基础教程

学习Handycontrol的过程中,为后边快速开发,写的零基础教程,尽量看完就可以实践! 参考教程 中文文档:欢迎使用HandyControl | HandyOrg Github代码:https://github.com/HandyOrg/HandyControl 使用教程:WPF-HandyControl安装和使用 - 掘金 安装配置教程 创建wpf项目 …...

chinese-stable-diffusion中文场景文生图prompt测评集合

腾讯混元大模型文生图操作指南.dochttps://mp.weixin.qq.com/s/u0AGtpwm_LmgnDY7OQhKGg腾讯混元大模型再进化&#xff0c;文生图能力重磅上线&#xff0c;这里是一手实测腾讯混元的文生图在人像真实感、场景真实感上有比较明显的优势&#xff0c;同时&#xff0c;在中国风景、动…...

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别

一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

React Native 开发环境搭建(全平台详解)

React Native 开发环境搭建&#xff08;全平台详解&#xff09; 在开始使用 React Native 开发移动应用之前&#xff0c;正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南&#xff0c;涵盖 macOS 和 Windows 平台的配置步骤&#xff0c;如何在 Android 和 iOS…...

Java - Mysql数据类型对应

Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及&#xff0c;充电桩作为核心配套设施&#xff0c;其安全性与可靠性备受关注。然而&#xff0c;在高温、高负荷运行环境下&#xff0c;充电桩的散热问题与消防安全隐患日益凸显&#xff0c;成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

Java数值运算常见陷阱与规避方法

整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...

【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制

使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下&#xff0c;限制某个 IP 的访问频率是非常重要的&#xff0c;可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案&#xff0c;使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...

Golang——9、反射和文件操作

反射和文件操作 1、反射1.1、reflect.TypeOf()获取任意值的类型对象1.2、reflect.ValueOf()1.3、结构体反射 2、文件操作2.1、os.Open()打开文件2.2、方式一&#xff1a;使用Read()读取文件2.3、方式二&#xff1a;bufio读取文件2.4、方式三&#xff1a;os.ReadFile读取2.5、写…...

Unity UGUI Button事件流程

场景结构 测试代码 public class TestBtn : MonoBehaviour {void Start(){var btn GetComponent<Button>();btn.onClick.AddListener(OnClick);}private void OnClick(){Debug.Log("666");}}当添加事件时 // 实例化一个ButtonClickedEvent的事件 [Formerl…...