diff --git a/.gitignore b/.gitignore index bdfe550..14f41bf 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,7 @@ __pycache__ +build +dist +python3_validity.egg-info/ tls.dict *.bin *.log diff --git a/README.md b/README.md index f11309e..3f27420 100644 --- a/README.md +++ b/README.md @@ -4,9 +4,9 @@ Originally designed to capture some of my findings for 138a:0097, but if you man ## Setting up -To install Python dependencies run +On a Debian-based system, to re-install from sources (useful for testing): ``` -$ pip3 install -r requirements.txt +./setup.py install --force --install-layout deb --prefix=/usr --root=/ ``` ## Initialization diff --git a/led-dance.py b/bin/validity-led-dance old mode 100644 new mode 100755 similarity index 100% rename from led-dance.py rename to bin/validity-led-dance diff --git a/validity-sensors-initializer.py b/bin/validity-sensors-initializer old mode 100644 new mode 100755 similarity index 100% rename from validity-sensors-initializer.py rename to bin/validity-sensors-initializer diff --git a/dbus-service.py b/dbus_service/dbus-service old mode 100644 new mode 100755 similarity index 85% rename from dbus-service.py rename to dbus_service/dbus-service index fa1c68b..a221a9d --- a/dbus-service.py +++ b/dbus_service/dbus-service @@ -1,4 +1,6 @@ +#!/usr/bin/env python3 +import argparse import dbus import dbus.mainloop.glib import dbus.service @@ -20,12 +22,6 @@ GLib.threads_init() INTERFACE_NAME='io.github.uunicorn.Fprint.Device' -logging.basicConfig(level=logging.DEBUG) - - -bus = dbus.SystemBus() -bus_name = dbus.service.BusName('io.github.uunicorn.Fprint', bus) - loop = GObject.MainLoop() usb.quit = lambda e: loop.quit() @@ -36,7 +32,7 @@ def uid2identity(uid): return sid_from_string(sidstr) class Device(dbus.service.Object): - def __init__(self): + def __init__(self, bus_name): dbus.service.Object.__init__(self, bus_name, '/io/github/uunicorn/Fprint/Device') @dbus.service.method(dbus_interface=INTERFACE_NAME, @@ -153,12 +149,27 @@ class Device(dbus.service.Object): logging.debug('EnrollStatus') -init.open() +if __name__ == '__main__': + parser = argparse.ArgumentParser('Open fprintd DBus service') + parser.add_argument('--debug', help='Enable tracing', action='store_true') + args = parser.parse_args() -usb.trace_enabled = True -tls.trace_enabled = True + if args.debug: + logging.basicConfig(level=logging.DEBUG) -svc = Device() -loop.run() + init.open() + + usb.trace_enabled = True + tls.trace_enabled = True + + bus = dbus.SystemBus() + bus_name = dbus.service.BusName('io.github.uunicorn.Fprint', bus) + + svc = Device(bus_name) + mgr = bus.get_object('net.reactivated.Fprint', '/net/reactivated/Fprint/Manager') + mgr = dbus.Interface(mgr, 'net.reactivated.Fprint.Manager') + mgr.RegisterDevice(svc) + logging.debug('Registered') + + loop.run() -print("Normal exit") diff --git a/setup.py b/setup.py new file mode 100755 index 0000000..75e0874 --- /dev/null +++ b/setup.py @@ -0,0 +1,20 @@ +#!/usr/bin/python3 + +from setuptools import setup + +setup(name='python3-validity', + version='0.1', + py_modules = [], + packages=['validitysensor'], + scripts=[ + 'bin/validity-led-dance', + 'bin/validity-sensors-initializer', + ], + install_requires=[ + 'cryptography >= 2.1.4', + 'pyusb >= 1.0.2' + ], + data_files=[ + ('lib/python-validity/', ['dbus_service/dbus-service']), + ] +) diff --git a/validitysensor/__init__.py b/validitysensor/__init__.py new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/validitysensor/__init__.py @@ -0,0 +1 @@ + diff --git a/validitysensor/usb.py b/validitysensor/usb.py index 9c5f29f..2c43539 100644 --- a/validitysensor/usb.py +++ b/validitysensor/usb.py @@ -15,6 +15,7 @@ supported_devices=[ def custom_match(d): + print(d.address) return (d.idVendor, d.idProduct) in supported_devices class Usb():