IoT ID-20LA RFID Facebook Authenticator
An ID-20LA RFID reader module, authenticating a user to grant access to a Facebook profile, using Windows-specific keyboard shortcuts. In this demo, we're interacting with the mbed.
The purpose of this demo is to show a proof of concept for using an RFID tag as an authentication method, granting special permissions to users of a specific application or website.
As hinted at above, more advanced forms of RFID authentication can be extended to meet a wide variety of needs. One future work may include using a more capable RFID reader, capable of distinguishing between tags of different frequencies and bit numbers.
Information
The ID-20LA RFID reader is compatible with the below ID12RFID library.
This reader is only compatible with 64-bit 125 MHz tags.
USBKeyBoard Library
Import libraryUSBDevice
USB device stack
ID12RFID Library
Import libraryID12RFID
ID12 RFID library for reading 125KHz RFID tags
Code
#include "mbed.h"
#include "ID12RFID.h"
#include "USBKeyboard.h"
#include <string>
using namespace std;
ID12RFID rfid(p14); // uart rx
Serial pc(USBTX, USBRX); // tx, rx
USBKeyboard keyboard;
int tagArr[2] = {36910393, 36926259}; // 2 known tags
string unArr[2] = {"email1@gmail.com", "email2@gmail.com"};
string pwArr[2] = {"myPassword1", "myPassword2"};
int tagNum;
int tagFound(int tag) {
for (int i = 0; i < 2; i++) {
if (tag == tagArr[i])
return i; // known tag
}
return 3; // tag ID not found
}
int main() {
while(1) {
// blocking. return when new rfid detected
if(rfid.readable()) {
tagNum = rfid.read();
int id = tagFound(tagNum);
if (id != 3) {
// if familiar tag
// find username & password
keyboard.keyCode('r', KEY_LOGO); // (Windows-specific) Run program
wait(0.3); // may not be necessary
keyboard.printf("chrome --incognito\r\n");
wait (1.2); // determined experimentally
keyboard.keyCode('l', KEY_CTRL); // "Ctrl + L" = web address change
keyboard.printf("facebook.com\n");
wait(1.2);
// input username, tab to PW field
keyboard.printf("%s\t", unArr[id].c_str());
// hit "ENTER" (\n) to login
keyboard.printf("%s\n", pwArr[id].c_str());
} else {
// new tag (unfamiliar)
// do nothing
}
}
}
}
Remember!
You'll need a breakout USB board to be wired to D+ (p30) and D- (p31) of your mbed. A mini USB-B breakout was used for this demo, but any type USB should suffice.
Wiring Schematic

Information
The wiring schematic for both the ID-12 and the ID-20LA are identical.
Breadboard Circuit
Video Demo
Please log in to post comments.
