首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pcscd协议更改,但atr不更改。

pcscd协议更改,但atr不更改。
EN

Stack Overflow用户
提问于 2016-06-28 08:06:16
回答 2查看 340关注 0票数 0

我一直在研究hid万能5325 cl,并试图获得ATR值。我在Ubuntu上使用pcscd和pyscard库。系统自动获得ATR使用T0协议,但我需要原始返回。在使用helloprox或万能软件的窗口上,我可以得到我需要的东西,但在ubuntu上,尽管我已经更改了协议,但ATR没有改变。

下面是我使用的代码:

代码语言:javascript
复制
class PrintObserver(CardObserver):

"""A simple card observer that is notified
when cards are inserted/removed from the system and
prints the list of cards
"""

def update(self, observable, actions):
    (addedcards, removedcards) = actions
    for card in addedcards:
       card.connection=card.createConnection()
       card.connection.connect(protocol=CardConnection.RAW_protocol)

    binary_atr=bin(int(toHexString(card.connection.getATR()).replace(" ",""), 16))

       binary_atr=binary_atr[len(binary_atr)-24:len(binary_atr)-1]
       print int(binary_atr,2)

    for card in removedcards:
        print "-Removed: ", toHexString(card.atr)


if __name__ == '__main__':
    cardmonitor = CardMonitor()
    cardobserver = PrintObserver()
    cardmonitor.addObserver(cardobserver)

#Get Ports
config=ConfigParser.ConfigParser()
config.read('../config.ini')
Read_Port=int(config.get('CardReaderSocketPorts','Read',0))
Write_Port=int(config.get('CardReaderSocketPorts','Write',0))

# Initialise socket
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
server_address = ('localhost', Read_Port)
return_address = ('localhost', Write_Port)
sock.bind(server_address)

while 1:
  message, address = sock.recvfrom(4096)
  if message:
    parsed_json=json.loads(message)

    #Single Line
    if parsed_json['set'].upper()=="Stop":
        sock.sendto('{"success":"True"}',return_address)        
        break


# don't forget to remove observer, or the
# monitor will poll forever...
cardmonitor.deleteObserver(cardobserver)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-30 10:46:14

联系了Omnikey支持,解决了问题。与开发人员指南一样,我正在寻找配置文件"/etc/cmrfid.ini“来更改prox格式。文件名改为"/etc/Omnikey.ini“

票数 0
EN

Stack Overflow用户

发布于 2016-06-28 20:14:50

有些考虑可能会有所帮助,即使它们没有添加到完整的答案中:

  • 您正在使用非接触式卡或标签。
  • 这些标记没有ATR,但取决于协议,比如ATQB或ATS,它们的结构完全不同。
  • PCSC是一个过时的软件概念,它严格地要求一个ATR。
  • 因此,非接触式读取器制造商必须根据从卡片上获得的信息发明一种ATR。
  • 您的软件接收到的"ATR“是本发明的结果。
  • Omnikey显然使用Windows注册表来控制发明过程,这显然是一种不可移植的方法。

因此,我的建议是,联系Omnikey支持,如何从Linux出发。根据我的经验,他们是合作的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38070499

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档