mirror of
https://github.com/HACKERALERT/Picocrypt.git
synced 2025-01-01 12:22:25 +00:00
Update v1.12.py
This commit is contained in:
parent
7cbead3149
commit
ac31cdcc89
1 changed files with 73 additions and 14 deletions
|
@ -13,7 +13,7 @@ https://github.com/HACKERALERT/Picocrypt
|
||||||
|
|
||||||
# Import dependencies
|
# Import dependencies
|
||||||
from threading import Thread
|
from threading import Thread
|
||||||
from datetime import datetime
|
from datetime import datetime,timedelta
|
||||||
from argon2.low_level import hash_secret_raw
|
from argon2.low_level import hash_secret_raw
|
||||||
from argon2.low_level import Type as argonType
|
from argon2.low_level import Type as argonType
|
||||||
from Crypto.Cipher import ChaCha20_Poly1305
|
from Crypto.Cipher import ChaCha20_Poly1305
|
||||||
|
@ -478,7 +478,7 @@ startFrame.config(background="#ffffff")
|
||||||
startBtn = tkinter.ttk.Button(
|
startBtn = tkinter.ttk.Button(
|
||||||
startFrame,
|
startFrame,
|
||||||
text="Start",
|
text="Start",
|
||||||
command=lambda:Thread(target=work,daemon=True).start()
|
command=lambda:Thread(target=wrapper,daemon=True).start()
|
||||||
)
|
)
|
||||||
startBtn.grid(row=0,column=0,stick="nesw")
|
startBtn.grid(row=0,column=0,stick="nesw")
|
||||||
startBtn["state"] = "disabled"
|
startBtn["state"] = "disabled"
|
||||||
|
@ -563,6 +563,33 @@ promptIconVer = tkinter.Frame(
|
||||||
)
|
)
|
||||||
promptIconVer.place(x=238,y=226,height=64)
|
promptIconVer.place(x=238,y=226,height=64)
|
||||||
|
|
||||||
|
confirmOverwrite = tkinter.Frame(tk)
|
||||||
|
confirmOverwrite.config(bg="#f5f6f7")
|
||||||
|
#confirmOverwrite.pack(expand=1,fill=tkinter.BOTH)
|
||||||
|
confirmOverwriteString = tkinter.StringVar(tk)
|
||||||
|
confirmOverwriteString.set(strings[13])
|
||||||
|
confirmOverwriteLabel = tkinter.ttk.Label(
|
||||||
|
confirmOverwrite,
|
||||||
|
textvariable=confirmOverwriteString
|
||||||
|
)
|
||||||
|
confirmOverwriteLabel.place(x=100,y=150)
|
||||||
|
confirmOverwriteNo = tkinter.ttk.Button(
|
||||||
|
confirmOverwrite,
|
||||||
|
text="No",
|
||||||
|
command=lambda:confirmOverwrite.pack_forget()
|
||||||
|
)
|
||||||
|
confirmOverwriteNo.place(x=100,y=200)
|
||||||
|
|
||||||
|
def overwriteConfirmed():
|
||||||
|
confirmOverwrite.pack_forget()
|
||||||
|
Thread(target=wrapper,daemon=True,args=(True,)).start()
|
||||||
|
confirmOverwriteYes = tkinter.ttk.Button(
|
||||||
|
confirmOverwrite,
|
||||||
|
text="Yes",
|
||||||
|
command=overwriteConfirmed
|
||||||
|
)
|
||||||
|
confirmOverwriteYes.place(x=300,y=200)
|
||||||
|
|
||||||
# Files have been dragged
|
# Files have been dragged
|
||||||
def filesDragged(draggedFiles):
|
def filesDragged(draggedFiles):
|
||||||
global inputFile,rs128,onlyFiles,mode,onlyFolders,allFiles
|
global inputFile,rs128,onlyFiles,mode,onlyFolders,allFiles
|
||||||
|
@ -934,8 +961,6 @@ def work():
|
||||||
# File is really corrupted
|
# File is really corrupted
|
||||||
if not reedsoloErrors and not shouldKeep:
|
if not reedsoloErrors and not shouldKeep:
|
||||||
statusString.set(strings[8])
|
statusString.set(strings[8])
|
||||||
|
|
||||||
if not shouldKeep:
|
|
||||||
fin.close()
|
fin.close()
|
||||||
fout.close()
|
fout.close()
|
||||||
remove(outputFile)
|
remove(outputFile)
|
||||||
|
@ -978,7 +1003,6 @@ def work():
|
||||||
else:
|
else:
|
||||||
if not compare_digest(crccs,crc.digest()):
|
if not compare_digest(crccs,crc.digest()):
|
||||||
statusString.set(strings[3])
|
statusString.set(strings[3])
|
||||||
progress["value"] = 100
|
|
||||||
fin.close()
|
fin.close()
|
||||||
fout.close()
|
fout.close()
|
||||||
|
|
||||||
|
@ -996,7 +1020,6 @@ def work():
|
||||||
if not reedsoloErrors and not headerBroken:
|
if not reedsoloErrors and not headerBroken:
|
||||||
# File is modified
|
# File is modified
|
||||||
statusString.set(modifiedNotice)
|
statusString.set(modifiedNotice)
|
||||||
progress["value"] = 100
|
|
||||||
fin.close()
|
fin.close()
|
||||||
fout.close()
|
fout.close()
|
||||||
# If keep file not checked...
|
# If keep file not checked...
|
||||||
|
@ -1060,13 +1083,9 @@ def work():
|
||||||
|
|
||||||
# Bind the output file
|
# Bind the output file
|
||||||
if platform.system()=="Windows":
|
if platform.system()=="Windows":
|
||||||
status.bind("<Button-1>",
|
status.bind("<Button-1>",lambda e:showOutput(output.replace("/","\\")))
|
||||||
lambda e:showOutput(output.replace("/","\\"))
|
|
||||||
)
|
|
||||||
else:
|
else:
|
||||||
status.bind("<Button-1>",
|
status.bind("<Button-1>",lambda e:showOutput(output))
|
||||||
lambda e:showOutput(output)
|
|
||||||
)
|
|
||||||
|
|
||||||
# Reset variables and UI states
|
# Reset variables and UI states
|
||||||
resetUI()
|
resetUI()
|
||||||
|
@ -1077,6 +1096,32 @@ def work():
|
||||||
onlyFiles = []
|
onlyFiles = []
|
||||||
working = False
|
working = False
|
||||||
|
|
||||||
|
def wrapper(yes=False):
|
||||||
|
global working,mode,outputFile
|
||||||
|
if mode=="encrypt":
|
||||||
|
outputFile = outputInput.get()+".pcv"
|
||||||
|
else:
|
||||||
|
outputFile = outputInput.get()
|
||||||
|
try:
|
||||||
|
getsize(outputFile)
|
||||||
|
if not yes:
|
||||||
|
confirmOverwrite.pack(expand=1,fill=tkinter.BOTH)
|
||||||
|
return
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
work()
|
||||||
|
except:
|
||||||
|
if mode=="encrypt":
|
||||||
|
setEncryptionUI()
|
||||||
|
else:
|
||||||
|
setDecryptionUI()
|
||||||
|
statusString.set(strings[17])
|
||||||
|
finally:
|
||||||
|
dummy.focus()
|
||||||
|
working = False
|
||||||
|
sys.exit(0)
|
||||||
|
|
||||||
def updateStats(total):
|
def updateStats(total):
|
||||||
global startTime,previousTime,done,stopUpdating,reedsolo,reedsoloFixed,reedsoloErrors,working
|
global startTime,previousTime,done,stopUpdating,reedsolo,reedsoloFixed,reedsoloErrors,working
|
||||||
while True:
|
while True:
|
||||||
|
@ -1091,9 +1136,10 @@ def updateStats(total):
|
||||||
progress["value"] = percent
|
progress["value"] = percent
|
||||||
|
|
||||||
speed = (done/sinceStart)/10**6 or 0.0001
|
speed = (done/sinceStart)/10**6 or 0.0001
|
||||||
eta = round((total-done)/(speed*10**6))
|
eta = max(round((total-done)/(speed*10**6)),0)
|
||||||
|
eta = str(timedelta(seconds=min(eta,86399))).zfill(8)
|
||||||
|
|
||||||
info = f"Working... {min(percent,100):.0f}% at {speed:.2f} MB/s (ETA: {max(eta,0)}s)"
|
info = f"Working... {min(percent,100):.0f}% at {speed:.2f} MB/s (ETA: {eta})"
|
||||||
|
|
||||||
if reedsolo and mode=="decrypt" and reedsoloFixed:
|
if reedsolo and mode=="decrypt" and reedsoloFixed:
|
||||||
tmp = "s" if reedsoloFixed!=1 else ""
|
tmp = "s" if reedsoloFixed!=1 else ""
|
||||||
|
@ -1108,6 +1154,7 @@ def updateStats(total):
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
break
|
break
|
||||||
|
|
||||||
|
|
||||||
def secureWipe(fin):
|
def secureWipe(fin):
|
||||||
statusString.set(strings[12])
|
statusString.set(strings[12])
|
||||||
# Check platform, erase accordingly
|
# Check platform, erase accordingly
|
||||||
|
@ -1269,6 +1316,15 @@ def disableAllInputs():
|
||||||
keepBtn["state"] = "disabled"
|
keepBtn["state"] = "disabled"
|
||||||
rsBtn["state"] = "disabled"
|
rsBtn["state"] = "disabled"
|
||||||
|
|
||||||
|
def onClose():
|
||||||
|
global working
|
||||||
|
if not working:
|
||||||
|
tk.destroy()
|
||||||
|
else:
|
||||||
|
force = messagebox.askyesno("Confirmation",cancelNotice)
|
||||||
|
if force:
|
||||||
|
tk.destroy()
|
||||||
|
|
||||||
def prepare():
|
def prepare():
|
||||||
global rs13,rs128
|
global rs13,rs128
|
||||||
rs13 = RSCodec(13)
|
rs13 = RSCodec(13)
|
||||||
|
@ -1280,5 +1336,8 @@ def prepare():
|
||||||
# Prepare Reed-Solomon codecs
|
# Prepare Reed-Solomon codecs
|
||||||
Thread(target=prepare,daemon=True).start()
|
Thread(target=prepare,daemon=True).start()
|
||||||
|
|
||||||
|
tk.protocol("WM_DELETE_WINDOW",onClose)
|
||||||
# Start tkinter
|
# Start tkinter
|
||||||
tk.mainloop()
|
tk.mainloop()
|
||||||
|
|
||||||
|
sys.exit(0)
|
||||||
|
|
Loading…
Reference in a new issue