usb-tools / nu-map

nü-map: a somewhat-more-modern (expeirmental) derivative of umap2 for modern FaceDancer
GNU Affero General Public License v3.0
23 stars 11 forks source link

USBMassStorageInterface has no attribute 'device_class' #13

Closed keesj closed 2 years ago

keesj commented 3 years ago

Running a basic numap-emulate -C mass_storage fails with 'USBMassStorageInterface' object has no attribute 'device_class'. (this is with Facedander).

Looking back at the commit history of Facedancer and nu-map is looked like c4d40ad0942f0a24d89909cf4677542eef257c30 (future: massively clean up our device types) might have broken this functionality. I tried different version from around the time of the last commit to nu-map but I was not possible to really figure out how to get things working again.

INFO:numap:[MassStorageDevice] Setting configuration: 0x0
[ERROR ] Got exception while connecting/running device
ERROR:numap:Got exception while connecting/running device
[ERROR ] Traceback (most recent call last):
  File "/home/pentest/projects/nu-map/numap/apps/emulate.py", line 42, in run
    self.dev.run()
  File "/home/pentest/projects/Facedancer/facedancer/USBDevice.py", line 165, in run
    self.scheduler.run()
  File "/home/pentest/projects/Facedancer/facedancer/core.py", line 509, in run
    task()
  File "/home/pentest/projects/Facedancer/facedancer/USBDevice.py", line 83, in <lambda>
    self.scheduler.add_task(lambda : self.maxusb_app.service_irqs())
  File "/home/pentest/projects/Facedancer/facedancer/backends/greatdancer.py", line 765, in service_irqs
    self._handle_setup_events()
  File "/home/pentest/projects/Facedancer/facedancer/backends/greatdancer.py", line 368, in _handle_setup_events
    self._handle_setup_event_on_endpoint(i)
  File "/home/pentest/projects/Facedancer/facedancer/backends/greatdancer.py", line 402, in _handle_setup_event_on_endpoint
    self.connected_device.handle_request(request)
  File "/home/pentest/projects/Facedancer/facedancer/USBDevice.py", line 235, in handle_request
    handler_entity = recipient.device_class
AttributeError: 'USBMassStorageInterface' object has no attribute 'device_class'

ERROR:numap:Traceback (most recent call last):
  File "/home/pentest/projects/nu-map/numap/apps/emulate.py", line 42, in run
    self.dev.run()
  File "/home/pentest/projects/Facedancer/facedancer/USBDevice.py", line 165, in run
    self.scheduler.run()
  File "/home/pentest/projects/Facedancer/facedancer/core.py", line 509, in run
    task()
  File "/home/pentest/projects/Facedancer/facedancer/USBDevice.py", line 83, in <lambda>
    self.scheduler.add_task(lambda : self.maxusb_app.service_irqs())
  File "/home/pentest/projects/Facedancer/facedancer/backends/greatdancer.py", line 765, in service_irqs
    self._handle_setup_events()
  File "/home/pentest/projects/Facedancer/facedancer/backends/greatdancer.py", line 368, in _handle_setup_events
    self._handle_setup_event_on_endpoint(i)
  File "/home/pentest/projects/Facedancer/facedancer/backends/greatdancer.py", line 402, in _handle_setup_event_on_endpoint
    self.connected_device.handle_request(request)
  File "/home/pentest/projects/Facedancer/facedancer/USBDevice.py", line 235, in handle_request
    handler_entity = recipient.device_class
AttributeError: 'USBMassStorageInterface' object has no attribute 'device_class'
straithe commented 2 years ago

To confirm, are you still seeing this issue @keesj?

straithe commented 2 years ago

I'm going to close this as there hasn't been a response in a while, but please re-open this issue or open a new one if you still need assistance.

ikarus23 commented 1 year ago

I have somewhat the same error. I'm using numap-scan -P fd:/dev/ttyUSB0 with a GreatFet. The error is

DEBUG:numap:[Interface] Received SET_INTERFACE request
[ERROR ] Traceback (most recent call last):
  File "/home/gklostermeier/Programs/greatfet/venv/lib/python3.10/site-packages/numap-2.0.2-py3.10.egg/numap/apps/scan.py", line 50, in run
    device.run()
  File "/home/gklostermeier/Programs/greatfet/venv/lib/python3.10/site-packages/facedancer-2.9-py3.10.egg/facedancer/USBDevice.py", line 165, in run
    self.scheduler.run()
  File "/home/gklostermeier/Programs/greatfet/venv/lib/python3.10/site-packages/facedancer-2.9-py3.10.egg/facedancer/core.py", line 509, in run
    task()
  File "/home/gklostermeier/Programs/greatfet/venv/lib/python3.10/site-packages/facedancer-2.9-py3.10.egg/facedancer/USBDevice.py", line 83, in <lambda>
    self.scheduler.add_task(lambda : self.maxusb_app.service_irqs())
  File "/home/gklostermeier/Programs/greatfet/venv/lib/python3.10/site-packages/facedancer-2.9-py3.10.egg/facedancer/backends/greatdancer.py", line 766, in service_irqs
    self._handle_transfer_events()
  File "/home/gklostermeier/Programs/greatfet/venv/lib/python3.10/site-packages/facedancer-2.9-py3.10.egg/facedancer/backends/greatdancer.py", line 472, in _handle_transfer_events
    self._handle_transfer_complete_on_endpoint(i, self.HOST_TO_DEVICE)
  File "/home/gklostermeier/Programs/greatfet/venv/lib/python3.10/site-packages/facedancer-2.9-py3.10.egg/facedancer/backends/greatdancer.py", line 555, in _handle_transfer_complete_on_endpoint
    self.connected_device.handle_request(self.pending_control_request)
  File "/home/gklostermeier/Programs/greatfet/venv/lib/python3.10/site-packages/facedancer-2.9-py3.10.egg/facedancer/USBDevice.py", line 235, in handle_request
    handler_entity = recipient.device_class
AttributeError: 'USBEndpoint' object has no attribute 'device_class'

ERROR:numap:Traceback (most recent call last):
  File "/home/gklostermeier/Programs/greatfet/venv/lib/python3.10/site-packages/numap-2.0.2-py3.10.egg/numap/apps/scan.py", line 50, in run
    device.run()
  File "/home/gklostermeier/Programs/greatfet/venv/lib/python3.10/site-packages/facedancer-2.9-py3.10.egg/facedancer/USBDevice.py", line 165, in run
    self.scheduler.run()
  File "/home/gklostermeier/Programs/greatfet/venv/lib/python3.10/site-packages/facedancer-2.9-py3.10.egg/facedancer/core.py", line 509, in run
    task()
  File "/home/gklostermeier/Programs/greatfet/venv/lib/python3.10/site-packages/facedancer-2.9-py3.10.egg/facedancer/USBDevice.py", line 83, in <lambda>
    self.scheduler.add_task(lambda : self.maxusb_app.service_irqs())
  File "/home/gklostermeier/Programs/greatfet/venv/lib/python3.10/site-packages/facedancer-2.9-py3.10.egg/facedancer/backends/greatdancer.py", line 766, in service_irqs
    self._handle_transfer_events()
  File "/home/gklostermeier/Programs/greatfet/venv/lib/python3.10/site-packages/facedancer-2.9-py3.10.egg/facedancer/backends/greatdancer.py", line 472, in _handle_transfer_events
    self._handle_transfer_complete_on_endpoint(i, self.HOST_TO_DEVICE)
  File "/home/gklostermeier/Programs/greatfet/venv/lib/python3.10/site-packages/facedancer-2.9-py3.10.egg/facedancer/backends/greatdancer.py", line 555, in _handle_transfer_complete_on_endpoint
    self.connected_device.handle_request(self.pending_control_request)
  File "/home/gklostermeier/Programs/greatfet/venv/lib/python3.10/site-packages/facedancer-2.9-py3.10.egg/facedancer/USBDevice.py", line 235, in handle_request
    handler_entity = recipient.device_class
AttributeError: 'USBEndpoint' object has no attribute 'device_class'

I only have access to the device under test today. So I'm sorry in advance that I can not test any fixes.