mirror of
https://github.com/rwinkhart/sshyp-labs.git
synced 2026-08-27 20:36:31 -04:00
49 lines
2.4 KiB
Python
Executable File
49 lines
2.4 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
from os import path, remove, system, walk
|
|
from pathlib import Path
|
|
from shutil import move, rmtree
|
|
|
|
if __name__ == "__main__":
|
|
gpg_id = input('\nWhat is the ID of the GPG key you would like to use for re-encryption?\n\nID: ')
|
|
pasture = path.expanduser('~/.password-pasture')
|
|
if Path(f"{pasture}.new").exists():
|
|
rmtree(f"{pasture}.new")
|
|
if Path(f"{pasture}.old").exists():
|
|
rmtree(f"{pasture}.old")
|
|
if path.isdir(pasture):
|
|
for dirPath, dirNames, filenames in walk(pasture):
|
|
for filename in sorted(filenames):
|
|
Path(dirPath.replace(pasture, pasture + '.new')).mkdir(0o700, parents=True, exist_ok=True)
|
|
system(f"gpg -d '{dirPath}/{filename}' "
|
|
f"> '{dirPath.replace(pasture, pasture + '.new')}/{filename[:-4]}'")
|
|
_old_contents, _new_contents = \
|
|
open(f"{dirPath.replace(pasture, pasture + '.new')}/{filename[:-4]}", 'r').readlines(), ''
|
|
for _num in range(len(_old_contents)):
|
|
if _num == 0:
|
|
try:
|
|
_new_contents += _old_contents[1]
|
|
except IndexError:
|
|
_new_contents += '\n'
|
|
elif _num == 1:
|
|
_new_contents += _old_contents[0]
|
|
elif _num == 3:
|
|
if _old_contents[_num] == ' ' or _old_contents[_num] == '\n':
|
|
pass
|
|
else:
|
|
_new_contents += _old_contents[_num]
|
|
else:
|
|
_new_contents += _old_contents[_num]
|
|
for _num in reversed(range(len(_new_contents))):
|
|
if _new_contents[_num] == '\n' or _new_contents[_num] == '':
|
|
_new_contents = _new_contents[:-1]
|
|
else:
|
|
break
|
|
open(f"{dirPath.replace(pasture, pasture + '.new')}/{filename[:-4]}", 'w').writelines(_new_contents)
|
|
system(f"gpg -qr {str(gpg_id)} -e '{dirPath.replace(pasture, pasture + '.new')}/{filename[:-4]}'")
|
|
remove(f"{dirPath.replace(pasture, pasture + '.new')}/{filename[:-4]}")
|
|
else:
|
|
print(f"\nError: no entry folder ({pasture}) found\n")
|
|
move(pasture, f"{pasture}.old")
|
|
move(f"{pasture}.new", pasture)
|