Cynthion
The Cynthion is an all-new, highly capable USB-hacking multi-tool : The Proxmark of the USB world. Sniff and analyse High-Speed USB traffic on the protocol level, intercept and manipulate USB-devices in real-time, emulate USB-devices and even build your own real USB-devices directly in the FPA.
Built by GreatScottGadgets, the Cynthion shares the same design-DNA as the HackRF: build a powerful, no-compromise tool that is accessible to everyone. The Cynthion's feature-set is unmatched by devices 10 times as expensive and bulky.
As with all GreatScottGadget products, the Cynthion has a rich, mature ecosystem of open-source tools that work out of the box.
Whether you're curious to tinker with USB or you're a engineer building enterprise hardware - the Cynthion is a must-have tool.
Protocol Analyser
Passively capture low, full and high-speed USB traffic and up to 16 related digital signals simultaneously for analysis.Reverse Engineer Communications
Full-featured open-source tools for capturing, filtering, visualising and analysing USB-traffic on a protocol level.MITM USB Devices
Sniff, analyse and manipulate high-speed USB-packets on the wire in real-time via the USBProxy tool.Build your own USB device
Build custom USB devices rapdily in software via Python, or semi-permanently onto the Cynthion's FPGA.Key Features
- Protocol Analyser - Fully-featured low/full/high speed USB Analysis tools via Packetry
- USB Device Designer With Facedancer, build custom USB-devices, either emulated via Python and/or real via the FPGA with LUNA.
- MITM Platform - Real-time manipulation of USB-device communication
- Reverse-Engineering Toolkit - full-stack (software + gateware) tooling for fuzzing, prototyping and emulation of low/full/high-speed USB devices.
- Open Source - 100% open-source software, firmware, gateware and hardware.
- Unibody aluminium case - Robust, sleek annodised aluminium CNC-milled case for complete PCB-protection.
The Cynthion in action
device = USBKeyboardDevice()
async def type_letters():
await device.type_string('r', modifiers=KeyboardModifiers.MOD_LEFT_META)
await asyncio.sleep(0.5)
await device.type_string('calc\n')
main(device, type_letters())
class SwitchControllerInvertXFilter(USBProxyFilter):
def filter_in(self, ep_num, data):
# The fourth byte of our packets contains the
# joystick X position, as a number between 0 and 255.
data[3] = 0xff - data[3]
return en_num, data
Device Specifications
-
FPGA: ECP5 FPGA
-
USB Interfaces:
- Left side: 2x USB Type-C (device-mode)
- Right side: 1x USB Type-C (host/device mode & analysis)
- Right side: 1x USB Type-A (host mode & analysis)
-
Diagnostic Interface: Microchip SAMD11
- JTAG
- USB-Serial
- Register Interface debuggers
- Power: 3x USB Power Switches
- RAM: 64 Mbit (8 MiB) RAM (Buffering + Userspace)
- Flash: 32Mbit (4 MiB) SPI-Flash for standalone FPGA configuration
-
LEDs:
- 6x FPGA Controlled LEDs
- 5x MCU controlled Status LEDs
- IO: 2x Digilent Pmod I/O Connectors
What's included
- 1x Cynthion PCB
- 1x Milled Aluminium Enclosure