gpt4 book ai didi

google-chrome - 智能卡读卡器 "Access denied",同时在 Chrome 上声明与 Webusb 的接口(interface)

转载 作者:行者123 更新时间:2023-12-02 22:48:36 27 4
gpt4 key购买 nike

我正在开发一个 javascript 库,用于使用 CCID 协议(protocol)通过 chrome webusb API 执行智能卡操作。当我在 Linux 和 MacOS 上插入智能卡读卡器时,一切都很顺利,但是当我尝试声明接口(interface)时,我在 Windows 上陷入困境。我尝试以管理员身份运行 chrome,禁用智能卡服务/ Windows 上的 CCID 驱动程序可能会声明该接口(interface),但没有任何作用。我一直有“未能声明接口(interface):访问被拒绝(权限不足)”信息。真的是权限问题吗?或者是我不知道的某些 Windows 服务阻止了访问?

编辑:我在另一台 Mac 上尝试过,但阅读器无法正常工作。从 CCID 驱动程序 info.plist 中删除特定供应商 id/产品 id 后,我设法使其工作。所以我想同样的问题也发生在 Windows 上,CCID 驱动程序正在“阻止”访问接口(interface)。我有什么选择?

设备描述符:

Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.10
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 8
idVendor 0x1a44 VASCO Data Security International
idProduct 0x0001 Digipass 905 SmartCard Reader
bcdDevice 1.02
iManufacturer 1 VASCO
iProduct 2 DP905v1.1
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 93
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0x80
(Bus Powered)
MaxPower 50mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 3
bInterfaceClass 11 Chip/SmartCard
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 0
ChipCard Interface Descriptor:
bLength 54
bDescriptorType 33
bcdCCID 1.00
nMaxSlotIndex 0
bVoltageSupport 3 5.0V 3.0V
dwProtocols 3 T=0 T=1
dwDefaultClock 3700
dwMaxiumumClock 3700
bNumClockSupported 1
dwDataRate 9946 bps
dwMaxDataRate 318280 bps
bNumDataRatesSupp. 53
dwMaxIFSD 254
dwSyncProtocols 00000007 2-wire 3-wire I2C
dwMechanical 00000000
dwFeatures 000404BE
Auto configuration based on ATR
Auto activation on insert
Auto voltage selection
Auto clock change
Auto baud rate change
Auto PPS made by CCID
Auto IFSD exchange
Short and extended APDU level exchange
dwMaxCCIDMsgLen 272
bClassGetResponse echo
bClassEnvelope echo
wlcdLayout none
bPINSupport 0
bMaxCCIDBusySlots 1
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0004 1x 4 bytes
bInterval 32
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0010 1x 16 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x83 EP 3 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0010 1x 16 bytes
bInterval 0

最佳答案

您编辑中的见解是正确的,如果 CCID 驱动程序阻止对设备的访问,则 Chrome 无法访问它。此外,在 Windows 上,操作系统必须知道针对设备加载 WinUSB.sys 驱动程序(Windows 附带),否则任何用户空间应用程序(例如 Chrome)都无法访问它。这可以使用类似 this one 的 INF 文件来完成。或添加Microsoft OS descriptors到设备将“兼容ID”设置为“WINUSB”。

如果您正在构建自己的设备,则后一个选项更可取,因为它将为您的用户提供即插即用支持,而前者仍需要 Windows 用户手动安装步骤。

如果您正在使用现有设备但可以控制 Windows 系统,则与编辑 macOS 驱动程序的 Info.plist 类似,您可以进入 Windows 设备管理器并使用 WinUSB.sys 替换现有驱动程序像上面这样的 INF 文件。

关于google-chrome - 智能卡读卡器 "Access denied",同时在 Chrome 上声明与 Webusb 的接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46179569/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com