Skip to main content

The mfrc522 library is used to interact with RFID readers that use the MFRC522 chip

Project description

MFRC522-python

The mfrc522 library is used to interact with RFID readers that use the MFRC522 chip.

Example Code

read.py

To read a particular sector and convert the bytes to plain string/text.

from mfrc522 import MFRC522

reader = MFRC522()
def read(trailer_block, key, block_addrs):
    (status, TagType) = reader.Request(reader.PICC_REQIDL)
    if status != reader.MI_OK:
        return None, None
    (status, uid) = reader.Anticoll()
    if status != reader.MI_OK:
        return None, None
    id = uid
    reader.SelectTag(uid)
    status = reader.Authenticate(
        reader.PICC_AUTHENT1A, trailer_block , key, uid)
    data = []
    text_read = ''
    if status == reader.MI_OK:
        for block_num in block_addrs:
            block = reader.ReadTag(block_num)
            if block:
                data += block
        if data:
            text_read = ''.join(chr(i) for i in data)
    reader.StopAuth()
    return id, text_read

trailer_block = 11
key = KEY = [0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF]
block_addrs = [8,9,10]
id, text = read(trailer_block, key, block_addrs)
while not id:
    id, text = read(trailer_block, key, block_addrs)

print(id)
print(text)

write.py

To write a particular sector.

from mfrc522 import MFRC522

reader = MFRC522()

def write(trailer_block, key, block_addrs, text):
    (status, TagType) = reader.Request(reader.PICC_REQIDL)
    if status != reader.MI_OK:
        return None, None
    (status, uid) = reader.Anticoll()
    if status != reader.MI_OK:
        return None, None
    reader.SelectTag(uid)
    status = reader.Authenticate(
        reader.PICC_AUTHENT1A, trailer_block, key, uid)
    reader.ReadTag(trailer_block)
    if status == reader.MI_OK:
        data = bytearray()
        data.extend(bytearray(text.ljust(
            len(block_addrs) * 16).encode('ascii')))
        i = 0
        for block_num in block_addrs:
            reader.WriteTag(block_num, data[(i*16):(i+1)*16])
            i += 1
    reader.StopAuth()
    return uid, text[0:(len(block_addrs) * 16)]

trailer_block = 11
block_addrs = [8, 9, 10]
key = [0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF]
text = "some random text"
uid, text_in = write(trailer_block, key, block_addrs, text)
while not uid:
    uid, text_in = write(trailer_block, key, block_addrs, text)
print(uid, text_in)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mfrc522-python-0.0.5.dev4.tar.gz (21.7 kB view details)

Uploaded Source

Built Distribution

mfrc522_python-0.0.5.dev4-py3-none-any.whl (22.5 kB view details)

Uploaded Python 3

File details

Details for the file mfrc522-python-0.0.5.dev4.tar.gz.

File metadata

  • Download URL: mfrc522-python-0.0.5.dev4.tar.gz
  • Upload date:
  • Size: 21.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.0

File hashes

Hashes for mfrc522-python-0.0.5.dev4.tar.gz
Algorithm Hash digest
SHA256 f58ab3258d54481b2d07147e0dba2a6610a868c2c0aa7185be20a4e46e913100
MD5 3c0285d993b0a1115836ece6d11bd684
BLAKE2b-256 0cde0239ed94b5bad0b26d4aca84bbb1e6c31fd367f8cb385df7fc78511e7dc8

See more details on using hashes here.

File details

Details for the file mfrc522_python-0.0.5.dev4-py3-none-any.whl.

File metadata

File hashes

Hashes for mfrc522_python-0.0.5.dev4-py3-none-any.whl
Algorithm Hash digest
SHA256 c1335431c5a25f46de880c487e41848a516c91ed765d4a2d427afa841c963c81
MD5 94ed2bcd2700c1a5c13d07826d49d2a0
BLAKE2b-256 937d425e5cd0a12f7e7d48f17f2f8ef14b3fab21c3abc300693a7978228863a9

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page