Physical 2 factor authentication device
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.



Project on DevPost:

This project was built at HackWestern2 (, where everyone gets 5 hours of sleep :D

This project was awarded the Best End to End Implementation Prize in HackWestern 2


AuthFID is a hardware implementation of 2 factor authencation activated using a RFID card. It provides fast and secure access to your codes, and you only need to carry a RFID card that is registered in the system.

Image 1

An overview of the unit

Image 2

The unit shows the current 2-factor-authentication code when activated by a RFID card

Team Members and Roles

  • Jim Gao (jimgao1) (Hashing algorithm, interface programming)
  • Benjamin Cheng (lolzballs) (Team Coordination, JNI Programming, Hardware Programming)
  • Jacky Liao (jackyliao123) (Hardware programming, Linux shell programming, GUI design and programming)


When using 2 factor authentication, it is inconvenient to use a phone when the TOTP code is needed. This device is secured by RFID, and provides fast code access at your desk.


We used the Raspberry Pi for majority of this project, so everything is linux based. Further implementation information can be found below under 'Technology Used'.

The code generation algorithm is using standard TOTP algorithm.

Technology Used

  • Hardware
    • Raspberry Pi (TOTP Code Generation, Display, Networking, Camera)
    • Arduino (RFID Module, Communicate with R-Pi with Serial)
    • Arduino RFID module (controlled by Arduino)
    • Raspberry Pi RF Module (GPIO)
    • Raspberry Pi Camera (Using R-Pi camera connector)
  • Software
    • Linux (Raspbian, Raspberry Pi)
    • Git (source management)
    • C (Raspberry Pi touch screen driver)
    • C++ (Java Hardware Access + Autotype program on Linux host)
    • Java (TOTP Code Gen + Swing Interface + Socket Networking)
    • Bash (Linux shell control + Simple scripting)