Update to v1.12.1 with bug fixes

This commit is contained in:
Evan Su 2021-04-11 22:26:06 -04:00 committed by GitHub
parent 8a8e9c046c
commit 3dbb0622fd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 41 additions and 24 deletions

View File

@ -3,7 +3,7 @@
""" """
Picocrypt v1.12 Picocrypt v1.12.1
Copyright (c) Evan Su (https://evansu.cc) Copyright (c) Evan Su (https://evansu.cc)
Released under a GNU GPL v3 License Released under a GNU GPL v3 License
https://github.com/HACKERALERT/Picocrypt https://github.com/HACKERALERT/Picocrypt
@ -28,6 +28,7 @@ from os.path import basename,dirname,abspath,realpath
from os.path import join as pathJoin,split as pathSplit from os.path import join as pathJoin,split as pathSplit
from pathlib import Path from pathlib import Path
from zipfile import ZipFile from zipfile import ZipFile
from shutil import rmtree
from tkinterdnd2 import TkinterDnD,DND_FILES from tkinterdnd2 import TkinterDnD,DND_FILES
from tkinter.filedialog import asksaveasfilename from tkinter.filedialog import asksaveasfilename
from ttkthemes import ThemedStyle from ttkthemes import ThemedStyle
@ -523,6 +524,7 @@ startBtn["state"] = "disabled"
def cancel(): def cancel():
global working global working
working = False working = False
dummy.focus()
# Cancel button # Cancel button
cancelBtn = tkinter.ttk.Button( cancelBtn = tkinter.ttk.Button(
@ -571,7 +573,7 @@ creditsLabel["state"] = "disabled"
# Version # Version
versionString = tkinter.StringVar(tk) versionString = tkinter.StringVar(tk)
versionString.set("v1.12") versionString.set("v1.12.1")
version = tkinter.ttk.Label( version = tkinter.ttk.Label(
tk, tk,
textvariable=versionString textvariable=versionString
@ -1143,10 +1145,14 @@ def work():
if shouldErase: if shouldErase:
if onlyFolders: if onlyFolders:
for i in onlyFolders: for i in onlyFolders:
if not working:
break
secureWipe(i) secureWipe(i)
if onlyFiles: if onlyFiles:
for i in range(len(onlyFiles)): for i in range(len(onlyFiles)):
statusString.set(strings[12]+f" ({i}/{len(onlyFiles)}") if not working:
break
statusString.set(strings[12]+f" ({i}/{len(onlyFiles)})")
progress["value"] = i/len(onlyFiles) progress["value"] = i/len(onlyFiles)
secureWipe(onlyFiles[i]) secureWipe(onlyFiles[i])
secureWipe(inputFile) secureWipe(inputFile)
@ -1157,8 +1163,18 @@ def work():
if allFiles or onlyFiles: if allFiles or onlyFiles:
remove(inputFile) remove(inputFile)
# Show appropriate notice if file corrupted or modified # Prevent Unicode nonsense on MacOS
arrow = "" if platform.system()=="Darwin" else "🡪" arrow = "" if platform.system()=="Darwin" else "🡪"
# If user hit 'Cancel' during secure wiping...
if not working:
fin.close()
fout.close()
resetUI()
statusString.set(f"Secure wipe canceled, but encryption was successful. (Output {arrow})")
else:
# Show appropriate notice if file corrupted or modified
if not kept: if not kept:
statusString.set(f"Completed. (Click here to show output {arrow})") statusString.set(f"Completed. (Click here to show output {arrow})")
# Show Reed-Solomon stats if it fixed corrupted bytes # Show Reed-Solomon stats if it fixed corrupted bytes
@ -1262,8 +1278,9 @@ def updateStats(total):
# Securely wipe file(s) via system internals # Securely wipe file(s) via system internals
def secureWipe(fin): def secureWipe(fin):
global working
statusString.set(strings[12]) statusString.set(strings[12])
progress["value"] = 100
# Check platform, erase accordingly # Check platform, erase accordingly
if platform.system()=="Windows": if platform.system()=="Windows":
# Recursively delete folders # Recursively delete folders
@ -1273,14 +1290,14 @@ def secureWipe(fin):
if dirname(i) not in paths: if dirname(i) not in paths:
paths.append(dirname(i)) paths.append(dirname(i))
for i in range(len(paths)): for i in range(len(paths)):
if not working:
return
statusString.set(strings[12]+f" ({i}/{len(paths)})") statusString.set(strings[12]+f" ({i}/{len(paths)})")
progress["value"] = 100*i/len(paths) progress["value"] = 100*i/len(paths)
system(f'cd "{paths[i]}" && "{rootDir}/sdelete64.exe" * -p 4 -s -nobanner') system(f'cd "{paths[i]}" && "{rootDir}/sdelete64.exe" * -p 4 -nobanner')
system(f'cd "{rootDir}"') system(f'cd "{rootDir}"')
rmtree(fin) rmtree(fin)
else: else:
statusString.set(strings[12])
progress["value"] = 100
system(f'sdelete64.exe "{fin}" -p 4 -nobanner') system(f'sdelete64.exe "{fin}" -p 4 -nobanner')
# MacOS # MacOS