这里只介绍一下ccid Linux 开发过程中遇到的一些问题,仅供参考。

   在网上搜了一些相关东西,按照下篇说的装了一下,libusb、ccid、pcsc-lite

 Linux 平台下Libusb & ccid & pcsc-lite & OpenSC 通用安装步骤

遇到问题:

先开启一个终端执行 : /usr/local/sbin/pcscd -adf  , 再开启一个终端:在pcps-lite/src/ 目录, 执行 ./testpcsc , 打印日志如下:

MUSCLE PC/SC Lite unitary test Program

THIS PROGRAM IS NOT DESIGNED AS A TESTING TOOL FOR END USERS!
Do NOT use it unless you really know what you do.

Testing SCardEstablishContext	: Command successful.
Testing SCardIsValidContext	: Command successful.
Testing SCardIsValidContext	: Invalid handle. (don't panic)
Testing SCardListReaderGroups	: Command successful.
Group 01: SCard$DefaultReaders
Testing SCardFreeMemory		: Command successful.
Testing SCardListReaders	: Cannot find a smart card reader. (don't panic)
Testing SCardGetStatusChange 
Please insert a working reader	:
尝试解决方法一: 

打开ccid-1.4.22/readers/supported_readers.txt 文件,添加 ccid设备的pid,vid

注:这个supported_readers.txt文件是用来生成/usr/local/lib/pcsc/drivers/ifd-ccid.bundle/Contents/Info.plist 文件的。

1)用这种方法测试了一个其他公司的key,没有问题。

2)确定这把key也没有问题(在Windows平台能正常传输)

解决方法二: 

在windows平台,用bus hound 抓包,对照 ccid协议分析抓到的包,用libusb 直接发命令,OK, 此方法解决我的问题了。

Device  Phase  Data                                                                                                    Description                       Cmd.Phase.Ofs(rep)
------  -----  ------------------------------------------------------------------------------------------------------  --------------------------------  ------------------
  25.2  OUT    <span style="color:#33cc00;">63 00 00 00  00 00 0c 00  00 00</span>                                                                         c.........                               1.1.0        
  25.2  IN     81 00 00 00  00 00 0c 01  00 00                                                                         ..........                               2.1.0        
  25.2  OUT    <span style="color:#33cc00;">62 00 00 00  00 00 0d 02  00 00</span>                                                                        b.........                               3.1.0        
  25.2  IN     80 16 00 00  00 00 0d 00  00 00 3b ed  00 00 81 31  fe 45 03 41  01 88 88 01  04 08 18 10  25 14 00 91  ..........;....1.E.A........%...         4.1.0        
  25.2  OUT    <span style="color:#33cc00;">61 07 00 00  00 00 0e 01  00 00 11 10  00 45 00 fe  00</span>                                                  a............E...                        5.1.0        
  25.2  IN     82 07 00 00  00 00 0e 00  01 00 11 10  00 45 00 fe  00                                                  .............E...                        6.1.0        
  25.2  OUT    <span style="color:#cc0000;">6f 05 00 00  00 00 0f 00  00 00 00 84  00 00 08</span>                                                         o..............                          7.1.0        
  25.2  IN     80 0a 00 00  00 00 0f 00  00 00 81 17  17 9f 5e 0e  85 aa 90 00                                         ..............^.....                     8.1.0        

这个包中其实绿色指令可能是发实际指令的准备工作吧,只有红色标注部分是我发的命令。

63、62、62、6f都啥含义,手册中都有详细的介绍,有兴趣的也可以对照一下ccid 手册分析一下上边的包。

注:

本人第一次看到手册时(英文版),也是一头雾水,抓了一个包以后,再对照手册看,简单多了。

手册在csdn可以找到下载


Logo

更多推荐