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

VB.net复制Ntag213卡写入UID

本示例使用的发卡器:https://item.taobao.com/item.htm?ft=t&id=615391857885 

一、读取旧Ntag卡的UID和数据

    Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click'轻松读卡'技术支持:'网站:Dim i, j As IntegerDim cardidhex, authkey, Str As StringDim status, myctrlword, comedc As Byte '存放返回值Dim mypiccserial(7) As Byte '卡序列号Dim mypicckey(0 To 3) As Byte '认证密码Dim mypiccdata(0 To 3) As Byte '读卡的数据缓冲,Ultralight卡及NTAG21x卡的数组长度必须为16个字节,写卡的为4个字节Dim piccdata(0 To 8191) As ByteDim myblockaddr As Byte '起始块地址Dim myblocksize As Byte '总块数If CheckBox3.Checked ThenIf Len(Trim(TextBox7.Text)) < 8 Theni = MsgBox("卡认证密码位数不足!", MsgBoxStyle.Critical + MsgBoxStyle.OkOnly, "提示")If i <> vbOK ThenTextBox7.Select()Exit SubEnd IfElseauthkey = Trim(TextBox7.Text)For i = 0 To 3mypicckey(i) = CByte("&H" & Mid(authkey, i * 2 + 1, 2))NextEnd Ifmyctrlword = &H10  '需要认证卡密码后再继续Elsemyctrlword = 0End Ifmyblockaddr = CByte(rwbeginp.Value)myblocksize = CByte(rwps.Value)j = 0For i = myblockaddr To myblockaddr + myblocksize - 1status = piccreadex_ntag(myctrlword, mypiccserial(0), mypicckey(0), i, 1, mypiccdata(0))If status = 0 Thenpiccdata(j * 4 + 0) = mypiccdata(0)piccdata(j * 4 + 1) = mypiccdata(1)piccdata(j * 4 + 2) = mypiccdata(2)piccdata(j * 4 + 3) = mypiccdata(3)j = j + 1ElseExit ForEnd IfNextSelect Case statusCase 0pcdbeep(50)cardidhex = ""For i = 0 To 6cardidhex = cardidhex + Strings.Right("00" + Hex(mypiccserial(i)), 2)NextTextBox8.Text = cardidhexcardidhex = ""For i = 0 To myblocksize * 4 - 1cardidhex = cardidhex + Strings.Right("00" + Hex(piccdata(i)), 2)NextRichTextBox1.Text = cardidhexlcddispfull("读卡成功!                        ")MsgBox("读卡成功!", MsgBoxStyle.Information + MsgBoxStyle.OkOnly, "提示")Case 8lcddispfull("请将卡放在感应区!                        ")MsgBox("请将卡放在感应区!", MsgBoxStyle.Critical + MsgBoxStyle.OkOnly, "提示")Case 12lcddispfull("读块" + Convert.ToString(i) + "失败,密码错误!                       ")MsgBox("读块" + Convert.ToString(i) + "失败,密码错误!", MsgBoxStyle.Critical + MsgBoxStyle.OkOnly, "提示")Case 13lcddispfull("读块" + Convert.ToString(i) + "失败,可能需要验证密码!                       ")MsgBox("读块" + Convert.ToString(i) + "失败,可能需要验证密码!", MsgBoxStyle.Critical + MsgBoxStyle.OkOnly, "提示")Case 23MsgBox("请连上USB读写器!", MsgBoxStyle.Critical + MsgBoxStyle.OkOnly, "提示")Case Elselcddispfull("读块" + Convert.ToString(i) + "时操作异常,返回代码:" + Convert.ToString(status) + "                        ")MsgBox("读块" + Convert.ToString(i) + "时操作异常,返回代码:" + Convert.ToString(status), MsgBoxStyle.Critical + MsgBoxStyle.OkOnly, "提示")End SelectEnd Sub

二、将读取的UID和数据写入新标签

    Private Sub Button16_Click(sender As Object, e As EventArgs) Handles Button16.Click'技术支持:'网站:Dim i, j As IntegerDim cardidhex, authkey, Str, writstr As StringDim status, myctrlword, comedc As Byte '存放返回值Dim mypiccserial(7) As Byte '卡序列号Dim mypicckey(0 To 3) As Byte '认证密码Dim mypiccdata(0 To 3) As Byte '写卡的为4个字节Dim myblockaddr As Byte '起始块地址Dim myblocksize As Byte '总块数Dim piccdata(0 To 8100) As ByteDim rwlen As IntegerIf rwps.Value < 1 ThenMsgBox("写卡页数必须大于0!", MsgBoxStyle.Critical + MsgBoxStyle.OkOnly, "提示")Exit SubEnd Ifmyblockaddr = CByte(rwbeginp.Value)myblocksize = CByte(rwps.Value)If CheckBox3.Checked ThenIf Len(Trim(TextBox7.Text)) < 8 Theni = MsgBox("卡认证密码位数不足!", MsgBoxStyle.Critical + MsgBoxStyle.OkOnly, "提示")If i <> vbOK ThenTextBox7.Select()Exit SubEnd IfElseauthkey = Trim(TextBox7.Text)For i = 0 To 3mypicckey(i) = CByte("&H" & Mid(authkey, i * 2 + 1, 2))NextEnd Ifmyctrlword = &H10  '需要认证卡密码后再继续Elsemyctrlword = 0End Ifrwlen = myblocksize * 4If Not checkhexstr(RichTextBox1.Text.Trim(), rwlen, piccdata) ThenMessageBox.Show("写卡信息不足,建议先读取对应块内数据后再改写!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Error)ReturnEnd Ifj = 0For i = myblockaddr To myblockaddr + myblocksize - 1mypiccdata(0) = piccdata(j * 4 + 0)mypiccdata(1) = piccdata(j * 4 + 1)mypiccdata(2) = piccdata(j * 4 + 2)mypiccdata(3) = piccdata(j * 4 + 3)If i = 2 Thenmypiccdata(2) = 0mypiccdata(3) = 0status = picclock_ntag(0, mypiccdata(0))   '2块的后两个字节是静态锁Elsestatus = piccwriteex_ntag(myctrlword, mypiccserial(0), mypicckey(0), i, 1, mypiccdata(0))End IfIf status = 0 Thenj = j + 1ElseExit ForEnd IfNextSelect Case statusCase 0pcdbeep(50)cardidhex = ""For i = 0 To 6cardidhex = cardidhex + Strings.Right("00" + Hex(mypiccserial(i)), 2)NextTextBox8.Text = cardidhexlcddispfull("写卡成功!                        ")MsgBox("写卡成功!", MsgBoxStyle.Information + MsgBoxStyle.OkOnly, "提示")Case 8lcddispfull("请将卡放在感应区!                        ")MsgBox("请将卡放在感应区!", MsgBoxStyle.Critical + MsgBoxStyle.OkOnly, "提示")Case 12lcddispfull("写块" + Convert.ToString(i) + "时失败,卡密码错误!                        ")MsgBox("写块" + Convert.ToString(i) + "时失败,卡密码错误!", MsgBoxStyle.Critical + MsgBoxStyle.OkOnly, "提示")Case 14lcddispfull("写块" + Convert.ToString(i) + "时失败,可能需要验证密码或页已经锁定!                        ")MsgBox("写块" + Convert.ToString(i) + "时失败,可能需要验证密码或页已经锁定!", MsgBoxStyle.Critical + MsgBoxStyle.OkOnly, "提示")Case 23MsgBox("请连上USB读写器!", MsgBoxStyle.Critical + MsgBoxStyle.OkOnly, "提示")Case Elselcddispfull("写块" + Convert.ToString(i) + "时操作异常,代码:" + Convert.ToString(status) + "                        ")MsgBox("写块" + Convert.ToString(i) + "时操作异常,返回代码:" + Convert.ToString(status), MsgBoxStyle.Critical + MsgBoxStyle.OkOnly, "提示")End SelectEnd Sub

 

http://www.xdnf.cn/news/12559.html

相关文章:

  • [C++] list双向链表使用方法
  • 深入理解 Java 多线程:原理剖析与实战指南
  • 乐观锁与悲观锁的实现和应用
  • 统一点云数据格式:高效转换与属性保留
  • 微服务架构的性能优化:链路追踪与可观测性建设
  • 基于Python学习《Head First设计模式》第六章 命令模式
  • PHP 表单 - 验证邮件和URL
  • Java+Access综合测评系统源码分享:含论文、开题报告、任务书全套资料
  • 物联网智慧医院建设方案(PPT)
  • JMeter-SSE响应数据自动化2.0
  • # STM32F103 SD卡读写程序
  • JDK21深度解密 Day 15:JDK21实战最佳实践总结
  • Go语言堆内存管理
  • 如何在 Java 中优雅地使用 Redisson 实现分布式锁
  • ArcPy扩展模块的使用
  • 深入解析HarmonyOS5 UIAbility组件:从核心架构到实战应用
  • Clickhouse统计指定表中各字段的空值、空字符串或零值比例
  • uniapp- UTS 插件鸿蒙端开发示例 虽然我们这个示例简单 但是这个是难住很多人的一大步
  • 交互标牌——视觉货币(数字)转换器项目及源码
  • 企业微信授权登录(uniapp项目)
  • 零基础在实践中学习网络安全-皮卡丘靶场(第十六期-SSRF模块)
  • 第4章:Cypher查询语言基础
  • GenSpark vs Manus实测对比:文献综述与学术PPT,哪家强?
  • 深度解析:Spring Boot 配置加载顺序、优先级与 bootstrap 上下文
  • 数据通信与计算机网络——数据与信号
  • 好未来0520上机考试题2:有效三角形的个数
  • 青少年编程与数学 01-011 系统软件简介 07 iOS操作系统
  • ClusterRole 和 ClusterRoleBinding 的关系及使用
  • EPPLUS——CAD c#读写EXCEL的第三方库
  • 怎么让自己ip显示外省?一文说清操作