标签: smartcard

使用Java访问智能卡

由于项目分析,我正在努力了解Java如何访问智能卡.我想知道是否有任何类型的虚拟智能卡,我可以使用它来进行一些Java测试?

顺便说一句,我读过Java Card,看起来它用于在卡中运行Java,而不是使用Java进行智能卡数据访问,对吧?

java smartcard

6
推荐指数
1
解决办法
2万
查看次数

用于Objective-C的BER-TLV开源库

我打算从智能卡响应中解析BER-TLV格式来解释数据.

它类似于JACCAL,但在Objective-C或C++中

任何人都可以参考任何开源项目或任何参考来做到这一点?

objective-c smartcard tlv

6
推荐指数
1
解决办法
5168
查看次数

Secure Com SCP02会话:在初始化更新命令的响应中返回的"密钥多样化数据"的作用是什么

在初始化更新命令的响应字段中,密钥分散数据(其包含制造ID和安全域AID的最后两个字节)被返回到Off Card实体.

我想知道这些数据的用途是什么?

我在某地读到,这个密钥多样化数据用于推断Off Card端的基本密钥.我不知道这是对还是错.

如果它是正确的,那么如何使用这种多样化数据在卡片末端导出基本密钥?

请提供你的建议!!

smartcard javacard globalplatform

6
推荐指数
1
解决办法
2856
查看次数

Javacard - 垃圾收集过程中的电力损失

我注意到我的智能卡上有一些非常奇怪的行为(NXP J2E145,J3A081,带有Omnikey 5121读卡器的J3C145):在调用JavaCard方法后立即断电

JCSystem.requestObjectDeletion()
Run Code Online (Sandbox Code Playgroud)

可能会损坏卡:在大约10%的这种断电后,ATR命令非常慢(1000毫秒),我对任何其他APDU(小程序选择,卡管理器认证等)都没有响应.

我知道requestObjectDeletion()的行为取决于供应商的具体实现,所以我的问题非常广泛和开放......

垃圾收集是否"通常"在一次交易中处理?

是否有任何"官方"建议不要在可能的断电情况下调用requestObjectDeletion()?

恩智浦有没有类似的卡片经验?

编辑:

  • 我所有智能卡上的JCSystem.isObjectDeletionSupported()== true.
  • 当尝试连接到损坏的卡的卡管理器小程序时,Eclipse IDE中的JCOP shell报告:

    ATR:3BFB9600008131FE454F4450204D41502053414D3E

    ATR:T = 1
    jcshell:终端未知问题.最后一个终端错误:由于I/O设备错误,无法执行请求.

garbage-collection transactions smartcard javacard

6
推荐指数
1
解决办法
798
查看次数

APDU级别的智能卡读卡器T0 T1通信

我很难理解我必须使用什么协议来与卡T0或T1通信?所以,如果我错了,请纠正我,但如果卡支持两者,读者实际上决定用什么协议与卡通信.

所以我现在的逻辑是:

// if ATR(T1) -> set_params(T1 structure) -> T1 APDU communication
// if ATR(T0) -> set_params(T0 structure) -> T0 APDU communication
Run Code Online (Sandbox Code Playgroud)

但事实证明,逻辑是错误的,它对大多数读者来说都是偶然的.我刚刚发现即使卡ATR返回T1,也希望T0通信的读卡器.

问:确定使用什么协议的逻辑是什么?如果背后有规格,请你指点一下.

编辑:我忘了在操作系统之前提到我的代码处于预启动环境(UEFI).所以我没有(使用)任何API.我的代码处于字节流APDU级别,并使用UEFI UsbIo通信直接与硬件对话.

谢谢大家!

祝一切顺利,

亚历克斯

apdu smartcard smartcard-reader

6
推荐指数
1
解决办法
1万
查看次数

Apple Watch是否检测到Apple Watch?

我是NFC技术的新手.

Apple还没有为开发者开放NFC.这是否意味着第三方应用程序无法在设备上写入数据或触发操作?

但是有可能使用类似于智能卡的RFID阅读器来识别手表吗?

rfid smartcard nfc apple-watch

6
推荐指数
1
解决办法
5636
查看次数

Windows 不会将智能卡信息传递给浏览器

我遇到一个问题,当我尝试从家用计算机连接到雇主的网站时,每当我使用笔记本电脑时,我都不会收到输入智能卡凭据的提示,但是当我使用台式机时,会出现提示,并且发生智能卡身份验证。两个系统都使用Windows 10,我在两个系统上都使用IE11和Chrome。我怀疑可能有一些 Windows 端设置阻止浏览器在我的笔记本电脑上看到我的智能卡,但经过无数个小时的故障排除和在线挖掘每个可能的选项后,我陷入了停滞。

我尝试过的事情:

  • 在第二台计算机上测试智能卡读卡器和卡,没有问题,IE/Chrome 提示输入证书并允许登录雇主网站。
  • Internet 选项 > 安全 > Internet > 自定义级别:仅存在一个证书时不提示选择客户端证书 - 设置为禁用
  • Internet 选项 > 内容 > 证书:为客户端身份验证启用所有智能卡证书
  • Internet 选项 > 高级:启用 SSL 3.0、TLS 1.0/1.1/1.2
  • 安装了雇主要求的所有必需的 PKI 证书

我的智能卡证书确实出现在个人选项卡下,所以我知道笔记本电脑正在看到它们,但由于某种原因 IE 和 Chrome 无法访问证书(通过移除卡、删除证书、重新插入卡并检查来进一步验证)证书回来)。

我知道这不是我的互联网连接或雇主网站的问题,因为我的桌面会适当地提示我输入智能卡证书,因此这里的问题仅限于我的笔记本电脑。至少,该网站应该拉出 Windows 智能卡对话框并提示我输入我的卡,即使它没有插入,但我现在甚至无法做到这一点。

internet-explorer google-chrome pki ssl-certificate smartcard

6
推荐指数
1
解决办法
2万
查看次数

从CVM列表解析EV的CV规则

我已经成功从EMV卡中检索了CVM列表。

0000 0000 0000 0000 4103 4203 1E03 1F02
Run Code Online (Sandbox Code Playgroud)

从EMV规格书3开始,前4个字节和后4个字节为数量,其余为CV规则。使这些成为简历规则4103 4203 1E03 1F02

该书还显示了如何解析CV规则,如下所示: 在此处输入图片说明

我假设我需要将CV规则中的前两个字节转换为二进制并与上表匹配?但是,为什么上表的单元格为空?也有人可以用简单的伪代码算法来解释吗?

apdu smartcard emv smartcard-reader

6
推荐指数
1
解决办法
1178
查看次数

如何通过python从智能卡读取证书?

我有一张智能卡(实际上是 USB 令牌),上面写有一些证书和密钥。现在我需要在 Windows 上使用 python 检索此证书。如何才能实现呢?

我查看了pyscard软件包,但它似乎太低级,可能不是最简单的方法。但如果您知道这个低级答案,那么您的帮助将不胜感激。
似乎CryptAcquireContextpywin32 (win32crypt) 的函数允许我使用智能卡中的私钥进行加密,但我无法获取证书本身。

你有什么建议吗?

python smartcard pyscard wincrypt

6
推荐指数
1
解决办法
6310
查看次数

将Java Applet CAP文件转换为*.class以进行反编译

这是一个CAP文件,可能包含恶意软件代码,没有源代码,也没有导出文件.

它是旧平台版本的CAP文件,即GP211.

我在Classic JVM和Dalvik中拥有丰富的Java逆向工程经验.但Java Card是较不受欢迎且更接近的平台.大多数工具用于CLASS/JAR或DEX,而不是CAP.

我找到了几个可以反汇编 CAP文件的工具(包括一些模拟JCOP的虚拟机),但是CAP非常大,使用汇编代码对我来说过于复杂和缓慢.

而且我们不能简单地做"CAP文本字节码 - > Notepad ++ - >一些Java字节码编辑器 - > Java字节码".
CAP字节码和Java字节码之间的差异太大.不仅仅是方法表,它还有大量不同的操作码.
只需反编译Java Card Kit 的converter.jar(它是一个转换CLASS - > CAP的工具),看看转换是一个非常复杂的过程.

我需要一些自动转换器.

同时,我开发了一套智能卡解决方案和"CAP反编译器"将是一个很好的部分.
是的,我打算写.
我计划从一侧在Javassist之上构建它,从第二个构建一些CAP反汇编库,从第三个构建一些标准Java反编译器(-s).

但我应该确定没有类似物.

问题在这里:
地球上是否有一些工具可以将Java Card*.cap转换为Java*.class(或直接反编译*.cap)或不?
我不是要求一个库(我发现了一些),我要求一个工具.Runnable接口.

(如果你知道这个字节码转换中的一些陷阱,我将不胜感激,如果你将它描述给我.现在我把它看作只是一个复制一个操作码列表到另一个有巨人if...else if...else if...else if...switch...case...case...case树(和一些misc员工,即转换)访问修饰符,字段等).

reverse-engineering smartcard javacard jcop

6
推荐指数
1
解决办法
905
查看次数