ccid 设备通讯(Linux)
这里只介绍一下ccid Linux 开发过程中遇到的一些问题,仅供参考。 在网上搜了一些相关东西,按照下篇说的装了一下,libusb、ccid、pcsc-lite Linux 平台下Libusb & ccid & pcsc-lite & OpenSC通用安装步骤遇到问题:先开启一个终端执行 : /usr/local/sbin/pcscd -adf , 再开启一个终端:在
这里只介绍一下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可以找到下载
更多推荐
所有评论(0)