#!/usr/bin/env python # -*- coding: utf8 -*- # # Copyright 2014,2018 Mario Gomez # # This file is part of MFRC522-Python # MFRC522-Python is a simple Python implementation for # the MFRC522 NFC Card Reader for the Raspberry Pi. # # MFRC522-Python is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # MFRC522-Python is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with MFRC522-Python. If not, see . # import RPi.GPIO as GPIO import MFRC522 import signal continue_reading = True # Capture SIGINT for cleanup when the script is aborted def end_read(signal,frame): global continue_reading print "Ctrl+C captured, ending read." continue_reading = False GPIO.cleanup() # Hook the SIGINT signal.signal(signal.SIGINT, end_read) # Create an object of the class MFRC522 MIFAREReader = MFRC522.MFRC522() # This loop keeps checking for chips. If one is near it will get the UID and authenticate while continue_reading: # Scan for cards (status,TagType) = MIFAREReader.MFRC522_Request(MIFAREReader.PICC_REQIDL) # If a card is found if status == MIFAREReader.MI_OK: print "Card detected" # Get the UID of the card (status,uid) = MIFAREReader.MFRC522_Anticoll() # If we have the UID, continue if status == MIFAREReader.MI_OK: # Print UID print "Card read UID: "+str(uid[0])+","+str(uid[1])+","+str(uid[2])+","+str(uid[3]) # This is the default key for authentication key = [0xFF,0xFF,0xFF,0xFF,0xFF,0xFF] # Select the scanned tag MIFAREReader.MFRC522_SelectTag(uid) # Authenticate status = MIFAREReader.MFRC522_Auth(MIFAREReader.PICC_AUTHENT1A, 8, key, uid) print "\n" # Check if authenticated if status == MIFAREReader.MI_OK: # Variable for the data to write data = [] # Fill the data with 0xFF for x in range(0,16): data.append(0xFF) print "Sector 8 looked like this:" # Read block 8 MIFAREReader.MFRC522_Read(8) print "\n" print "Sector 8 will now be filled with 0xFF:" # Write the data MIFAREReader.MFRC522_Write(8, data) print "\n" print "It now looks like this:" # Check to see if it was written MIFAREReader.MFRC522_Read(8) print "\n" data = [] # Fill the data with 0x00 for x in range(0,16): data.append(0x00) print "Now we fill it with 0x00:" MIFAREReader.MFRC522_Write(8, data) print "\n" print "It is now empty:" # Check to see if it was written MIFAREReader.MFRC522_Read(8) print "\n" # Stop MIFAREReader.MFRC522_StopCrypto1() # Make sure to stop reading for cards continue_reading = False else: print "Authentication error"