From 7c8a072f4f5d1b6ecced85c616c1138f70cff19a Mon Sep 17 00:00:00 2001 From: Andy Date: Tue, 18 Oct 2011 00:22:30 +0200 Subject: [PATCH] RFID: Add current Keypresser Code --- rfid/rfid_keypresser.py | 55 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100755 rfid/rfid_keypresser.py diff --git a/rfid/rfid_keypresser.py b/rfid/rfid_keypresser.py new file mode 100755 index 0000000..48e0744 --- /dev/null +++ b/rfid/rfid_keypresser.py @@ -0,0 +1,55 @@ +#! /usr/bin/env python + +# by Andrew Karpow +# Public Domain + +from smartcard.CardMonitoring import CardMonitor, CardObserver +from smartcard.util import toHexString +from threading import Condition +import subprocess + +# a simple card observer that prints inserted/removed cards +class printobserver(CardObserver): + + def update(self, observable, (addedcards, removedcards)): + for card in addedcards: + + SELECT_GUID= [0xFF, 0xCA, 0x00, 0x00, 0x00] + print "+Inserted: ", toHexString(card.atr) + + try: + card.connection = card.createConnection() + card.connection.connect() + + # Request UID - Unique Identifier + response, sw1, sw2 = card.connection.transmit(SELECT_GUID) + + except Exception as e: + print str(e) + continue + + # convert UID to hex-string and remove whitespaces + send= toHexString(response).replace(' ', '') + + try: + # Send UID to active window + subprocess.Popen(['xdotool', 'type', send]) + except OSError as e: + print str(e) + + for card in removedcards: + print "-Removed: ", toHexString(card.atr) + + +if __name__ == '__main__': + cardmonitor= CardMonitor() + cardobserver= printobserver() + cardmonitor.addObserver(cardobserver) + + try: + c= Condition() + c.acquire() + c.wait() + except KeyboardInterrupt as e: + cardmonitor.deleteObserver(cardobserver) +