The unified diff between revisions [06b25c60..] and [5cb31352..] is displayed below. It can also be downloaded as a raw diff.
#
#
# add_file "mifare-force.py"
# content [19e953e8f99f674bf22abb94f7b078aa109e5e2c]
#
============================================================
--- mifare-force.py 19e953e8f99f674bf22abb94f7b078aa109e5e2c
+++ mifare-force.py 19e953e8f99f674bf22abb94f7b078aa109e5e2c
@@ -0,0 +1,54 @@
+#!/usr/bin/env python2.5
+
+'''mifare-force.py - transport key checker
+Written by David Adam <zanchey@ucc.gu.uwa.edu.au>
+Requires Python 2.5.
+
+Licensed under an MIT-style license: see LICENSE file for details.
+'''
+
+KEYS_A =('\xFF' * 6,
+ '\x00' * 6,
+ '\xA0\xA1\xA2\xA3\xA4\xA5')
+
+KEYS_B =('\xFF' * 6,
+ '\x00' * 6,
+ '\xB0\xB1\xB2\xB3\xB4\xB5')
+
+from serial import Serial
+import mifare
+import sys
+
+comm = Serial(0, baudrate = 19200)
+reader = mifare.MIFAREReader(comm)
+reader.set_led(red = False, green= True)
+
+print 'MIFARE TRANSPORT KEY CHECKER'
+
+for key in KEYS_A:
+ print "Trying key A: %s" % repr(key)
+ for sector in range(39):
+ x = reader.select_card()
+ try:
+ reader.sector_login((sector, 0), key)
+ except:
+ pass
+ else:
+ print 'Successful login: sector %s, key A %s' % (sector, repr(key))
+
+print '---------'
+print 'Note: successful logins with key B may be useless - default ACLs deny read access to key B.'
+
+for key in KEYS_B:
+ print "Trying key B: %s" % repr(key)
+ for sector in range(39):
+ x = reader.select_card()
+ try:
+ reader.sector_login((sector, 0), key, keytype = 1)
+ except:
+ pass
+ else:
+ print 'Successful login: sector %s, key B %s' % (sector, repr(key))
+
+reader.set_led(red = True, green= False)
+reader.beep(100)