65 lines
2.1 KiB
Python
65 lines
2.1 KiB
Python
|
#!/usr/bin/env python
|
||
|
from tkinter import Tk, Label, Button, Entry, StringVar, IntVar, END, W, E
|
||
|
from pwned import lookup_pwned_api
|
||
|
import hashlib
|
||
|
import sys
|
||
|
|
||
|
try:
|
||
|
import requests
|
||
|
except ModuleNotFoundError:
|
||
|
print("### pip install requests ###")
|
||
|
raise
|
||
|
|
||
|
|
||
|
class Calculator:
|
||
|
|
||
|
def __init__(self, master):
|
||
|
self.master = master
|
||
|
master.title("pwned GUI by PPC")
|
||
|
self.p = "";
|
||
|
|
||
|
self.head_label_text = ""
|
||
|
self.head_label = Label(master, textvariable=self.head_label_text)
|
||
|
self.label = Label(master, text="Enter the password to check : ")
|
||
|
|
||
|
vcmd = master.register(self.validate) # we have to wrap the command
|
||
|
self.entry = Entry(master, validate="key", validatecommand=(vcmd, '%P'))
|
||
|
|
||
|
self.submit_button = Button(master, text="Check", command=lambda: self.update("submit"))
|
||
|
|
||
|
self.total_label_text = "Number of times Password found : ...."
|
||
|
self.total_text = StringVar()
|
||
|
self.total_text.set(self.total_label_text)
|
||
|
self.total_label = Label(master, textvariable=self.total_text)
|
||
|
self.total = Label(master, text="")
|
||
|
|
||
|
# LAYOUT
|
||
|
|
||
|
self.label.grid(row=0, column=0, sticky=W, padx=(25, 25), pady=(25, 10))
|
||
|
|
||
|
self.head_label.grid(row=0, column=1, columnspan=4, sticky=E, padx=(25, 25), pady=(10, 10))
|
||
|
|
||
|
self.entry.grid(row=2, column=0, columnspan=3, sticky=W+E, padx=(25, 25), pady=(10, 10))
|
||
|
|
||
|
self.submit_button.grid(row=2, column=4, sticky=W+E, padx=(25, 25), pady=(10, 10))
|
||
|
|
||
|
self.total_label.grid(row=4, column=0, columnspan=3, sticky=W, padx=(25, 25), pady=(10, 20))
|
||
|
|
||
|
def validate(self, new_text):
|
||
|
if not new_text: # the field is being cleared
|
||
|
return True
|
||
|
try:
|
||
|
self.p = new_text
|
||
|
return True
|
||
|
except ValueError:
|
||
|
return False
|
||
|
|
||
|
def update(self, method):
|
||
|
self.total = "Number of times Password found : " + str(lookup_pwned_api(self.p)[1])
|
||
|
self.total_text.set(self.total)
|
||
|
self.entry.delete(0, END)
|
||
|
|
||
|
|
||
|
root = Tk()
|
||
|
my_gui = Calculator(root)
|
||
|
root.mainloop()
|