diff --git a/app/__init__.py b/app/__init__.py index c10b37b..a314a09 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -4,6 +4,7 @@ from customtkinter import * from CTkMenuBar import * from CTkMessagebox import * from typing import List +import time from app.utils_drive import * @@ -72,8 +73,12 @@ class App: self.drive_tree.delete(*self.drive_tree.get_children()) self.__load_drives() for drive in self.drives: + rec_method = "DoD 5220.22M" + if drive.disk_type == "HDD": + rec_method = "DoD 5220.22M,Гутмана" + drive.rec_method = rec_method self.drive_tree.insert("", END, values=( - drive.index, drive.name, drive.disk_type, self.__human_size(drive.capacity), drive.serial_num)) + drive.index, drive.name, drive.disk_type, self.__human_size(drive.capacity), drive.serial_num, rec_method)) if self.selected is not None: items = self.drive_tree.get_children("") for item in items: @@ -99,9 +104,10 @@ class App: disks = di.get_disk_list(sorting=True) self.drives = [] for disk in disks: - if "zram" not in disk.get_path() and disk.get_size() != 0: + if "zram" not in disk.get_path() and "loop" not in disk.get_path() and disk.get_size() != 0: self.drives.append(Drive(disk.get_model(), disk.get_path(), disk.get_type_str( ), disk.get_logical_block_size(), int(disk.get_size()*512), disk.get_serial_number(), disk.get_device_id())) + print(disk) def __init_table(self): @@ -119,7 +125,7 @@ class App: self.root.bind("<>", lambda event: self.root.focus_set()) # определяем столбцы - columns = ("index", "name", "type", "capacity", "serial_num") + columns = ("index", "name", "type", "capacity", "serial_num", "method") self.drive_tree = ttk.Treeview( columns=columns, show="headings", selectmode="browse") self.drive_tree.pack(fill=BOTH, expand=1, side=TOP) @@ -130,12 +136,14 @@ class App: self.drive_tree.heading("type", text="Тип", anchor=W, command=lambda: self.__sort(2, False)) self.drive_tree.heading("capacity", text="Объем", anchor=W, command=lambda: self.__sort(3, False)) self.drive_tree.heading("serial_num", text="Серийный номер", anchor=W, command=lambda: self.__sort(4, False)) + self.drive_tree.heading("method", text="Рекомендуемый метод", anchor=W, command=lambda: self.__sort(5, False)) self.drive_tree.column("#1", stretch=NO, width=60, minwidth=60) self.drive_tree.column("#2", stretch=YES, width=150, minwidth=120) self.drive_tree.column("#3", stretch=NO, width=100, minwidth=100) - self.drive_tree.column("#4", stretch=YES, width=150, minwidth=100) + self.drive_tree.column("#4", stretch=NO, width=100, minwidth=50) self.drive_tree.column("#5", stretch=YES, width=150, minwidth=100) + self.drive_tree.column("#6", stretch=YES, width=150, minwidth=150) self.drive_tree.bind("<>", self.__drive_selected) @@ -151,6 +159,10 @@ class App: item = self.drive_tree.item(selected_item) self.selected_id = selected_item self.selected = item["values"] + for drive in self.drives: + if drive.index == self.selected[0]: + method = drive.rec_method if "," not in drive.rec_method else drive.rec_method.split(",")[0] + self.method_box.set(method) def __erase_drive(self): method = self.method_box.get() @@ -162,7 +174,7 @@ class App: self.erase_button.configure(state='disabled') self.drive_tree.configure(selectmode="none") - thread = None + self.thread = None self.progressbar = CTkProgressBar(master=self.bottom_frame, orientation="horizontal", width=200) self.progressbar.set(0) self.progressbar.pack(side=LEFT, padx=6, pady=6) @@ -172,6 +184,7 @@ class App: for drive in self.drives: if drive.index == self.selected[0]: self.thread = drive.erase(self.method_box.get(), progressbar=self.progressbar, progress_label=self.progress_label, result=self.wipe_result) + self.start_time = time.time() self.__check_thread() def __check_thread(self): @@ -183,6 +196,7 @@ class App: self.drive_tree.configure(selectmode="browse") self.erase_button.configure(state='active') if self.wipe_result["result"]: + print(f"Время затраченное на стирание: {time.time()-self.start_time}") CTkMessagebox(title="Успешно", message=f"{self.selected[1]} стёрт!") else: CTkMessagebox(title="Ошибка", message=f"{self.wipe_result['err']}") diff --git a/app/utils_drive.py b/app/utils_drive.py index ea05952..e40525c 100644 --- a/app/utils_drive.py +++ b/app/utils_drive.py @@ -6,10 +6,6 @@ from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes from cryptography.hazmat.backends import default_backend erasing_methods = { - "2 прохода": { - "num_passes": 2, - "data": [b"\x00", "random"] - }, "Случайные данные": { "num_passes": 1, "data": ["random"] @@ -61,6 +57,8 @@ class Drive(): capacity: int serial_num: str + + rec_method: str def __init__(self, name, path, disk_type, block_size, capacity, dev_id, index): self.name = name