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.dev0.tar.gz (21.6 kB view details)

Uploaded Source

Built Distribution

mfrc522_python-0.0.5.dev0-py3-none-any.whl (21.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: mfrc522-python-0.0.5.dev0.tar.gz
  • Upload date:
  • Size: 21.6 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.dev0.tar.gz
Algorithm Hash digest
SHA256 6c9327d33e4eda2c1a27effd846dc9df9589231c942b69252b5d388565b7e41e
MD5 37c9f36c93e2b9784858b21afa796141
BLAKE2b-256 12385b7730b4f01c534eb68cdb55d873edd8b34b1964b0c53cd011a30cd9d78c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mfrc522_python-0.0.5.dev0-py3-none-any.whl
Algorithm Hash digest
SHA256 d89b607a56726146e82b47aa113716bc203effcb054d6e37b9e3ea2a6fac0774
MD5 972144419f40d033c8a3da96eb2e6886
BLAKE2b-256 d6c0618e65074440659d7e24919e8ee36d0495722d17cef27adc6d6bbbff447f

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