Delphi 复制IC卡写UID卡0区0块

article/2025/11/7 11:14:35

 

本示例使用的发卡器:https://item.taobao.com/item.htm?spm=a1z10.5-c.w4002-17663462238.11.7154789eKODONP&id=615391857885icon-default.png?t=M276https://item.taobao.com/item.htm?spm=a1z10.5-c.w4002-17663462238.11.7154789eKODONP&id=615391857885

unit declaredll;interface//读卡函数声明function piccreadex(ctrlword:byte;pserial:pbyte;area:byte;keyA1B0:byte;picckey:pbyte;piccdata0_2:pbyte):byte;stdcall;external 'OUR_MIFARE.dll';//写卡函数声明function piccwriteex(ctrlword:byte;pserial:pbyte;area:byte;keyA1B0:byte;picckey:pbyte;piccdata0_2:pbyte):byte;stdcall;external 'OUR_MIFARE.dll';//驱动蜂鸣器函数声明function pcdbeep(xms:integer):byte;stdcall;external 'OUR_MIFARE.dll';//修改单区密码函数声明function piccchangesinglekey(ctrlword:byte;pserial:pbyte;area:byte;keyA1B0:byte;piccoldkey:pbyte;piccnewkey:pbyte):byte;stdcall;external 'OUR_MIFARE.dll';//修改单区密码改单区AB密码或访问控制位函数声明function piccchangesinglekeyex(ctrlword:byte;serial:pbyte;area:byte;keyA1B0:byte;piccoldkey:pbyte;piccdata:pbyte):byte;stdcall;external 'OUR_MIFARE.dll';//读出设备编号函数声明function pcdgetdevicenumber(pdevicenumber:pbyte):byte;stdcall;external 'OUR_MIFARE.dll';//只读取卡号函数function piccrequest(pserial:pbyte):byte;stdcall;external 'OUR_MIFARE.dll';//发送显示function lcddispfull(lcdstr:PChar):byte;stdcall;external 'OUR_MIFARE.dll';//改写0区0块UIDfunction piccwriteserial(ctrlword:byte;pserial:pbyte;keyA1B0:byte;picckey:pbyte;piccdata:pbyte):byte;stdcall;external 'OUR_MIFARE.dll';const//以下控制字的含义请查看本公司网站提供的动态库说明BLOCK0_EN = $01;  //读块0BLOCK1_EN = $02;  //读块1BLOCK2_EN = $04;   //读块2NEEDSERIAL = $08;  //是否需要只对指定系列号的卡操作EXTERNKEY = $10;   //是否使用外部密码NEEDHALT = $20;   //是否休眠本卡implementationprocedure TForm1.Button11Click(Sender: TObject);
//用UID卡复制M1卡,写入物理卡号到UID卡的0扇区0块vari:integer;x:LongWord ;status:byte;//存放返回值edc:byte;//校验码authmode:byte;//密码类型,用A密码或B密码myctrlword:byte;//控制字mypicckey:array[0..5] of byte;//密码mypiccserial:array[0..3] of byte;//卡序列号mypiccdata:array[0..15] of byte;//卡数据缓冲strs:string;beginfor i:=0 to 16 dobeginif i<4 then  mypiccserial[i]:=0;if i<6 then  mypicckey[i]:=0;mypiccdata[i]:=0;end;if RichEdit2.Lines[0]>'4294967295' thenbeginApplication.MessageBox('卡号最大取值:4294967295', '提示', MB_OK+MB_ICONSTOP) ;exit;end;x:= StrToInt64(RichEdit2.Lines[0]) ;if x>4294967295 thenbeginShowmessage('卡号最大取值:4294967295') ;exit;end;edc:=0;if (checkbox4.State = cbchecked) thenbeginfor i:=3 downto 0 dobeginmypiccdata[i]:= x and 255;edc:=edc xor mypiccdata[i];x:=x shr 8;end;endelsebeginfor i:=0 to 3 dobeginmypiccdata[i]:= x and 255;edc:=edc xor mypiccdata[i];x:=x shr 8;end;end;mypiccdata[4]:= edc;myctrlword:=BLOCK0_EN;authmode:=0;status:=piccwriteserial(myctrlword,@mypiccserial,authmode,@mypicckey,@mypiccdata);case status of0:beginpcdbeep(38);strs:= 'UID卡号:'+RightStr('0000000000'+RichEdit2.Lines[0],10)+' 写卡成功!' ;ListBox1.Items.Add(strs);listbox1.ItemIndex:=listbox1.Count-1;Application.MessageBox(PAnsiChar(AnsiString(strs)) , '提示', MB_OK+MB_ICONINFORMATION);       MB_ICONQUESTION  MB_ICONEXCLAMATION  MB_ICONWARNING  MB_ICONINFORMATION  MB_ICONASTERISK  MB_ICONHAND  MB_ICONERROR  MB_ICONSTOPif checkbox1.State = cbchecked thenbeginx:=StrToInt64(RichEdit2.Lines[0])+1;if (checkbox2.State = cbchecked)  and (RightStr(inttostr(x),1)='4') then x:=x+1;if (checkbox3.State = cbchecked)  and (RightStr(inttostr(x),1)='7') then x:=x+1;RichEdit2.Text :=rightstr('0000000000'+inttostr(x),10);end;end;8: Application.MessageBox('请将卡放在感应区', '提示', MB_OK+MB_ICONSTOP);12:Application.MessageBox('卡密码认证失败!', '提示', MB_OK+MB_ICONSTOP);elsebeginApplication.MessageBox(PAnsiChar(AnsiString('操作失败,错误代码:'+IntToStr(status))), '提示', MB_OK+MB_ICONSTOP);end;end;
end;


http://chatgpt.dhexx.cn/article/CVBxSeMj.shtml

相关文章

PN532模块复制IC加密卡

PN532模块复制IC加密卡 忍受够了每天都需要带着各种各样的卡片&#xff0c;如果可以将卡复制进手机里&#xff0c;那我就可以只带着手机&#xff0c;每天出门都是轻装上阵。 只要你的手机拥有nfc功能&#xff0c;那你可以直接将卡模拟进手机里&#xff0c;当然这样并没有完全…

IC卡、ID卡及车库蓝牙卡的复制说明!(小区的门禁系统)

随着科技的发展&#xff0c;各种新的技术也不断的出现&#xff0c;如现在很多的小区物业管理和其它一些关于关卡出入的管理方面都采取了门禁卡的形式&#xff0c;若是门禁卡丢失了&#xff0c;那么可能会被物业管理公司几倍的罚款&#xff0c;为了避免这种情况的出现&#xff0…

PyCharm 关闭 Test 功能

PyCharm自带的功能&#xff0c;检测Python文件中&#xff0c;以“test”开头的函数名&#xff0c;作为测试用例&#xff0c;导致在调试时&#xff0c;优先启动“test”函数&#xff0c;对于我们正常想调试的内容进行干扰。 如果不想使用这个功能&#xff0c;需要关闭&#xff…

scalaTest的使用

配置 修改pom.xml&#xff0c;添加以下内容 <!--依赖--> <dependency><groupId>org.scalatest</groupId><artifactId>scalatest_2.11</artifactId><version>3.0.0</version><scope>test</scope> </dependenc…

GoLang之go test测试

文章目录 GoLang之go test测试1.介绍2.函数3.测试函数格式3.1格式3.2失败示例3.3成功示例13.4成功示例23.5成功示例33.6成功实例4 4.基准函数4.1成功实例14.2成功实例24.3性能比较函数 GoLang之go test测试 1.介绍 Go语言中的测试依赖go test命令。编写测试代码和编写普通的Go…

Linux下使用Speedtest测试网速

Speedtest是用来测试网络性能的开源软件&#xff0c;在Linux下面安装Speedtest可以用来测试网络出口的上传和下载速度&#xff0c;帮助排查网络方面导致的故障。 Speedtest介绍 由于公司几个项目用户访问的时候响应较慢&#xff0c;项目本身没问题&#xff0c;服务及调用的接口…

@SpringBootTest注解进行单元测试

1、首先我们通过idea创建一个Springboot项目&#xff0c;项目目录生成后&#xff0c;默认都会带main和test目录&#xff0c;如下&#xff1a; 2、我们在test目录下创建测试类&#xff0c;正常情况下创建项目的时候会自带生成对应的测试类&#xff0c;如下&#xff1a; 此时你发…

C++Test使用入门

CTest使用入门 Parasoft Ctest 是一款自动化测试工具&#xff0c;是经广泛证明的最佳实践集成解决方案&#xff0c;它能有效提高开发团队工作效率和软件质量。 创建项目导入cpp文件生成测试用例添加桩函数运行测试用例 1.创建项目 填写项目名&#xff0c;Project type选择Em…

docker安装speedtest

平常测试网速的时候常用speedtest进行测试&#xff08;测速网 - 专业网速测试, 游戏测速, 直播测速, 5G测速, 物联网监测-SpeedTest.cn&#xff09;&#xff0c;但是网站通常测试的是带宽的速度。内网速度的测试&#xff0c;一般通过传输大文件&#xff0c;查看稳定速率来计算速…

simulinktest

Smulink Test Notebook 序Subsystem Test使用Testharness对模型进行测试------------------------分割线-------------------------------------------- 序 Simulink Test 为模型的仿真&#xff0c;测试&#xff0c;验证和代码生成提供工具&#xff1b; 它包括Test Sequence&a…

Testbench编写指南(1)基本组成与示例

对于小型设计来说&#xff0c;最好的测试方式便是使用TestBench和HDL仿真器来验证其正确性。一般TestBench需要包含这些部分&#xff1a;实例化待测试设计、使用测试向量激励设计、将结果输出到终端或波形窗口便于可视化观察、比较实际结果和预期结果。下面是一个标准的HDL验证…

Device Self-test

DST Device Self-test命令Command CompletionDevice Self-test Operations (Optional)Short Device Self-Test OperationExtended Device Self-Test Operation Device Self-test命令 Device Self-test命令用于开始一个device self-test操作&#xff0c;或者中止一个device self…

Test ignored.

项目场景&#xff1a; springboot 问题描述&#xff1a; 创建单元测试执行后控制台输出&#xff1a; Test ignored. 解决方案&#xff1a; 测试文件路径与项目文件路径不一致造成的。

Shell test命令

概述 Shell中的 test 命令用于检查某个条件是否成立&#xff0c;它可以进行数值、字符和文件三个方面的测试。 或者使用 [ ] 来判断 数值测试 #!/bin/bash num1100 num2100 if test $[num1] -eq $[num2] thenecho 两个数相等&#xff01; elseecho 两个数不相等&#xff01; …

Google Test简述

Google Test简述 Google Test 是由 Google 推出的 C 测试框架&#xff0c;具有稳定、跨平台、快速等特点&#xff0c;能够为 C 开发人员提供有效的单元测试和集成测试工具。Google Test 支持 Linux、macOS 和 Windows 操作系统&#xff0c;同时支持 gcc、clang 和 MSVC 等多种…

8051单片机基础4:数据存储类型(data,idata,xdata,code)

文章目录 存储类型使用方法详细说明8051存储器结构dataidatabdatapdataxdatacode 关于作者 参考来源&#xff1a;Keil > Help > uVision Help > Cx51 Compiler User’s Guide > Language Extensions > Memory Types 存储类型 Cx51编译器可以访问8051的所有存储…

安装xdata步骤

1.修改配置文件/etc/security/limits.conf 修改配置文件/etc/security/limits.conf 在该配置文件中添加&#xff1a; vim /etc/security/limits.conf * soft nofile 65535 * hard nofile 65535修改之后重新SSH连接即可&#xff0c;不需要重启主机或服务 2. 禁用禁用SELINUX …

ObjectARX开发笔记(二)——使用Xdata向AutoCAD图形追加自定义数据

1.自定义数据 ObjectARX开发过程中&#xff0c;有时会使用自定义数据&#xff0c;主要包括&#xff1a; 自定义对象——可以让用户按照自己希望的方式封装数据&#xff0c;并向AutoCAD中添加第三方实体类型&#xff0c;这些实体类型用于与AutoCAD自身实体一样的特性&#xff…

matlab xdata ydata,matlab中set(head1,'xdata',x1,'ydata',y1)什么意思?

满意答案 amuese6418 2014.10.25 采纳率&#xff1a;59% 等级&#xff1a;12 已帮助&#xff1a;8722人 这个主要是set的用法 它是功能 设置对象的属性。 用法 set(H,PropertyName,PropertyValue,…) 用属性值PropertyValue设置关于用参量H 标志的对象(一个或多个)的属性名P…