-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathKeyboardDecrypt.py
More file actions
115 lines (94 loc) · 3.71 KB
/
Copy pathKeyboardDecrypt.py
File metadata and controls
115 lines (94 loc) · 3.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
from datetime import datetime
from PySide6.QtWidgets import (
QPushButton,
QVBoxLayout,
QWidget,
QLabel,
QHBoxLayout,
QRadioButton,
QButtonGroup,
QTextBrowser,
)
from PySide6.QtCore import Signal
from MouseDecrypt import load_stylesheet
from UsbKeyboardExtract import extract_data, process_data
class KeyboardDecryptWindow(QWidget):
file_name = Signal(str) # 文件名信号
file_dropped = Signal(str)
def __init__(self, parent=None):
super(KeyboardDecryptWindow, self).__init__(parent)
self.layout = QVBoxLayout()
self.setLayout(self.layout)
# 选择执行的类型
self.type_layout = QHBoxLayout()
self.type_label = QLabel("选择执行类型:")
self.type_layout.addWidget(self.type_label)
self.button_group = QButtonGroup(self)
self.select_type1 = QRadioButton("capdata")
self.select_type2 = QRadioButton("usbhid")
self.button_group.addButton(self.select_type1)
self.button_group.addButton(self.select_type2)
self.type_layout.addWidget(self.select_type1)
self.type_layout.addWidget(self.select_type2)
# 确定按钮
self.run_button = QPushButton("点击执行")
stylesheet = load_stylesheet("css/style.css")
self.run_button.setStyleSheet(stylesheet)
self.run_button.clicked.connect(self.run_command)
self.type_layout.addWidget(self.run_button)
self.layout.addLayout(self.type_layout)
# 输出窗口
self.output = QTextBrowser()
self.layout.addWidget(self.output)
self.output.append(
'由<a href="https://s1rius.space/">s1rius</a>二开\t<a href="https://github.com/Mumuzi7179/UsbKeyboard_Mouse_Hacker_Gui/">源项目(mumuzi)</a>'
)
self.output.setOpenExternalLinks(True)
self.setAcceptDrops(True)
# 文件名变量
self.file = ""
# 接收文件名信号
self.file_name.connect(self.set_file)
def set_file(self, file):
self.file = file
def dragEnterEvent(self, event):
if event.mimeData().hasUrls():
event.accept()
else:
event.ignore()
def dropEvent(self, event):
urls = event.mimeData().urls()
url = urls[0]
filePath = url.toLocalFile()
self.file_dropped.emit(filePath)
def run_command(self):
self.output.clear()
current_time = datetime.now().strftime("%Y/%m/%d %H:%M:%S")
self.output.append(f"{current_time}")
checked_button = self.button_group.checkedButton()
if checked_button:
type = checked_button.text()
else:
type = None
if not self.file:
self.output.append("[-] 错误:没有选择文件。")
return
if not type:
self.output.append("[-] 错误:没有选择执行类型。")
return
self.output.append(f"[+] 执行的类型: {type}")
try:
result, result1 = extract_data(type, self.file, self.output)
result2, result_delete = process_data(result1)
except Exception as e:
self.output.append(f"[-] 执行出错:{e}")
else:
self.output.append("[+] 执行成功。结果如下:")
self.output.append(result)
self.output.append("\n[+] 处理后的结果如下:")
self.output.append(result2)
self.output.append("\n[+] 删除的字符如下:")
self.output.append(result_delete)
def load_stylesheet(filename):
with open(filename, "r") as f:
return f.read()