SCardEstablishContext:服务不可用

Ebr*_*emi 11 linux smartcard backtrack libusb

我安装了以下软件包:

  • libusb-dev
  • libusb++-0.1-4c2
  • libccid
  • 个人电脑
  • libpcsclite1
  • libpcsclite-dev
  • 项目清单
  • libpcsc-perl
  • pcsc-tools

但是当我发送 pcsc_scan 命令时,我收到了以下输出:

root@bt:/# pcsc_scan
PC/SC device scanner
V 1.4.16 (c) 2001-2009, Ludovic Rousseau <ludovic.rousseau@free.fr>
Compiled with PC/SC lite version: 1.5.3
SCardEstablishContext: Service not available.
root@bt:/#
Run Code Online (Sandbox Code Playgroud)

为什么?

注意:我使用 BackTrack5

小智 16

看起来您的 pcscd 没有运行(service pcscd start)。


san*_*mai 6

Quickstrace pcsc_scan显示它尝试打开一个不存在的文件/var/run/pcscd/pcscd.comm

stat("/var/run/pcscd/pcscd.comm", 0x7fff315e9dc0) = -1 ENOENT (No such file or directory)
....
SCardEstablishContext: Service not available.
...
exit_group(-1)                          = ?
+++ exited with 255 +++
Run Code Online (Sandbox Code Playgroud)

事实上它不存在:

$ ls /var/run/pcscd/pcscd.comm
ls: cannot access '/var/run/pcscd/pcscd.comm': No such file or directory
Run Code Online (Sandbox Code Playgroud)

这是因为 pcscd 有两个部分:pcscd.servicepcscd.socket后者负责丢失文件。因此,正确的解决方案是:

sudo systemctl restart pcscd.socket
Run Code Online (Sandbox Code Playgroud)

演示:

stat("/var/run/pcscd/pcscd.comm", 0x7fff315e9dc0) = -1 ENOENT (No such file or directory)
....
SCardEstablishContext: Service not available.
...
exit_group(-1)                          = ?
+++ exited with 255 +++
Run Code Online (Sandbox Code Playgroud)

现在你可以好好享受你的了pcsc_scan