2016-07-07 52 views
0

Ich versuche, eine Verbindung mit einem Remote-Computer über dieses Skript herzustellen. Das Skript wird auf dem Remote-Computer ausgeführt, der versucht, eine Sitzung zu öffnen, was meiner Meinung nach nicht korrekt ist. Ich versuche, in der Bibliothek opt/PTK/lib/libcryptoki.so auf Steckplatz 0 zuzugreifen, die einen Schlüsselspeicher über Smartcard enthält (z. B. 00000010300000A2). Die verfügbaren Steckplätze geben jedoch null zurück.Kommunikation mit HSM Python

RICHTIG SCRIPT

#!/usr/bin/python 
from PyKCS11.LowLevel import * 

a = CPKCS11Lib() 
info = CK_INFO() 
slotInfo = CK_SLOT_INFO() 
lib='/opt/PTK/lib/libcryptoki.so' 
slotList = ckintlist() 

print("Load of " + lib + ": " + str(a.Load(lib, 1))) 
a.C_Initialize() 
print("C_GetInfo:", hex(a.C_GetInfo(info))) 
print("Library manufacturerID:", info.GetManufacturerID()) 

del info 

print("C_GetSlotList(NULL): " + hex(a.C_GetSlotList(0, slotList))) 
print("\tAvailable Slots: " + str(len(slotList))) 

OUTPUT

ctstat ProtectToolkit C Status Utility 4.3.0 Copyright (c) Safenet, Inc. 2009-2013 ShowAllSlots:4 slots, 4 with tokens Slot ID 0 Description : ProtectServer K5E:00045 Manufacturer : SafeNet Inc. Hardware Version : 65.00 Firmware Version : 3.20 Token for Slot ID 0 Label : CKM Manufacturer : SafeNet Inc. Model : K5E:PL25 Serial Number : 502152:00045 Hardware Version : 65.00 Firmware Version : 3.20

+0

Gibt 'pkcs11.getInfo()' irgendwas interessantes? – viraptor

+0

Es gibt folgende Zurückverfolgungs: 'Traceback (jüngste Aufforderung zuletzt): File "Cryptoki.py", Zeile 18, in info = pkcs11.getInfo() File„/usr/local/lib/python3.5 /site-packages/PyKCS11/__init__.py“, Linie 475, in getInfo raise PyKCS11Error (rv) PyKCS11.PyKCS11Error: CKR_SLOT_ID_INVALID (0x00000003)' @viraptor – DJ2

+0

Ist dieser Skript keine Schlitze erkennen, wenn auf dem entfernten Rechner direkt laufen? Funktionieren Befehle wie 'ctstat' /' hsmstate', wenn sie direkt auf dem entfernten Rechner ausgeführt werden (d. H. Ist Ihr HSM korrekt installiert)? Arbeiten sie remote? Hinweis: In diesem Kommentar wird von einem SafeNet/Gemalto ProtectProcessing-Produkt ausgegangen. – vlp

Antwort

0

Das funktioniert perfekt für mich. In Bezug auf die Verbindung.

import subprocess 
proc = subprocess.Popen(("ssh", "[email protected]", "echo", "1"), 
stdout=subprocess.PIPE, stderr=subprocess.PIPE) 
stdout, stderr = proc.communicate()