#!/usr/bin/python
# -*- coding: utf-8 -*-
import Tkinter
import tkFileDialog
import tkMessageBox
import hashlib
class simpleapp_tk(Tkinter.Tk):
def __init__(self,parent):
Tkinter.Tk.__init__(self,parent)
self.parent = parent
self.bind('<Control-c>', self.copy)
self.bind('<Control-x>', self.cut)
self.bind('<Control-v>', self.paste)
self.bind('<Control-a>', self.selectall)
self.initialize()
def initialize(self):
self.grid()
#######
#######
####### TEXT VAR ENTRY
self.text1 = Tkinter.StringVar()
self.textbox = Tkinter.Text(self)
self.textbox.grid(column=0, row=0, sticky="EW")
#######
#######
button = Tkinter.Button(self,text=u"Hash Away!", command=self.OnButtonClick)
button.grid(column=2,row=1)
self.optionslist = ('ROT13','SHA-1','SHA-224','SHA-256','SHA-384','SHA-512','MD5')
self.var = Tkinter.StringVar(self)
self.var.set(self.optionslist[0])
self.optmenu = apply(Tkinter.OptionMenu,(self, self.var)+self.optionslist)
self.optmenu.grid(column=2,row=0)
self.grid_columnconfigure(0,weight=1)
self.grid_rowconfigure(0,weight=1)
self.resizable(True,False)
self.update()
self.geometry(self.geometry())
self.textbox.focus_set()
#self.entry.selection_range(0, Tkinter.END)
############
############
########### Menu
###########
menubar = Tkinter.Menu(self)
filemenu = Tkinter.Menu(menubar, tearoff=0)
filemenu.add_command(label="New", command=self.Newbox)
filemenu.add_command(label="Open", command=self.Openfile)
filemenu.add_command(label="Save", command=self.SaveFile)
filemenu.add_command(label="Save as...", command=self.SaveFile)
filemenu.add_command(label="Close", command=self.Newbox)
filemenu.add_separator()
filemenu.add_command(label="Exit", command=self.quit)
menubar.add_cascade(label="File", menu=filemenu)
editmenu = Tkinter.Menu(menubar, tearoff=0)
editmenu.add_command(label="Cut", command=self.cut)
editmenu.add_command(label="Copy", command=self.copy)
editmenu.add_command(label="Paste", command=self.paste)
editmenu.add_command(label="Delete", command=self.delete)
editmenu.add_command(label="Select All", command=self.selectall)
menubar.add_cascade(label="Edit", menu=editmenu)
###
###
aboutmenu = Tkinter.Menu(menubar, tearoff=0)
aboutmenu.add_command(label="About...", command=self.about)
menubar.add_cascade(label="About", menu=aboutmenu)
self.config(menu=menubar)
##########END MENU
###########
##########
##########
def OnButtonClick(self):
if self.var.get() == 'ROT13':
self.rough1 = self.textbox.get("0.0",Tkinter.END)
self.textbox.delete("0.0", Tkinter.END)
self.textbox.insert('0.0',self.Rot13a(self.rough1).strip())
if self.var.get() == 'SHA-256':
self.rough1 = self.textbox.get("0.0",Tkinter.END)
self.textbox.delete("0.0", Tkinter.END)
self.textbox.insert('0.0',self.SHA256(self.rough1).strip())
if self.var.get() == 'SHA-512':
self.rough1 = self.textbox.get("0.0",Tkinter.END)
self.textbox.delete("0.0", Tkinter.END)
self.textbox.insert('0.0',self.SHA512(self.rough1).strip())
if self.var.get() == 'SHA-1':
self.rough1 = self.textbox.get("0.0",Tkinter.END)
self.textbox.delete("0.0", Tkinter.END)
self.textbox.insert('0.0',self.SHA1(self.rough1).strip())
if self.var.get() == 'SHA-224':
self.rough1 = self.textbox.get("0.0",Tkinter.END)
self.textbox.delete("0.0", Tkinter.END)
self.textbox.insert('0.0',self.SHA224(self.rough1).strip())
if self.var.get() == 'SHA-384':
self.rough1 = self.textbox.get("0.0",Tkinter.END)
self.textbox.delete("0.0", Tkinter.END)
self.textbox.insert('0.0',self.SHA384(self.rough1).strip())
if self.var.get() == 'MD5':
self.rough1 = self.textbox.get("0.0",Tkinter.END)
self.textbox.delete("0.0", Tkinter.END)
self.textbox.insert('0.0',self.MD5(self.rough1).strip())
def Rot13a(self, text):
abc = list("abcdefghijklmnopqrstuvwxyz")
ABC = list("ABCDEFGHIJKLMNOPQRSTUVWXYZ")
lst = list(text)
newlst = []
for i in lst:
if i in abc:
ind = abc.index(i)
ind = (ind + 13)%26
newlst.append(abc[ind])
elif i in ABC:
ind = ABC.index(i)
ind = (ind + 13)%26
newlst.append(ABC[ind])
else:
newlst.append(i)
txt = ""
text = txt.join(newlst)
return text
def SHA256(self, string):
return hashlib.sha256(string).hexdigest()
def SHA512(self, string):
return hashlib.sha512(string).hexdigest()
def SHA1(self, string):
return hashlib.sha1(string).hexdigest()
def MD5(self, string):
return hashlib.md5(string).hexdigest()
def SHA224(self, string):
return hashlib.sha224(string).hexdigest()
def SHA384(self, string):
return hashlib.sha384(string).hexdigest()
def Newbox(self):
self.textbox.delete("0.0", Tkinter.END)
def Openfile(self):
mask = \
[("Text and Python files","*.txt *.py *.pyw"),
("HTML files","*.htm"),
("All files","*.*")]
fin = tkFileDialog.askopenfile(initialdir='/', filetypes=mask, mode='r')
text = fin.read()
if text != None:
self.textbox.delete(0.0, Tkinter.END)
self.textbox.insert(Tkinter.END,text)
def SaveFile(self):
"""get a filename and save the text in the editor widget"""
# default extension is optional, here will add .txt if missing
fout = tkFileDialog.asksaveasfile(mode='w', defaultextension=".txt")
text2save = str(self.textbox.get(0.0,Tkinter.END))
fout.write(text2save)
fout.close()
def copy(self, event):
self.clipboard_clear()
text = self.textbox.get("sel.first", "sel.last")
self.clipboard_append(text)
def cut(self, event):
self.copy()
self.textbox.delete("sel.first", "sel.last")
def paste(self):
text = self.selection_get(selection='CLIPBOARD')
self.textbox.insert('insert', text)
def delete(self):
self.textbox.delete("sel.first", "sel.last")
def selectall(self, event):
self.textbox.tag_add('sel', '1.0', 'end')
def about(self):
tkMessageBox.showinfo("About", """HashTool
Copyright 2014 [email protected]
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
MA 02110-1301, USA.""")
def donothing(self):
filewin = Tkinter.Toplevel(self)
button = Tkinter.Button(filewin, text="Do nothing button")
button.pack()
if __name__ == "__main__":
app = simpleapp_tk(None)
app.title('Hash Tool')
app.mainloop()
Comments