JavaCard模拟器字节码
CAPRunner的Python项目详细描述
概述
caprunner是一个javacard字节码模拟器,它能够执行cap 文件夹。它还附带了一个方便的runcap.py绑定它们 一起让你发送一些apdu到cap文件(没有 需要智能卡)。
示例
以下脚本可以由runcap.py运行。它加载一个cap文件, 从文件中安装并实例化一个applet,发送两个apdu和 检查他们的状态字:
load: /path/to/helloworld.cap install: 0a a0 00 00 00 62 03 01 0c 01 01 00 00 00 : 00 Select HelloWorld //aid/A000000062/03010C0101 ==> 00 a4 04 00 0a a0 00 00 00 62 03 01 0c 01 01 7F <== 00 A4 04 00 0A A0 00 00 00 62 03 01 0C 01 01 90 00 ==> 80 B8 00 00 0C 0A <== 80 B8 00 00 0C 90 00
示例取自javacard工具包,可以在samples/classic_applets/HelloWorld下找到。
依赖关系
为了编译cap文件,您需要一个工作的java 开发工具包和JavaCard开发工具包。
此项目还依赖于以下其他项目:
- pythoncard它在 Python。
- 和(optionnaly)pythonplatform,它提供了 来自globalplatform世界的功能。
注意
如果小程序依赖于pythonplatform,则只需要pythonplatform。 在一些全局平台功能上,如安全消息传递。
安装
目前,您最好的机会是使用 Mercurial到本地目录:
$ hg clone https://bitbucket.org/benallard/caprunner/
这将在^{tt5}中创建存储库的副本$ 目录
为了使依赖关系正确,我建议您也克隆它们 存储库(第二个是可选的):
$ hg clone https://bitbucket.org/benallard/pythoncard/ $ hg clone https://bitbucket.org/benallard/pythonplatform/
最后,解析依赖项的最简单方法是copy (或link在unix上)在 caprunner目录:
- ^来自pythoncard的{tt7}$、pythoncard和pythoncardx。 目录
- 和(optionnaly)org,来自pythonplatform目录。
开始
最后一步,您需要compile使用的导出文件 在将applet编译为json文件期间。这一步是 不需要在每次启动时读取每个导出文件。
这是通过以下命令行完成的:
$ genref.py --dump dump.json /path/to/export_files
这将生成一个名为dump.json的文件,其中包含 导出文件中的必要信息。第二条路 参数是包含 javacard开发工具包(例如api21_export_files目录 对于JavaCard2.1.2)。
caprunner希望调用生成的json文件 <JavaCard version>.json
最后,您应该能够启动runcap.py。默认情况下 将模拟JavaCard Classic 3.0.1,如果需要其他版本, 把它作为参数。例如:
$ ./runcap.py 2.1.2
从这里开始,runcap将等待您的订单。请参考 发送到documentation的订单格式 runcap。
贡献
- 如果某个问题困扰着你,那么issue tracker就是你最好的朋友 首先。
- 如果你想帮助我改进这个项目,写更多的文档或者 增加功能性,对你来说最好的是让自己 在BitBucket上记帐,叉出repository并拉动 请求。很有可能我也接受每封邮件的修补程序。
RTFM!
documentation由 ReadTheDocs每次提交后。