Advertisement
afrizalwahyuadi66

genarate_sha384

Oct 25th, 2024
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 9.37 KB | Cybersecurity | 0 0
  1. import hashlib
  2. import tkinter as tk
  3. from tkinter import ttk, filedialog, scrolledtext
  4. import threading
  5. from datetime import datetime
  6. import os
  7.  
  8. class HashingApp:
  9.     def __init__(self, root):
  10.         self.root = root
  11.         self.root.title("CyberHash - Advanced SHA384 Toolkit")
  12.         self.root.geometry("1000x700")
  13.         self.root.configure(bg='#1a1a1a')
  14.        
  15.         # Variables
  16.         self.input_file = None
  17.         self.is_processing = False
  18.        
  19.         self.setup_gui()
  20.         self.show_welcome_message()
  21.        
  22.     def setup_gui(self):
  23.         # Main container
  24.         main_frame = tk.Frame(self.root, bg='#1a1a1a')
  25.         main_frame.pack(fill=tk.BOTH, expand=True, padx=20, pady=20)
  26.        
  27.         # Title
  28.         title_frame = tk.Frame(main_frame, bg='#1a1a1a')
  29.         title_frame.pack(fill=tk.X, pady=(0,20))
  30.        
  31.         title_label = tk.Label(
  32.             title_frame,
  33.             text="CyberHash Toolkit",
  34.             font=("Helvetica", 24, "bold"),
  35.             fg='#00ff00',
  36.             bg='#1a1a1a'
  37.         )
  38.         title_label.pack()
  39.        
  40.         subtitle_label = tk.Label(
  41.             title_frame,
  42.             text="Advanced SHA384 Hash Generator",
  43.             font=("Helvetica", 12),
  44.             fg='#00ff00',
  45.             bg='#1a1a1a'
  46.         )
  47.         subtitle_label.pack()
  48.        
  49.         # Control Panel
  50.         control_frame = tk.LabelFrame(
  51.             main_frame,
  52.             text="Control Panel",
  53.             fg='#00ff00',
  54.             bg='#1a1a1a',
  55.             font=("Helvetica", 10, "bold")
  56.         )
  57.         control_frame.pack(fill=tk.X, pady=(0,20))
  58.        
  59.         # File Selection
  60.         self.file_frame = tk.Frame(control_frame, bg='#1a1a1a')
  61.         self.file_frame.pack(fill=tk.X, padx=20, pady=10)
  62.        
  63.         self.select_btn = tk.Button(
  64.             self.file_frame,
  65.             text="Select Wordlist",
  66.             command=self.select_file,
  67.             bg='#333333',
  68.             fg='#00ff00',
  69.             font=("Helvetica", 10),
  70.             relief=tk.GROOVE
  71.         )
  72.         self.select_btn.pack(side=tk.LEFT)
  73.        
  74.         self.file_label = tk.Label(
  75.             self.file_frame,
  76.             text="No file selected",
  77.             fg='#999999',
  78.             bg='#1a1a1a',
  79.             font=("Helvetica", 10)
  80.         )
  81.         self.file_label.pack(side=tk.LEFT, padx=10)
  82.        
  83.         # Output Options
  84.         output_frame = tk.Frame(control_frame, bg='#1a1a1a')
  85.         output_frame.pack(fill=tk.X, padx=20, pady=10)
  86.        
  87.         tk.Label(
  88.             output_frame,
  89.             text="Output file:",
  90.             fg='#00ff00',
  91.             bg='#1a1a1a'
  92.         ).pack(side=tk.LEFT)
  93.        
  94.         self.output_entry = tk.Entry(
  95.             output_frame,
  96.             bg='#333333',
  97.             fg='#00ff00',
  98.             insertbackground='#00ff00'
  99.         )
  100.         self.output_entry.pack(side=tk.LEFT, padx=10, fill=tk.X, expand=True)
  101.        
  102.         # Progress Bar
  103.         self.progress_frame = tk.Frame(control_frame, bg='#1a1a1a')
  104.         self.progress_frame.pack(fill=tk.X, padx=20, pady=10)
  105.        
  106.         self.progress_bar = ttk.Progressbar(
  107.             self.progress_frame,
  108.             orient='horizontal',
  109.             mode='determinate',
  110.             length=300
  111.         )
  112.         self.progress_bar.pack(fill=tk.X)
  113.        
  114.         self.progress_label = tk.Label(
  115.             self.progress_frame,
  116.             text="Ready",
  117.             fg='#00ff00',
  118.             bg='#1a1a1a'
  119.         )
  120.         self.progress_label.pack()
  121.        
  122.         # Buttons
  123.         button_frame = tk.Frame(control_frame, bg='#1a1a1a')
  124.         button_frame.pack(fill=tk.X, padx=20, pady=10)
  125.        
  126.         self.start_btn = tk.Button(
  127.             button_frame,
  128.             text="Start Hashing",
  129.             command=self.start_hashing,
  130.             bg='#333333',
  131.             fg='#00ff00',
  132.             font=("Helvetica", 10, "bold"),
  133.             relief=tk.GROOVE,
  134.             state=tk.DISABLED
  135.         )
  136.         self.start_btn.pack(side=tk.LEFT)
  137.        
  138.         self.clear_btn = tk.Button(
  139.             button_frame,
  140.             text="Clear Log",
  141.             command=self.clear_log,
  142.             bg='#333333',
  143.             fg='#00ff00',
  144.  font=("Helvetica", 10),
  145.             relief=tk.GROOVE
  146.         )
  147.         self.clear_btn.pack(side=tk.LEFT, padx=10)
  148.        
  149.         # Terminal Output
  150.         terminal_frame = tk.LabelFrame(
  151.             main_frame,
  152.             text="Terminal Output",
  153.             fg='#00ff00',
  154.             bg='#1a1a1a',
  155.             font=("Helvetica", 10, "bold")
  156.         )
  157.         terminal_frame.pack(fill=tk.BOTH, expand=True)
  158.        
  159.         self.terminal = scrolledtext.ScrolledText(
  160.             terminal_frame,
  161.             bg='#000000',
  162.             fg='#00ff00',
  163.             font=("Consolas", 10),
  164.             wrap=tk.WORD
  165.         )
  166.         self.terminal.pack(fill=tk.BOTH, expand=True, padx=10, pady=10)
  167.        
  168.         self.terminal.tag_config("cyan", foreground="#00ffff")
  169.         self.terminal.tag_config("green", foreground="#00ff00")
  170.         self.terminal.tag_config("yellow", foreground="#ffff00")
  171.         self.terminal.tag_config("red", foreground="#ff0000")
  172.        
  173.     def show_welcome_message(self):
  174.         welcome_msg = """
  175. ╔══════════════════════════════════════════════════════════════╗
  176. ║                    CYBERHASH TOOLKIT v2.0                    ║
  177. ║--------------------------------------------------------------║
  178. ║  [*] Advanced SHA384 Hash Generator                          ║
  179. ║  [*] Developed by: Security Research Team                    ║
  180. ║  [*] Started at: {time}                         ║
  181. ║                                                              ║
  182. ║  Usage:                                                      ║
  183. ║  1. Select your wordlist file                                ║
  184. ║  2. Specify output filename                                  ║
  185. ║  3. Click 'Start Hashing' to begin                           ║
  186. ╚══════════════════════════════════════════════════════════════╝
  187.        """.format(time=datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
  188.        
  189.         self.log(welcome_msg, "cyan")
  190.        
  191.     def log(self, message, color="white"):
  192.         self.terminal.insert(tk.END, message + "\n", color)
  193.         self.terminal.see(tk.END)
  194.        
  195.     def select_file(self):
  196.         filename = filedialog.askopenfilename(
  197.             title="Select Wordlist",
  198.             filetypes=[("Text Files", "*.txt"), ("All Files", "*.*")]
  199.         )
  200.         if filename:
  201.             self.input_file = filename
  202.             self.file_label.config(text =os.path.basename(filename))
  203.             self.start_btn.config(state=tk.NORMAL)
  204.             self.log(f"[+] Selected wordlist: {filename}", "green")
  205.            
  206.     def clear_log(self):
  207.         self.terminal.delete(1.0, tk.END)
  208.         self.show_welcome_message()
  209.        
  210.     def start_hashing(self):
  211.         if not self.input_file:
  212.             self.log("[!] Please select a wordlist first", "red")
  213.             return
  214.            
  215.         output_file = self.output_entry.get().strip()
  216.         if not output_file:
  217.             self.log("[!] Please specify output filename", "red")
  218.             return
  219.            
  220.         if self.is_processing:
  221.             self.log("[ !] Hashing is already in progress", "yellow")
  222.             return
  223.            
  224.         self.is_processing = True
  225.         self.log("[+] Hashing started", "green")
  226.        
  227.         threading.Thread(target=self.hash_files, args=(self.input_file, output_file)).start()
  228.        
  229.     def hash_files(self, input_file, output_file):
  230.         try:
  231.             with open(input_file, "r") as f:
  232.                 lines = f.readlines()
  233.                 total_lines = len(lines)
  234.                 self.progress_bar.config(maximum=total_lines)
  235.                
  236.             with open(output_file, "w") as f:
  237.                 for i, line in enumerate(lines):
  238.                     line = line.strip()
  239.                     if line:
  240.                         hashed = hashlib.sha384(line.encode()).hexdigest()
  241.                         f.write(f"{line}:{hashed}\n")
  242.                        
  243.                         self.log(f"Hashing {line} -> {hashed}", "cyan")
  244.                         # Update progress setiap line
  245.                         self.progress_bar["value"] = i + 1
  246.                         self.progress_label.config(text=f"Hashing {i+1}/{total_lines}...")
  247.                         self.root.update_idletasks()
  248.                    
  249.                 # Pastikan progress bar penuh di akhir
  250.                 self.progress_bar["value"] = total_lines
  251.            
  252.             self.log(f"[+] Hashing completed: {output_file}", "green")
  253.             # Ubah label menjadi "Finished" ketika selesai
  254.             self.progress_label.config(text="Finished")
  255.        
  256.         except Exception as e:
  257.             self.log(f"[!] Error: {str(e)}", "red")
  258.             self.progress_label.config(text="Error")
  259.         finally:
  260.             self.is_processing = False
  261.        
  262. if __name__ == "__main__":
  263.     root = tk.Tk()
  264.     app = HashingApp(root)
  265.     root.mainloop()
  266.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement