usb_strings.py
authorNIIBE Yutaka <gniibe@fsij.org>
Mon, 25 Jun 2012 01:53:06 +0000 (10:53 +0900)
committerNIIBE Yutaka <gniibe@fsij.org>
Mon, 25 Jun 2012 01:53:06 +0000 (10:53 +0900)
ChangeLog
NEWS
tool/usb_strings.py [new file with mode: 0755]

index b971efd..c6c81b1 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2012-06-25  Niibe Yutaka  <gniibe@fsij.org>
+
+       * tool/usb_strings.py: New.
+
 2012-06-22  Niibe Yutaka  <gniibe@fsij.org>
 
        * tool/stlinkv2.py (stlinkv2.blank_check): Add blank check of
diff --git a/NEWS b/NEWS
index 5695ab8..f3d1e29 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -7,6 +7,10 @@ Gnuk NEWS - User visible changes
 ** New tool: stlinkv2.py
 This tool is SWD flash ROM writer with ST-Link/V2.
 
+** New tool: usb_strings.py
+This tool is to dump USB strings, which include revision detail and config
+options.
+
 
 * Major changes in Gnuk 0.20
 
diff --git a/tool/usb_strings.py b/tool/usb_strings.py
new file mode 100755 (executable)
index 0000000..5d50c55
--- /dev/null
@@ -0,0 +1,60 @@
+#! /usr/bin/python
+
+"""
+usb_strings.py - a tool to dump USB string
+
+Copyright (C) 2012 Free Software Initiative of Japan
+Author: NIIBE Yutaka <gniibe@fsij.org>
+
+This file is a part of Gnuk, a GnuPG USB Token implementation.
+
+Gnuk is free software: you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Gnuk is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
+License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
+"""
+
+import usb, sys
+
+USB_VENDOR_FSIJ=0x234b
+USB_PRODUCT_GNUK=0x0000
+
+def gnuk_devices():
+    busses = usb.busses()
+    for bus in busses:
+        devices = bus.devices
+        for dev in devices:
+            if dev.idVendor != USB_VENDOR_FSIJ:
+                continue
+            if dev.idProduct != USB_PRODUCT_GNUK:
+                continue
+            yield dev
+
+title = [ '', 'Vendor', 'Product', 'Serial', 'Revision', 'Config', 'Sys' ]
+
+def main(n):
+    for dev in gnuk_devices():
+        handle = dev.open()
+        print "Device: ", dev.filename
+        try:
+            for i in range(1,n):
+                str = handle.getString(i, 512)
+                print "%10s: %s" % (title[i], str)
+        except:
+            pass
+        del dev
+
+if __name__ == '__main__':
+    if len(sys.argv) > 1:
+        n = int(sys.argv[1])
+    else:
+        n = 7                   # Gnuk has seven strings
+    main(n)