Итак, это мой класс панели загрузки которым я сейчас пользуюсь
Код: Выделить всё
class LoadingDialog(QDialog):
def __init__(self):
super().__init__()
self.setWindowTitle("Working on your task")
self.setWindowFlags(Qt.Dialog | Qt.CustomizeWindowHint | Qt.WindowTitleHint)
self.setFixedSize(300, 100) # Fixed size dialog
self.progress = QProgressBar(self)
self.progress.setGeometry(30, 40, 240, 30)
self.progress.setRange(0, 0) # Indeterminate progress bar
self.label = QLabel("Enumerating Please Wait...", self)
self.label.setGeometry(110, 10, 80, 20)
self.setLayout(QVBoxLayout())
self.layout().addWidget(self.label)
self.layout().addWidget(self.progress)
def showEvent(self, event):
super().showEvent(event)
self.progress.setRange(0, 0) # Start indeterminate progress
def closeEvent(self, event):
super().closeEvent(event)
self.progress.setRange(0, 0) # Reset progress on close
Код: Выделить всё
self.loading_dialog.exec()
self.output_text.clear()
self.output_text.append(f"Enumerating subdomains for {domain} using wordlist...\n")
subdomains = self.subdomain_enum(domain, wordlist)
if subdomains:
self.display_subdomains("Wordlist", subdomains)
else:
self.output_text.append("No subdomains found.")
self.loading_dialog.close()
Код: Выделить всё
def subdomain_enum(self, domain, wordlist):
output = []
subdomains = []
with open(wordlist, 'r') as file:
subdomains = file.read().splitlines()
for subdomain in subdomains:
try:
full_domain = f"{subdomain}.{domain}"
result = dns.resolver.resolve(full_domain, 'A')
for ipval in result:
output_line = f'{full_domain} | {ipval.to_text()}'
output.append(output_line)
except Exception as e:
pass
return output
Код: Выделить всё
def display_subdomains(self, source, subdomains):
self.output_text.append(f"From {source}:")
if subdomains:
for subdomain in subdomains:
self.output_text.append(f" - {subdomain}")
else:
self.output_text.append(f" No subdomains found from {source}.")
Подробнее здесь: https://stackoverflow.com/questions/787 ... infinitely