智能卡读卡器"Access denied",同时声称与 Webusb 在铬上的接口



我正在开发一个JavaScript库,以使用Chrome WebUSB API使用CCID协议执行智能卡操作。当我将智能卡读取器插入Linux和MacOS上时,一切都会顺利进行,但是当我尝试声明界面时,我会卡在Windows上。我试图以管理员的身份运行Chrome,禁用智能卡服务/窗户上的CCID驱动程序,以防这些驱动程序声称界面,但没有任何功能。我一直有"未能要求接口:访问被拒绝(权限不足)"信息。真的是一个许可问题吗?还是我不知道阻止访问的某些Windows服务?

编辑:我在另一个Mac上尝试了读者无法正常工作的Mac。从CCID驱动程序信息中删除特定的供应商ID/产品ID后,我设法使其正常工作。因此,我想在Windows上也发生了同样的问题,CCID驱动程序正在"阻止"访问接口。我的选择是什么?

设备描述符:

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)无法访问它。可以使用这样的INF文件或通过将Microsoft OSScriptor添加到设备将"兼容ID"设置为" Winusb"。

来完成。

如果您要构建自己的设备,则最佳选项是可取的,因为它将为您的用户提供插件支持,而前者仍然需要为Windows用户提供手动安装步骤。

如果您正在使用现有设备,但可以控制Windows系统,类似于编辑信息。像上面的INF文件。

我对此非常新鲜,但据我所知,本机驱动程序何时掌握了您的USB设备,您的丢失,浏览器对此无能为力。似乎修复程序可能是更改供应商或产品ID(如果可以这样做),以便没有本机驱动程序会要求您的设备。如果这不是解决方案,则Chrome应用程序具有更多的可能性,并且可能能够克服问题。

相关内容

  • 没有找到相关文章

最新更新