如何用Yubico YubiKey SDK在.NET中识别FEITIAN USB FIDO设备?
解决方案
首先明确:Yubico.YubiKey SDK是专门为YubiKey系列设备设计的,无法直接识别FEITIAN这类第三方FIDO设备。要获取FEITIAN的FIDO设备,需要使用通用FIDO2标准库或低层级USB枚举工具,以下是具体可行方案:
方案一:使用通用FIDO2库(推荐)
使用Fido2NetLib(.NET生态中常用的FIDO2标准实现),可以直接枚举所有符合FIDO标准的设备,包括FEITIAN设备。
安装NuGet包
通过NuGet包管理器或.NET CLI安装:Install-Package Fido2NetLib # 或.NET CLI命令 dotnet add package Fido2NetLib枚举FIDO设备代码示例
using Fido2NetLib; using System; using System.Threading.Tasks; class FidoDeviceScanner { static async Task Main(string[] args) { var fido2 = new Fido2(); var devices = await fido2.GetDevicesAsync(); foreach (var device in devices) { Console.WriteLine($"设备ID: {device.Id}"); Console.WriteLine($"设备名称: {device.ProductName}"); Console.WriteLine($"厂商: {device.VendorName}"); // 可进一步获取设备详细FIDO信息 var info = await device.GetInfoAsync(); Console.WriteLine($"支持协议版本: {info.Version}"); Console.WriteLine("---"); } } }
方案二:低层级USB枚举(需管理员权限)
如果需要直接通过USB硬件信息识别FEITIAN设备,可以使用LibUsbDotNet库,通过FEITIAN的USB厂商ID(VID)过滤设备(FEITIAN通用VID为0x096E,具体PID需参考对应设备规格)。
安装NuGet包
Install-Package LibUsbDotNetUSB设备枚举代码示例
using LibUsbDotNet; using LibUsbDotNet.Main; using System; class UsbDeviceScanner { static void Main(string[] args) { // FEITIAN的USB厂商ID var feitianVid = 0x096E; using (UsbDevice usbDevice = UsbDevice.OpenUsbDevice(new UsbDeviceFinder(feitianVid))) { if (usbDevice == null) { Console.WriteLine("未连接FEITIAN USB设备"); return; } Console.WriteLine($"找到设备: {usbDevice.Info.ProductString}"); Console.WriteLine($"厂商ID: {usbDevice.Info.VendorId:X4}"); Console.WriteLine($"产品ID: {usbDevice.Info.ProductId:X4}"); } } }
注意:此方案需要运行程序时拥有管理员权限,且部分设备可能需要安装专用USB驱动。
内容的提问来源于stack exchange,提问作者Parshuram
相关产品推荐
相关产品推荐

