sshyp-mfa - Compatibility with new tmpfs-less operation

This commit is contained in:
2023-06-18 00:49:33 -04:00
parent 90c3de83b5
commit fb267085eb
+3 -9
View File
@@ -3,7 +3,7 @@ from base64 import b32decode
from configparser import ConfigParser from configparser import ConfigParser
from os import environ, listdir, uname from os import environ, listdir, uname
from os.path import expanduser, isdir, isfile from os.path import expanduser, isdir, isfile
from sshyp import decrypt, shm_gen, whitelist_verify from sshyp import decrypt, whitelist_verify
from subprocess import PIPE, Popen, run from subprocess import PIPE, Popen, run
from sys import argv, exit as s_exit from sys import argv, exit as s_exit
from time import sleep, strftime, time from time import sleep, strftime, time
@@ -22,28 +22,22 @@ def totp(_secret, _algo, _digits, _period): # uses provided information to gene
def mfa_read_shortcut(): # extracts MFA info from the user-specified sshyp entry def mfa_read_shortcut(): # extracts MFA info from the user-specified sshyp entry
from shutil import rmtree
if not isfile(f"{directory}{arguments[0]}.gpg"): if not isfile(f"{directory}{arguments[0]}.gpg"):
print(f"\n\u001b[38;5;9merror: entry ({arguments[0]}) does not exist\u001b[0m\n") print(f"\n\u001b[38;5;9merror: entry ({arguments[0]}) does not exist\u001b[0m\n")
s_exit(1) s_exit(1)
_shm_folder, _shm_entry = shm_gen()
if quick_unlock_enabled == 'true': if quick_unlock_enabled == 'true':
decrypt(directory + arguments[0], _shm_folder, _shm_entry, _mfa_data = decrypt(directory + arguments[0], _quick_pass=whitelist_verify(port, username_ssh, ip, device_id))
_quick_pass=whitelist_verify(port, username_ssh, ip, device_id))
else: else:
decrypt(directory + arguments[0], _shm_folder, _shm_entry) _mfa_data = decrypt(directory + arguments[0])
try: try:
_mfa_data = open(f"{home}/.config/sshyp/tmp/{_shm_folder}/{_shm_entry}", 'r').readlines()
_type = _mfa_data[4].split('otpauth://')[1].split('/')[0] _type = _mfa_data[4].split('otpauth://')[1].split('/')[0]
_secret = _mfa_data[4].split('?secret=')[1].split('&issuer=')[0] _secret = _mfa_data[4].split('?secret=')[1].split('&issuer=')[0]
_algo = _mfa_data[4].split('&algorithm=')[1].split('&digits=')[0] _algo = _mfa_data[4].split('&algorithm=')[1].split('&digits=')[0]
_digits = int(_mfa_data[4].split('&digits=')[1].split('&period=')[0]) _digits = int(_mfa_data[4].split('&digits=')[1].split('&period=')[0])
_period = int(_mfa_data[4].split('&period=')[1]) _period = int(_mfa_data[4].split('&period=')[1])
rmtree(f"{home}/.config/sshyp/tmp/{_shm_folder}")
return _type, _secret, _algo, _digits, _period return _type, _secret, _algo, _digits, _period
except IndexError: except IndexError:
print(f"\n\u001b[38;5;9merror: entry ({arguments[0]}) does not contain valid mfa data\u001b[0m\n") print(f"\n\u001b[38;5;9merror: entry ({arguments[0]}) does not contain valid mfa data\u001b[0m\n")
rmtree(f"{home}/.config/sshyp/tmp/{_shm_folder}")
s_exit(1) s_exit(1)