From e7e8d0a0610c7f5d9157f8f1c4f657c3ae83eade Mon Sep 17 00:00:00 2001 From: SkelSec Date: Mon, 8 Oct 2018 01:05:55 +0200 Subject: [PATCH] Fixing key generation and exception handling --- minikerberos/common.py | 9 +++++---- minikerberos/security.py | 2 +- setup.py | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/minikerberos/common.py b/minikerberos/common.py index 458c812..025bc04 100644 --- a/minikerberos/common.py +++ b/minikerberos/common.py @@ -9,6 +9,7 @@ import hashlib import collections from minikerberos.constants import * +from minikerberos.encryption import string_to_key, Enctype # this is from impacket, a bit modified @@ -72,14 +73,14 @@ def get_key_for_enctype(self, etype): return bytes.fromhex(self.kerberos_key_aes_256) if self.password is not None: salt = (self.domain.upper() + self.username).encode() - return string_to_key(Enctype.AES256, self.password, salt).contents + return string_to_key(Enctype.AES256, self.password.encode(), salt).contents raise Exception('There is no key for AES256 encryption') elif etype == EncryptionType.AES128_CTS_HMAC_SHA1_96: if self.kerberos_key_aes_128: return bytes.fromhex(self.kerberos_key_aes_128) if self.password is not None: salt = (self.domain.upper() + self.username).encode() - return string_to_key(Enctype.AES128, self.password, salt).contents + return string_to_key(Enctype.AES128, self.password.encode(), salt).contents raise Exception('There is no key for AES128 encryption') elif etype == EncryptionType.ARCFOUR_HMAC_MD5: if self.kerberos_key_rc4: @@ -96,7 +97,7 @@ def get_key_for_enctype(self, etype): return bytes.fromhex(self.kerberos_key_des) elif self.password: salt = (self.domain.upper() + self.username).encode() - return string_to_key(Enctype.DES3, self.password, salt).contents + return string_to_key(Enctype.DES3, self.password.encode(), salt).contents else: raise Exception('There is no key for DES3 encryption') @@ -105,7 +106,7 @@ def get_key_for_enctype(self, etype): return bytes.fromhex(self.kerberos_key_des) elif self.password: salt = (self.domain.upper() + self.username).encode() - return string_to_key(Enctype.DES_MD5, self.password, salt).contents + return string_to_key(Enctype.DES_MD5, self.password.encode(), salt).contents else: raise Exception('There is no key for DES3 encryption') diff --git a/minikerberos/security.py b/minikerberos/security.py index 69a358c..4b04d22 100644 --- a/minikerberos/security.py +++ b/minikerberos/security.py @@ -107,7 +107,7 @@ def run(self, targets, override_etype = [2, 3, 16, 23, 17, 18]): self.kcomm.get_TGT() except Exception as e: logger.exception('Failed to get TGT ticket! Reason: %s' % str(e)) - return + tgss = [] for target in targets: diff --git a/setup.py b/setup.py index bd8d500..4f87bc6 100644 --- a/setup.py +++ b/setup.py @@ -5,7 +5,7 @@ name="minikerberos", # Version number (initial): - version="0.0.6", + version="0.0.7", # Application author details: author="Tamas Jos",