Skip to content

Releases: greatscottgadgets/facedancer

3.1.0

08 Jan 07:45
3.1.0
f46d3a1
Compare
Choose a tag to compare

This is a breaking release which may require updates to your usage of Facedancer API's.

Changed

  • Dropped support for Python 3.8 and 3.9. The minimum supported Python version is now Python 3.10.
  • The descriptor API has been changed and expanded to handle more complex device definitions:
    • New USBDescriptor property: include_in_config, which specifies whether the descriptor should be included in a
      GET_CONFIGURATION response.
    • Descriptors attached to endpoints are now instantiated (replaces #139)
    • The instantiate_subordinates function is redesigned to avoid silent dropping of subordinates with duplicate
      identifiers.
    • Orderings of declaration/insertion of subordinates are preserved, allowing control of ordering in binary
      configurations.
    • Fixes to convert some fields to the right types in from_binary_descriptor methods.
    • A dictionary of known strings and their indexes may be passed to from_binary_descriptor methods.
    • The number field of USBDescriptor is made optional, as it is not required for descriptors attached in a
      configuration.
    • The type_number field will now be inferred from the raw bytes if not otherwise specified.
    • Add @include_in_config and @requestable(number=N) decorators for use on declared descriptor classes.
    • Add docstrings for all USBDescriptor fields.
    • More information: #126 #141

Fixed

  • USBProxy errors after changes for alternate interface settings.

Added

  • Round-trip support for creating Facedancer devices, configurations, interfaces, endpoints and descriptors from
    binary data to objects, to code, to objects and back to binary data.
  • New backend method: validate_configuration for rejecting USB device configurations that are not supported by a
    given backend.

3.0.6

27 Nov 12:08
3.0.6
9b81d36
Compare
Choose a tag to compare

Fixed

  • Updated Keyboard device / rubber-ducky to work with new descriptor handling features.

3.0.5

25 Nov 12:38
3.0.5
ef9a920
Compare
Choose a tag to compare

Added

  • Support switching between alternate interface settings.
  • Improved Facedancer descriptor functionality.
  • Log a warning when Moondancer needs system permissions for the interface.
  • Group Facedancer request handler suggestions by their recipients.
  • Implement the raw field in HIDReportDescriptor. (tx @jalmeroth!)

Fixed

  • Moondancer: Only prime control endpoints on receipt of a setup packet.
  • Moondancer: Use ep_out_interface_enable instead of ep_out_prime_endpoint where appropriate.

3.0.4

10 Oct 08:34
3.0.4
008fa0c
Compare
Choose a tag to compare

Added

  • Example: examples/coroutine.py demonstrates how to create a custom main function and the use of coroutines.
  • Keyboard shortcut: Ctrl-C will now gracefully exit a Facedancer emulation.

3.0.3

19 Sep 12:16
3.0.3
cfb3d58
Compare
Choose a tag to compare

Added

  • Support for specifying string descriptor indices.
  • Allow supported_languages = None for device definitions.
  • Provide an error message when device claim/release fails.
  • New backend method: clear_halt()
  • New backend method: send_on_control_endpoint()
  • HydraDancer backend. (tx @kauwua!)

Fixed

  • Correct byteorder for bcdUSB and bcdDevice.
  • Older facedancer backends were not derived from FacedancerBackend.
  • Log message in handle_set_interface_request was using the incorrect logging method. (tx @kawua!)

3.0.2

20 Aug 14:32
3.0.2
38d8815
Compare
Choose a tag to compare

Changed

  • Added support for Cynthion on Windows.
  • Update docs to reflect current status of GreatFET support on Windows.

3.0.1

19 Aug 14:06
3.0.1
368597d
Compare
Choose a tag to compare

Changed

  • USBProxy now auto-detaches kernel drivers for the device being proxied.
  • Updated documentation with current status of Facedancer support on Windows.

Fixed

  • Clarify the explanatory text for endpoint numbers in the app template. (tx @salcho!)
  • Shutting down Facedancer proxy devices could result in a LIBUSB_ERROR_BUSY (tx @mipek!)
  • Facedancer devices would be incorrectly identified as goodfet when /dev/ttyUSB0 exists on the host device.
  • Fixed ambiguous documentation terminology to always use one of "Target Host", "Control Host".

3.0.0

18 Jun 07:36
4506a0e
Compare
Choose a tag to compare

Added

  • Facedancer documentation has been updated and can be found at: https://facedancer.readthedocs.io
  • A new backend has been added for the Great Scott Gadgets Cynthion.
  • Emulations can now set USB device speed on supported boards.

Changed

  • The Facedancer core API has been rewritten. See the Facedancer documentation for details.
  • Some legacy applets have been replaced with new examples based on the modern Facedancer core:
    • facedancer-ftdi.py => ftdi-echo.py
    • facedancer-keyboard.py => rubber-ducky.py
    • facedancer-umass.py => mass-storage.py

Fixed

  • 64bit LBA support has been added to the mass-storage.py example. (Tx @shutingrz!)

Removed

  • The legacy Facedancer core has been removed. If you're using scripts or training materials that depend on features or APIs removed in v3.0.x please use
    v2.9.x.
  • All legacy applets not ported to the modern Facedancer core have been removed.

2.9.0

19 Feb 14:37
664c865
Compare
Choose a tag to compare

This release is intended as a reference point for anyone who has scripts, training materials etc. that are based on Facedancer v2.x features or API's that have been deprecated from v3 onwards.

Any future bug-fixes or backports to Facedancer 2.9.x should use the v2.9.x branch as the starting point for forks or PR's.