Python 通过 ACR122 修改 Mifare 1 卡数据

这篇博客介绍了如何使用Python的pyscard模块,通过ACR122读卡器操作M1卡进行数据修改。内容包括加载认证密钥、外部认证、读取和写入数据到指定块。示例代码演示了修改M1卡61和62块前4位数据的过程。
摘要由CSDN通过智能技术生成

Python 通过 pyscard 模块操作 M1 卡,下载和说明地址:http://pyscard.sourceforge.net/index.html
对 M1 卡的操作 使用 ISO智能卡通用APDU命令集,简称APDU,网上能找到一堆资料。

M1 卡的使用简单分为三部分:
to load auth key to reader
I send: 0xFF 0x82 0x00 0x00 0x06 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
Recive: 90 00 - it’s ok

EXTERNAL AUTHENTICATE命令报文:
 EXTERNAL AUTHENTICATE命令报文
0xFF 0x82 : CLA INS
0x00 0x00:P1,P2
0x06:Lc
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF:数据字段 key

以下各命令格式类似:

to authenticate in block 01
I send: 0xFF 0x86 0x00 0x00 0x05 0x01 0x00 0x01 0x60 0x00
Recive: 90 00 - it’s ok

to read data from block 01
I send: 0xFF 0xB0 0x00 0x01 0x0F
Recive: 90 00

一段可直接提交APDU代码:

from smartcard.scard import *
import smartcard.util

hresult, hcontext = SCardEstablishContext(SCARD_SCOPE_USER)
assert hresult==SCARD_S_SUCCESS
hresult, readers = SCardListReaders(hcontext, [])
assert len(readers)>0
reader = readers[0]
hresult, hcard, dwActiveProtocol = SCardConnect(
    hcontext,
    reader,
    SCARD_SHARE_SHARED,
    SCARD_PROTOCOL_T0 | SCARD_PROTOCOL_T1)

hresult, response = SCardTransmit(hcard,dwActiveProtocol,[0xFF,0x82,0x00,0x00,0x06,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF]) # 写入想要向卡发送的APDU指令,即可提交执行

print(response) #卡片返回的数据
print smartcard.util.toHexString(response)


def load_key():
    response = SCardTransmit(hcard,dwActiveProtocol,[0xFF,0x82,0x00,0x00,0x06,0xF5,0x03,0x9A,0xBB,0x22,0x36])
    print smartcard.util.toHexString(response[1])

def authenticate_block():
    response = SCardTransmit(hcard,dwActiveProtocol,[0xFF,0x86,0x00,0x00,0x05,0x01,0x00,0x3E,0x60,0x00])
    print smartcard.util.toHexString(response[1])

def read_data():
    response = SCardTransmit(hcard,dwActiveProtocol,[0xFF,0xB0,0x00,0x3E,0x0F])
    print smartcard.util.toHexString(response[
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值