“Aku hanya bisa mengatakan satu hal tentang Kerajaan Bayangan: ada kenyataan dan ada Bayangannya; inilah esensi dari segalanya. Di Dunia nyata, hanya ada Amber, kota sebenarnya di Bumi yang asli, tempat semua benda dikumpulkan. Dan Kerajaan Bayangan hanyalah ketidakterbatasan yang tidak nyata. Di sini Anda juga dapat menemukan segalanya - tetapi itu akan menjadi bayangan, refleksi realitas yang terdistorsi. Kingdom of Shadows mengelilingi Amber dari semua sisi. Dan selanjutnya, kekacauan memerintah. Segalanya mungkin dalam perjalanan dari Amber ke Kingdom of Chaos. ”Roger Zhelyazny. Sembilan Pangeran Amber
Semuanya dimulai dengan kebutuhan untuk bekerja dengan kunci yang sama pada etoken dari workstation yang berbeda, jauh secara signifikan (USB Over IP akan sedikit mahal untuk beberapa token) dan keinginan besar saya untuk membuka dunia yang tertutup ini. Saya
menemukan work
habr.com/post/276057 yang penulisnya sangat hormati, dalam proyek saya sebagian besar fungsi yang dibalik digunakan (kode terbuka). Benar, ternyata, semua yang bekerja dengan etsdk.dll hanya berfungsi dengan ikan biru. Oleh karena itu, untuk JaCarta, fungsi-fungsi baru harus ditulis ulang, dan bagian dari yang diedit.
Sebagai hasil dari penelitian yang panjang, Editor JaCarta muncul - sebuah program yang menunjukkan dan memungkinkan Anda untuk mengedit entitas (begitulah objek sistem file token dipanggil dalam dokumentasi resmi, tampaknya mengisyaratkan ephemerality dan irreality mereka) pada token dari Aladdin, termasuk yang paling modern.
Aplikasi serupa untuk Rutoken tersedia untuk umum sebagai bagian dari Rutoken SDK (Editor Rutoken), tetapi untuk Aladdin, setidaknya itu tidak ada dalam domain publik, meskipun sekitar 15 tahun yang lalu, dilihat dari dokumentasi yang ditemukan di Internet, itu adalah (ETEditor).
Program ini ditulis dalam Autoit, diuji dengan EToken PRO Java 72 K, JaCarta LT, JaCarta Pro, JaCarta GOST-2.
Program tidak akan berfungsi jika driver Rutoken diinstal pada komputer (diperlukan bahwa EToken atau Ja Carta memiliki pembaca nomor 0).
Untuk alasan yang sama, hanya satu token yang harus terhubung untuk operasi yang benar.
Script menggunakan panggilan sistem Windows $, dan hanya diuji dengan keluarga OS ini.
Agar berfungsi, Anda perlu menginstal "JaCarta Single Client" (unduhan gratis dari situs web pabrikan), ketika Anda menginstalnya, versi etsdk.dll dan jcFS.dll yang jauh lebih baru yang berisi fungsi-fungsi Sistem File JaCarta (sangat mirip dengan yang ada di etsdk.dll, tetapi di jcFS ada lebih banyak fungsi yang tanpanya bekerja dengan beberapa jakarts modern, seperti GOST-2, tidak mungkin). Ketika Unified Client diinstal, tentu saja tidak perlu mencari dan meletakkan dll ini di folder dengan program, jika tidak, dengan driver diinstal jenis token tertentu, dll ini harus berada di folder program.
Semua fungsi jcFS dijelaskan secara rinci di situs web pabrikan, namun demikian, beberapa parameter fungsi ini harus dipilih secara eksperimental.
Untuk mengakses direktori root token, Anda harus memanggil fungsi ETRootDirOpen atau JCRootDirOpen (yang sama, karena yang pertama di dll memanggil yang kedua, ini berlaku untuk hampir semua fungsi, tetapi ada beberapa pengecualian) dengan pengidentifikasi vendor sama dengan 0 (konstanta seperti 0xF007 akan memungkinkan lihat hanya direktori individual dari sebagian besar eToken lama yang menyimpan kunci bank yang dihasilkan menggunakan utilitas seperti PKIAdmin dan MessagePRO).
Fitur penting berikutnya dari jakarta modern adalah kebutuhan untuk mengetahui id applet yang diinstal pada token, fungsi JCSelectApplet bertanggung jawab untuk ini.
Token yang lebih lama biasanya memiliki applet default dan memanggil fungsi ini tidak secara khusus diperlukan, tetapi jakarts baru dan relatif baru tanpa mengetahui id applet tidak berfungsi lebih lanjut. Memanggil semua fungsi yang menerima informasi dari token dalam kasus ini mengembalikan False. Dalam proyek saya, dalam hal ini, kekuatan dua tahap diimplementasikan (token selalu merespon dua id, tetapi hanya satu dari mereka yang bekerja) id dan bekerja lebih lanjut dengan nilai yang diinginkan.
Semua informasi ditampilkan di jendela output yang terletak di bawah pohon direktori.
Kode PIN telah dimasukkan, informasi tentang upaya yang tersisa untuk memasukkannya juga ditampilkan.
Isi direktori dan informasi singkat tentang file ditampilkan: nama, apakah file tersebut informasi pribadi adalah kode PIN pribadi - huruf p: (file bersifat publik setelahnya, unit bersifat pribadi) dan ukuran file dalam byte setelah "s:". File dibuka dengan mengklik dua kali.
Anda dapat melihat dan, jika perlu, menyalin konten file token dalam heksadesimal ke buffer atau menyimpan dalam bentuk biner ke komputer.
Anda juga dapat mengubah konten file dan memilih "Simpan Perubahan" di menu (kode PIN harus dimasukkan terlebih dahulu, jika belum dimasukkan, pesan yang sesuai akan ditampilkan, dalam hal ini data yang diedit dapat dipilih dan disalin ke clipboard).
Untuk menghapus file, pilih dan klik "Hapus", setelah itu jendela konfirmasi akan muncul.
Sistem File JaCarta memiliki fitur menarik, yang hadir pada semua token yang saya uji. Jika Anda membuat direktori atau beberapa direktori tanpa file pada token, selama sesi berikutnya bekerja dengan token, mereka akan menghilang, tampaknya dengan cara ini sistem file menangani penyimpanan memori token dan membersihkan semua sampah.
Oleh karena itu, ketika Anda mengklik tombol Buat di program, rantai dibuat segera dari direktori atau dua direktori dan file. Kedalaman bersarang direktori dalam program ini adalah dua, tidak termasuk root. Di direktori root, Anda hanya bisa membuat direktori, tetapi bukan file.
Sebelum membuat, mengedit, atau menghapus entitas, Anda harus memasukkan kode PIN.
Catatan yang sangat penting tentang nama direktori!
Pada token tempat konten dibuat oleh pabrikan, Anda tidak akan pernah melihat direktori dengan nama yang sama, di mana pun mereka berada. Ini karena fitur sistem file.
Misalkan kita memiliki entitas berikut pada token: //
0001 / A001 / 0008 (yaitu, folder 0001 ada di direktori root, folder A001 di dalamnya, dan file 0008 di dalamnya) dan kami membuat entitas baru di token: // CC00 /
0001/1010 . Saat mengakses file 1010, pencarian untuk direktori 0001 akan dimulai, yang terletak di root dan akan ditemukan pertama kali, tetapi tidak ada file seperti itu di dalamnya. Akibatnya, fungsi mengembalikan False dan entitas menjadi hilang, Anda tidak dapat mengakses dan menghapusnya. Hanya inisialisasi token yang akan membantu.
Dari catatan khusus adalah EToken PRO dan JA Carta Pro, yang hanya berbeda dalam penampilan, mereka memiliki file sistem di direktori root (mereka ditampilkan di layar), di mana salah satu hash dari kode pin disimpan, mengubah file-file ini mengarah pada kenyataan bahwa otorisasi menjadi tidak mungkin (kode pin menjadi salah) dan setelah itu hanya inisialisasi yang akan membantu.
Mengenai kunci pribadi, dimungkinkan untuk menetapkan yang berikut: jika sebuah wadah yang dibuat oleh penyedia kriptografi pihak ketiga, seperti CryptoPro, disimpan pada token, maka semua kontennya, termasuk kunci pribadi, akan tersedia, itu hanya flash drive dengan kode PIN (seperti yang ditunjukkan pada gambar). Jika pasangan kunci dibuat di papan token menggunakan PKCS11, maka hanya sertifikat dan kunci publik yang akan tersedia.
Karena ini adalah program eksperimental, saya tidak merekomendasikan menggunakannya dengan token yang berisi kunci EDS yang valid, semua operasi dilakukan pada ketakutan dan risiko eksperimen. Ini terutama benar untuk penciptaan entitas baru, dalam beberapa kasus hasilnya sulit untuk diprediksi.
Semua informasi untuk membuat program diperoleh dari sumber terbuka, tujuan pembuatannya adalah murni penelitian.
Naskah itu sendiri
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(
Sumber informasieToken Developer's Guide Versi 3.50 (Desember 2003)