„Ich kann nur eines über das Königreich der Schatten sagen: Es gibt Realität und es gibt seinen Schatten; Das ist die Essenz von allem. In der realen Welt gibt es nur Amber, die reale Stadt auf der realen Erde, in der alles gesammelt wird. Und das Königreich der Schatten ist nur die Unendlichkeit der Unwirklichkeit. Hier finden Sie auch alles - aber es werden Schatten sein, eine verzerrte Reflexion der Realität. Das Königreich der Schatten umgibt Bernstein von allen Seiten. Und darüber hinaus herrscht Chaos. Auf dem Weg von Amber zum Königreich des Chaos ist alles möglich. “Roger Zhelyazny. Die neun Prinzen von Bernstein
Alles begann mit der Notwendigkeit, mit demselben Schlüssel auf Etoken von verschiedenen, erheblich entfernten Workstations aus zu arbeiten (USB Over IP wird für ein paar Token etwas teuer sein) und meinem großen Wunsch, diese geschlossene Welt zu öffnen. Ich bin
auf die Arbeit
habr.com/post/276057 gestoßen, für die der Autor großen Respekt hat. In meinem Projekt wurde ein wesentlicher Teil der Funktionen, die er umgekehrt hat, verwendet (der Code ist offen). Wie sich herausstellte, funktioniert alles, was mit etsdk.dll funktioniert, nur mit blauen Fischen. Daher mussten für JaCarta neue Funktionen neu geschrieben und ein Teil der bearbeitet werden.
Als Ergebnis langjähriger Recherchen erschien JaCarta Editor - ein Programm, mit dem Sie Entitäten (dies bezieht sich die offizielle Dokumentation auf Token-Dateisystemobjekte, die anscheinend auf deren Vergänglichkeit und Irrealität hinweisen) auf Token von Aladdin, einschließlich der modernsten, bearbeiten können.
Eine ähnliche Anwendung für Rutoken ist als Teil des Rutoken SDK (Rutoken Editor) öffentlich verfügbar, aber für Aladdin ist sie zumindest nicht öffentlich zugänglich, obwohl dies vor etwa 15 Jahren nach der im Internet gefundenen Dokumentation (ETEditor) der Fall war.
Das Programm ist in Autoit geschrieben und mit EToken PRO Java 72 K, JaCarta LT, JaCarta Pro und JaCarta GOST-2 getestet.
Das Programm funktioniert nicht, wenn Rutoken-Treiber auf dem Computer installiert sind (EToken oder Ja Carta müssen die Lesernummer 0 haben).
Aus dem gleichen Grund muss für einen korrekten Betrieb nur ein Token verbunden sein.
Das Skript verwendet Windows $ -Systemaufrufe und wurde nur mit dieser Betriebssystemfamilie getestet.
Um zu funktionieren, müssen Sie den "JaCarta Single Client" (kostenloser Download von der Website des Herstellers) installieren. Bei der Installation müssen Sie die wesentlich neuere Version von etsdk.dll und jcFS.dll mit den Funktionen des JaCarta-Dateisystems (sehr ähnlich zu) installieren die in etsdk.dll, aber in jcFS gibt es viel mehr Funktionen, ohne die die Arbeit mit einigen modernen Jakarts wie GOST-2 unmöglich wäre. Wenn der Unified Client installiert ist, ist es natürlich nicht erforderlich, diese DLL zu suchen und in den Ordner mit dem Programm zu legen. Andernfalls sollte sich diese DLL mit dem für einen bestimmten Tokentyp installierten Treiber im Programmordner befinden.
Alle jcFS-Funktionen werden auf der Website des Herstellers ausführlich beschrieben. Einige Parameter dieser Funktionen mussten jedoch experimentell ausgewählt werden.
Um auf das Stammverzeichnis des Tokens zuzugreifen, müssen Sie die ETRootDirOpen- oder JCRootDirOpen-Funktion (die dieselbe ist, da die erste in der DLL die zweite aufruft, gilt dies für fast alle Funktionen, es gibt jedoch einige Ausnahmen) mit einer Herstellerkennung von 0 aufrufen (Konstanten wie 0xF007 erlauben dies) Es werden nur einzelne Verzeichnisse von meist alten eToken angezeigt, in denen Bankschlüssel gespeichert sind, die mit Dienstprogrammen wie PKIAdmin und MessagePRO generiert wurden.
Das nächste wichtige Merkmal des modernen Jakarta ist die Notwendigkeit, die ID des Applets zu kennen, das auf dem Token installiert ist. Die JCSelectApplet-Funktion ist dafür verantwortlich.
Ältere Token haben normalerweise ein Standard-Applet und das Aufrufen dieser Funktion ist nicht speziell erforderlich, aber für neue und relativ neue Jakarts ohne Kenntnis der Applet-ID wird weitere Arbeit unmöglich. Wenn Sie in diesem Fall alle Funktionen aufrufen, die Informationen vom Token empfangen, wird False zurückgegeben. In meinem Projekt wird in diesem Fall eine zweistufige Brute Force implementiert (das Token reagiert immer auf zwei IDs, aber nur eine davon funktioniert) und arbeitet weiter mit dem gewünschten Wert.
Alle Informationen werden im Ausgabefenster unter der Verzeichnisstruktur angezeigt.
Der PIN-Code wurde eingegeben, Informationen zu den verbleibenden Versuchen, ihn einzugeben, werden ebenfalls angezeigt.
Der Inhalt der Verzeichnisse und kurze Informationen zu den Dateien werden angezeigt: Der Name, ob es sich bei der Datei um eine private Information handelt, ist ein privater PIN-Code - der Buchstabe p: (die Datei ist danach öffentlich, das Gerät ist privat) und die Dateigröße in Bytes nach "s:". Die Datei wird durch Doppelklick geöffnet.
Sie können den Inhalt der Token-Dateien im Hexadezimalformat anzeigen und bei Bedarf in den Puffer kopieren oder in binärer Form auf einem Computer speichern.
Sie können auch den Inhalt der Datei ändern und im Menü „Änderungen speichern“ auswählen (der PIN-Code muss zuerst eingegeben werden, wenn er nicht eingegeben wurde, wird eine entsprechende Meldung angezeigt. In diesem Fall können die bearbeiteten Daten ausgewählt und in die Zwischenablage kopiert werden).
Um eine Datei zu löschen, wählen Sie sie aus und klicken Sie auf "Löschen". Daraufhin wird ein Bestätigungsfenster angezeigt.
Das JaCarta-Dateisystem verfügt über eine interessante Funktion, die auf allen von mir getesteten Token vorhanden ist. Wenn Sie ein Verzeichnis oder mehrere Verzeichnisse ohne Dateien auf dem Token erstellen, verschwinden diese während der nächsten Arbeitssitzung mit dem Token. Auf diese Weise kümmert sich das Dateisystem anscheinend um die Speicherung des Tokenspeichers und bereinigt den gesamten Müll.
Wenn Sie im Programm auf die Schaltfläche Erstellen klicken, wird daher sofort eine Kette aus einem oder zwei Verzeichnissen und einer Datei erstellt. Die Verschachtelungstiefe der Verzeichnisse im Programm beträgt zwei, ohne die Wurzel. Im Stammverzeichnis können Sie nur Verzeichnisse erstellen, keine Dateien.
Vor dem Erstellen, Bearbeiten oder Löschen von Entitäten müssen Sie einen PIN-Code eingeben.
Ein sehr wichtiger Hinweis zu Verzeichnisnamen!
Auf Token, bei denen der Inhalt vom Hersteller erstellt wurde, werden niemals Verzeichnisse mit demselben Namen angezeigt, egal wo sie sich befinden. Dies liegt an den Funktionen des Dateisystems.
Angenommen, wir haben die folgende Entität auf dem Token: //
0001 / A001 / 0008 (dh der Ordner 0001 befindet sich im Stammverzeichnis, der Ordner A001 befindet sich darin und die Datei 0008 befindet sich darin) und wir erstellen eine neue Entität auf dem Token: // CC00 /
0001/1010 . Beim Zugriff auf die Datei 1010 beginnt die Suche nach dem Verzeichnis 0001, das sich im Stammverzeichnis befindet und zuerst gefunden wird, in dem sich jedoch keine solche Datei befindet. Infolgedessen gibt die Funktion False zurück und die Entität geht verloren. Sie können weder darauf zugreifen noch sie löschen. Nur die Token-Initialisierung hilft.
Besonders hervorzuheben sind EToken PRO und JA Carta Pro, die sich nur im Erscheinungsbild unterscheiden. Sie haben Systemdateien im Stammverzeichnis (sie werden auf dem Bildschirm angezeigt), in denen der Hash des PIN-Codes gespeichert ist, wodurch diese Dateikabel geändert werden auf die Tatsache, dass eine Autorisierung unmöglich wird (PIN-Code wird falsch) und danach nur noch die Initialisierung hilft.
In Bezug auf private Schlüssel konnte Folgendes festgestellt werden: Wenn ein von einem kryptografischen Drittanbieter wie CryptoPro erstellter Container auf dem Token gespeichert ist, ist der gesamte Inhalt, einschließlich privater Schlüssel, verfügbar. Es handelt sich lediglich um ein Flash-Laufwerk mit einem PIN-Code (siehe Abbildung). Wenn das Schlüsselpaar mit PKCS11 an Bord des Tokens generiert wurde, sind nur das Zertifikat und der öffentliche Schlüssel verfügbar.
Da es sich um ein experimentelles Programm handelt, empfehle ich nicht, es mit Token zu verwenden, die gültige EDS-Schlüssel enthalten. Alle Operationen werden auf Angst und Risiko des Experimentators durchgeführt. Dies gilt insbesondere für die Erstellung neuer Entitäten. In einigen Fällen ist das Ergebnis schwer vorherzusagen.
Alle Informationen zur Erstellung des Programms wurden aus offenen Quellen bezogen, der Zweck seiner Erstellung ist reine Forschung.
Das Skript selbst
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(
InformationsquelleneToken-Entwicklerhandbuch Version 3.50 (Dezember 2003)