“关于影子王国,我只能说一件事:存在现实,存在影子。 这是一切的本质。 在现实世界中,只有琥珀(真实地球上的真实城市)收集了所有东西。 影子王国只是虚幻的无限。 在这里您还可以找到所有内容-但这将是阴影,是对现实的扭曲反映。 阴影王国从四面八方包围了琥珀。 除此之外,混乱还在统治。 从琥珀到混沌王国的一切皆有可能。”罗杰·哲里亚兹尼(Roger Zhelyazny)。 琥珀九王子
一切始于需要使用来自不同的远程工作站的相同令牌上的密钥(对于几个令牌来说,USB over IP的价格会稍高一些),并且我渴望打开这个封闭的世界。 我
遇到了habr.com/post/276057这本书的作者非常尊重他的作品,在我的项目中使用了他反转的大部分功能(代码是开放的)。 没错,事实证明,与etsdk.dll兼容的所有内容仅适用于蓝色鱼。 因此,对于JaCarta,必须重写新功能,并且其中一些功能必须进行编辑。
经过长期研究的结果,JaCarta Editor出现了-该程序显示并允许您编辑Aladdin令牌(包括最现代的令牌)的实体(这是官方文档中调用令牌文件系统对象的方式,显然暗示了它们的短暂性和不真实性)。
Rutoken的类似应用程序已作为Rutoken SDK(Rutoken编辑器)的一部分公开提供,但对于Aladdin,至少它不在公共领域,尽管大约15年前根据Internet上的文档判断为(ETEditor)。
该程序是用Autoit编写的,并通过EToken PRO Java 72 K,JaCarta LT,JaCarta Pro,JaCarta GOST-2进行了测试。
如果计算机上安装了Rutoken驱动程序,则该程序将无法运行(要求EToken或Ja Carta的阅读器号为0)。
出于相同的原因,只有一个令牌必须连接才能正确操作。
该脚本使用Window $系统调用,并且仅在此OS系列中进行了测试。
要正常工作,您需要安装“ JaCarta Single Client” (可从制造商的网站免费下载),在安装时,包含JaCarta File System功能的etsdk.dll和jcFS.dll的更新版本非常明显(与etsdk.dll中的功能,但是jcFS中有更多功能,如果没有这些功能,将无法使用某些现代jakarts(例如GOST-2)。 安装Unified Client后,自然不必搜索该dll并将其放在程序中,否则,如果驱动程序安装了特定类型的令牌,则该dll应该在program文件夹中。
所有jcFS功能都在制造商的网站上进行了详细说明,但是,这些功能的某些参数必须通过实验选择。
为了访问令牌的根目录,您必须调用ETRootDirOpen或JCRootDirOpen函数(这是相同的,因为dll中的第一个调用第二个,对于几乎所有函数都是如此,但是也有一些例外),其供应商标识符等于0(常数如0xF007将允许仅查看大多数使用较旧eToken的单个目录,这些目录存储使用实用程序(例如PKIAdmin和MessagePRO)生成的银行密钥。
现代雅加达的下一个重要功能是需要知道安装在令牌上的applet的ID,JCSelectApplet函数对此负责。
较早的令牌通常具有默认的applet,并不需要专门调用此函数,但是对于不知道applet id的新的和相对较新的jakarts,将无法进行进一步的工作。 在这种情况下,调用从令牌接收信息的所有函数将返回False。 在我的项目中,在这种情况下,实现了两阶段的暴力破解(令牌始终响应两个id,但其中只有一个起作用)id,并以所需的值进一步起作用。
所有信息都显示在目录树下的输出窗口中。
输入了PIN码,还会显示有关剩余尝试输入的信息。
将显示目录的内容和有关文件的简要信息:名称,文件是否为私人信息是私人PIN码-字母p :(文件在其后为公用,单位为私有),文件大小在“ s:”后以字节为单位。 双击打开文件。
您可以查看令牌文件的内容,并在需要时将其以十六进制格式复制到缓冲区中,或者以二进制形式保存到计算机中。
您也可以更改文件的内容,然后在菜单中选择“保存更改”(必须先输入PIN码,如果尚未输入PIN码,则会显示一条适当的消息,在这种情况下,可以选择已编辑的数据并将其复制到剪贴板)。
要删除文件,请选择它并单击“删除”,然后将出现一个确认窗口。
JaCarta文件系统具有一个有趣的功能,该功能存在于我测试过的所有令牌中。 如果您创建一个目录或多个目录,并且令牌上没有文件,则在下一个使用令牌的会话期间,它们将消失,显然,文件系统将通过这种方式来保存令牌的内存并清除所有垃圾。
因此,当您在程序中单击“创建”按钮时,立即从一个目录或两个目录和一个文件中创建一个链。 程序中目录的嵌套深度为2,不计算根目录。 在根目录中,您只能创建目录,而不能创建文件。
在创建,编辑或删除实体之前,您必须输入PIN码。
关于目录名称的重要提示!
在内容由制造商创建的令牌上,无论位于何处,您都永远不会看到具有相同名称的目录。 这是由于文件系统功能。
假设令牌上具有以下实体://
0001 / A001 / 0008(即文件夹0001在根目录中,文件夹A001在其中,文件0008在其中),我们在令牌上创建一个新实体:// CC00 /
0001/1010 。 当访问文件1010时,将开始对目录0001的搜索,该目录位于根目录中并且首先被找到,但是其中没有此类文件。 结果,该函数返回False并且该实体丢失;您不能访问它也不能删除它。 仅令牌初始化会有所帮助。
特别要注意的是EToken PRO和JA Carta Pro,它们的外观仅不同,它们在根目录中有系统文件(它们显示在屏幕上),其中存储了密码的哈希值之一,从而更改了这些文件。导致授权变得不可能(PIN码变得不正确),之后只有初始化会有所帮助。
关于私钥,可以建立以下条件:如果将第三方加密提供商创建的容器(例如CryptoPro)存储在令牌上,则其所有内容(包括私钥)都将可用,它只是带有PIN码的闪存驱动器(如图所示)。 如果密钥对是使用PKCS11在令牌上生成的,则仅证书和公共密钥可用。
由于这是一个实验性程序,因此我不建议将其与包含有效EDS密钥的令牌一起使用,所有操作均要由实验者来承担。 对于创建新实体尤其如此,在某些情况下,结果很难预测。
创建该程序的所有信息均来自公开来源,其创建目的纯粹是研究。
脚本本身
JACartaEditor.au3#include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <EditConstants.au3> #include <TreeViewConstants.au3> #include <GuiTreeView.au3> #include <GuiMenu.au3> #include <MsgBoxConstants.au3> #include <StaticConstants.au3> #include <GuiButton.au3> #NoTrayIcon ; jcFS.dll Dim $ETSdkDll=DllOpen(
信息来源eToken开发人员指南3.50版(2003年12月)