使 USB 可访问
Cynthion 是一款用于构建、测试、监控和试验 USB 设备的一体化工具。Cynthion 的数字硬件围绕独特的基于 FPGA 的架构构建,可以完全定制以适应手头的应用。因此,它可以用作高速 USB 协议分析仪、USB 研究多功能工具或 USB 开发平台。
Cynthion 开箱即用,充当 USB 协议分析器,能够捕获和分析主机与任何低速、全速或高速 (“USB 2.0”) USB 设备之间的流量。它与我们的开源分析软件无缝协作。
结合我们的 LUNA gateware 和 Facedancer 库,Cynthion 成为一款多功能的 USB 研发工具。Facedancer 可以快速轻松地创建或试验真实的 USB 设备,而不仅仅是仿真,即使您没有数字硬件设计、HDL 或 FPGA 架构方面的经验!
核心功能
Cynthion 是一款完全可重新配置的测试仪器,可提供使用 USB 以及掌握 USB 所需的所有硬件、门件、固件和软件。以下是您可以应用 Cynthiion 应对的一些挑战:
- 低速、全速和高速 USB 的协议分析。Cynthion 提供无源 USB 监控所需的一切。通过我们的 Packetry USB 分析软件,Cynthion 提供了无源 USB 监测所需的一切。
- 创建您自己的低速、全速或高速 USB 设备。LUNA 提供 Amaranth gateware,允许您在 gateware、固件或两者的组合中创建 USB 设备。使用 Facedancer 库,您可以在高级 Python 中创建或模拟真实的 USB 设备。
- 对 USB 通信的中间干预者 (MitM) 攻击。Cynthion 硬件可以充当“USB 代理”,能够在 USB 数据在主机和设备之间流动时透明地修改 USB 数据。每个板的三个 USB Type-C 连接允许同时高速代理,同时保持与主机的高速连接。因此,您可以在有或没有主机 PC 帮助的情况下代理连接。
- USB 逆向工程和安全研究。Cynthion 硬件和 LUNA gateware 代表了 Facedancer 和 USB 模糊测试库等研究工具的专用后端,从而简化了兼容和不兼容 USB 设备的仿真和快速原型设计。与其他 USB 仿真解决方案不同,基于 Cynthion 的硬件是可动态重新配置的,因此您可以灵活地创建任何端点配置并参与几乎任何 USB(错误)行为。
开源 USB 协议分析器
Cynthion 包括低速、全速或高速 USB 协议分析所需的所有硬件,这意味着它可以提供与 TotalPhase Beagle 480 或 LeCroy Mercury 系列等昂贵的商用 USB 分析仪相同的核心功能。
然而,与现有的 USB 解决方案不同,Cynthion 的分析仪堆栈完全建立在强大的开源工具之上。通过利用 Amaranth gateware-generation 库和超快速的开放式 FPGA 工具,您可以根据手头的任务自定义 Cynthion,从而使其能够访问独特的功能,例如用户定义的硬件触发和同时捕获额外的外部或内部信号。
Cynthion 使用开源 Packetry 分析器前端,这是一个快速的跨平台工具,用于捕获、查看和分析 USB 捕获。Packetry 有助于使 USB 流量更易于阅读,同时平稳高效地处理大型高速捕获。由于 Packetry 是完全开源的,因此您可以根据需要对其进行自定义。
学习 USB 的教育平台
一套完全开源的培训材料将引导您了解 USB 的基础知识 - 包括 USB 基本元素的描述和图表,例如此处的 USB 传输。
单击可展开。
Cynthion 团队在 USB 教育方面有着悠久的历史。我们开发了许多不同难度级别的开源 USB 培训。Cynthion 的可定制架构让您不仅可以观看数据包飞过,还可以做更多的事情。使用 Cynthion,您可以联系和接触各个级别的 USB 流量。当您可以将某物拆开、在里面四处探索并以巧妙的方式纵它时,了解它的工作原理要容易得多。Cynthion 为您提供这种级别的控制。
轻松创建您自己的 USB 设计
Cynthion 是从头开始构建的,旨在促进创建新 USB 设备的过程。无论您是资深的低级硬件设计师还是新手,Cynthion 都会以多种方式让您的生活更轻松。
首先,它的 Facedancer 后端允许您使用几行 Python 快速描述整个自定义 USB 设备,因此您可以立即在真实硬件上试用它们。此外,为了帮助您入门,Facedancer 附带了一组现有设备模板:
# Using a Facedancer pre-made device, you can create a
# "USB rubber ducky" with only a few lines of python!
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())
而且,对于那些对 FPGA 设计感兴趣的人来说,基于 Amaranth 的 LUNA 门件库使实现 USB 门件变得几乎微不足道。查看我们的示例库,立即开始构建您自己的 gateware 设备!
透明地作 USB 数据
Cynthion 在处理现有 USB 设备时与设计新设备时一样有用。通过让您能够透明地即时注入或修改 USB 数据,它允许您做原本不可能的事情。它对 Facedancer 的 USBProxy 的支持意味着在网络上作 USB 数据就像编写几行 Python 一样简单:
# USBProxy makes manipulating USB data trivial!
# The following few lines are enough to flip the X-axis
# on a Nintendo-branded USB game controller:
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 ep_num, data
Cynthion 的 USB 外围设备是针对每个 USBProxy 应用程序定制的,因此您不仅限于某些 USB 设备配置。理论上,几乎可以代理任何现有的 USB 设备!
逆向工程和安全研究工具
作为 Great Scott Gadgets (GSG) 产品,Cynthion 从一开始就旨在支持新的和创新的研究,但它也支持多种安全和逆向工程应用:
- 实时 USB 分析允许您在协议沿线路飞行时观察它们。
- 用于创建和仿真 USB 设备的简单工具可让您快速开发与现有 USB 主机软件兼容的硬件。
- 使用 LUNA 灵活的 USB 堆栈,您可以轻松生成不合规的流量,用于对各种主机或在这些主机上运行的软件和驱动程序进行模糊测试!
- USBProxy Meddler-in-the-Middle (MitM) 功能使您能够在 USB 数据在主机和设备之间传递时对其进行作,以便您可以在设备偏离既定协议时“看到会发生什么”。
技术规格
- 开源 FPGA 流程支持的 Lattice Semiconductor LFE5U-12F ECP5 FPGA
yosys+nextpnr
- 三个高速 USB 接口,每个接口都连接到一个 USB3343 PHY,运行速度高达 480 Mbps。
- 两个 USB Type-C 连接器,用于设备模式通信(左侧)
- 一个 USB Type-C 连接器,用于主机模式通信、设备模式通信或 USB 分析(右侧)
- 一个 USB Type-A 连接器,用于主机模式通信或 USB 分析(右侧,与 Type-C 连接器共享)
- Microchip SAMD11 调试控制器允许用户配置 FPGA,并提供许多诊断接口:
- 一个完整的、用户可编程的 JTAG 控制器,能够配置 FPGA 并通过 JTAG 与用户设计进行通信
- 用于 FPGA 调试 I/O 的内置 USB 转串行通信桥接器
- 各种简单的内置调试机制,包括允许您创建简单的、PC 可访问的寄存器接口的实用程序
- 三个 USB 电源开关允许您控制右侧 USB 连接器的电源,从而促进被分析的 USB 供电设备的受控电源循环。
- 64 Mbit (8 MiB) RAM,用于缓冲 USB 流量或用于用户应用程序
- 两个 Digilent Pmod™ 兼容 I/O 连接器,提供 16 个支持用户 FPGA 应用的高速 FPGA 用户 IO
- 32 Mbit (4 MiB) SPI 连接闪存,用于无 PC FPGA 配置
- 6 个 FPGA 连接的用户 LED 和 5 个微控制器管理的状态 LED
- PAC1954 4 通道 I2C 功率监控器,用于测量所有四个 Cynthion USB 端口上的 VBUS 电压和电流。
- 两个FUSB302B I2C Type-C 端口控制器,用于 AUX 和 TARGET-C 端口,支持 USB Power Delivery 或自定义 Type-C 行为。
铣削铝制外壳
为了在使用中保护您的 Cynthion,您可以选择我们坚固的铣削铝外壳,它完全包围并保护 Cynthion 的电子设备:
Cynthion 在其 CNC 铣削铝制外壳中的 3D 渲染
每个表壳均采用实心铝精确 CNC 铣削而成,然后经过阳极氧化处理,以获得光滑的哑光黑色表面光洁度。表壳设计采用复杂的内部图案,专为其包含的 Cynthion 量身定制。这种定制最大限度地提高了外壳密度,以提供强大的保护和异常坚固的感觉——而不会影响 Cynthion 的小尺寸或轻重量。
比较
辛西恩 | 比格犬 USB 12 | 比格犬 USB 480 | USB 资源管理器 200 | OpenVizsla | PhyWhisperer-USB 端口 | GreatFET 一号 | |
---|---|---|---|---|---|---|---|
低速/全速支持 | Y | Y | Y | Y | Y | Y | Y |
高速支持 | Y | N | Y | Y | Y | Y | N |
支持 USB 分析 | Y | Y | Y | Y | Y | 有限 | N |
外部缓冲器 DRAM | Y | N | Y | Y | Y | N | N |
高级分析触发 | Y | N | 有限 | 有限 | N | Y | N |
支持用户 USB 设计 | Y | N | N | N | 非官方¹ | 非官方¹ | Y |
Facedancer 支持 | Y | N | N | N | N | N | 仅全速 |
MITM 支持 | Y | N | N | N | N | N | 有限 |
支持 USB 设备的端口 ² | 3 | 0 | 0 | 0 | 1 | 1 | 1 |
支持 USB Host 的端口 ³ | 1 | 0 | 0 | 0 | 0 | 0 | 1 |
目标功率控制 | Y | N | N | N | N | Y | 仅限主机模式 |
额外/用户 I/O | 16 (PMOD) | 0 | 4 (mini-DIN 连接器) | 0 | 22 (0.1“ 接头) | 12 (顺时针连接器) | 100 (0.1“ 接头) |
LEDS / 独特颜色 | 11 / 9 | 1 / 1 | 3 / 2 | 3 / 1 | 3 / 2 | 5 / 3 | 4 / 2 |
板载调试硬件 ⁴ | Y | N | N | N | 仅限 UART | 仅限 UART | Y |
支持独立作 ⁵ | Y | N | N | N | N | N | 有限 |
用户可定制的 FPGA | Y | N | N | N | Y | Y | 不适用 |
usbc.tf 培训材料 | Y | N | N | N | N | N | Y |
打开 HW/FW/SW | Y | N | N | N | Y | Y | Y |
打开工具链 | Y | N | N | N | N (ISE) | N (维瓦多) | Y (非 FPGA) |
等效大小 | 7x7 乐高®瓷砖 | 一副纸牌 | 哈克RF 一号 | 两块砖 | 哈克RF 一号 | 一副纸牌 | 一副纸牌 |
成本(美元或等值美元) | 149 美元 | 495 美元 | 1,295 美元 | 1,599 美元 | 180 美元 ⁶ | 250 美元 | 89 美元 |
¹通过用 LUNA 的开放式门件替换官方门件
² 通过 LUNA 门件、TinyUSB SoC 或 Facedancer
³ 通过 FPGA 门件
⁴ 调试 USB/FPGA 设计
⁵ 用于用户门件或固件设计
⁶ 不再直接提供(价格来自制造开放式设计的第三方)
支持和文档
Cynthion 项目(包括其硬件和 LUNA 网关、固件和软件)已在 GitHub 上公开开发和增强。您可以在 GitHub 上查看其带注释的硬件设计,并在 Read The Docs 上查看其文档。
我们欢迎在 Cynthion Discord 频道中提问和讨论。
如需支持,请在 GitHub 上的 Cynthion 存储库上打开一个问题。
文档链接
用户文档 https://cynthion.readthedocs.io/en/latest/
电路板原理图和设计文件:https://github.com/greatscottgadgets/cynthion-hardware
LUNA Gateware:https://github.com/greatscottgadgets/luna
调试器固件:https://github.com/greatscottgadgets/apollo
软件
Cynthion: https://github.com/greatscottgadgets/cynthion
LUNA: https://github.com/greatscottgadgets/luna
Facedancer: https://github.com/greatscottgadgets/facedancer
Packetry: https://github.com/greatscottgadgets/packetry