RFIDIOt is a collection of tools and libraries for exploring RFID technology, written in python. It currently drives a range of RFID readers made by ACG. It provides support for external (currently Compact Flash/USB/Serial) readers, and functions are provided for standard operations such as READ, WRITE, DEBIT, LOGIN etc. Supported standards are ISO 14443A and ISO14443B in the 13.56MHz band, and devices include all MIFARE types, SLE 55Rxx, SLE 66CL160S, SLE 66CLX320P, SR176, SRIX4K, Jewel Tag (IRT0302B11 KSW DIY Eng. Sample), Sharp B, ASK GTML2ISO, TOSMART P064. Support for Smartcards and other RFID operating frequencies and standards are in the pipeline.
It’s called “RFIDIOt” for two reasons:
1. I like puns. This one stands for “RFID IO tools”
2.Since I haven’t done any serious programming for a long time, I felt like an idiot having to learn a whole new language and the code probably looks like it’s written by an idiot. However, python rocks, so it was worth it!
It currently drives a range of RFID readers made by ACG, called the HF Dual ISO and HF Multi ISO, which are both 13.56MHz devices, and the LF MultiTag which is 125/134.2kHz. Frosch Hitag reader/writers are also now supported. There’s no reason it couldn’t work with others, these are just the first ones I got my hands on, and since they present themselves to the O/S as standard serial devices without having to install any drivers, it made interfacing very simple (but see the Technical Note section below as I’ve had some issues recently). I have written some example programs to read/write tags and have started on the library routines to handle the data structures of specific tags like MIFARE®. It is far from complete but I thought I’d follow the “publish early, publish often” philosophy on this one…
PC/SC (MUSCLE) devices, such as the Omnikey CardMan are also supported. I am curently testing with a CardMan 5321.
What standards does it support?
The Dual ISO reader will read (and write) 13.56MHz devices with the following tags:
MIFARE® Standard, MIFARE® 4k, MIFARE® Pro, MIFARE® Ultralight, MIFARE® DESFIRE, MIFARE® SmartMX
SLE 55Rxx, SLE 66CL160S, SLE 66CLX320P, SR176, SRIX4K
ISO14443A Tags
ISO14443B Tags
Jewel Tag (IRT0302B11 KSW DIY Eng. Sample)
Sharp B
ASK GTML2ISO
TOSMART P032/P064
In addition to these, the Multi ISO will also handle ISO 15693, ISO 18000-3, NFC enabled, ICODE standards, specifically:
I-CODE SLI (SL2 ICS 20)
I-CODE EPC (SL2 ICS 10)
I-CODE UID (SL2 ICS 11)
I-CODE
NFC (Reader To Tag Mode)
SLE 55Rxx
SRF55VxxP+S
SLE 66CL160S
SLE 66CLX320P
SR176
SRIX4K
LRI 64
LRI 512
EM4135
KSW Temp Sens ®
Tag-it™ HF-I Standard
Tag-it™ HF-I Pro
ASK GTML
ASK GTML2ISO
The LFX will read/write 125kHz devices with the following tags:
EM4x02
EM4x50
EM4x05 (ISO 11784/5 FDX-B)
Hitag1
Hitag2
HitagS
Q5
TI-RFID SYSTEMS 64 bit R/O & R/W
TI-RFID SYSTEMS 1088 bit Multipage
The Q5 and Hitag2 can be programmed to emulate ‘Unique’ / EM4x02 and FDX-B / EM4x05 standards.
The Frosch will read/write:
Hitag 1
Hitag 2
Hitag S
The Hitag2 can be programmed to emulate ‘Unique’ / EM4x02 and FDX-B / EM4x05 standards.