Files
2026-07-28 03:21:34 +08:00

87 lines
2.2 KiB
Python

import socket
import threading
from config import load_config
from output import Output
from server import handle_connection
from utils import *
# 版本号
VERSION = "2.1"
# 小版本号
MINOR_VERSION = 4748
'''
import ctypes
import sys
kernel32 = ctypes.windll.kernel32
# 创建新控制台
kernel32.FreeConsole() # 先释放现有控制台
if kernel32.AllocConsole():
sys.stdout = open("CONOUT$", "w")
sys.stdin = open("CONIN$", "r")
print("新控制台输出")
input("输入任意键退出...")
kernel32.FreeConsole()
sys.stdout = sys.__stdout__
sys.stdin = sys.__stdin__
'''
def main():
send_log("#", f"Starting SSH Honeypot V{VERSION}.{MINOR_VERSION}...")
send_log("@", "By yrzd6")
send_log("#", f"Work directory: {os.getcwd()}")
config, shell_config, rsa_key = load_config()
output = Output(config)
# 从配置获取端口
PORT = int(config['settings']['port'])
host = "0.0.0.0"
server_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
server_sock.bind((host, PORT))
server_sock.listen(100)
server_sock.settimeout(0.5)
output.startup(host, PORT)
try:
send_log("#", "Server running...")
while True:
try:
client_sock, client_addr = server_sock.accept()
threading.Thread(
target=handle_connection,
args=(client_sock, client_addr, config, shell_config, rsa_key, output),
daemon=True
).start()
except socket.timeout:
pass
except Exception as e:
send_log("x", traceback_info())
send_log("x", f"Server - Error: {e}")
except KeyboardInterrupt:
output.shutdown_server()
finally:
server_sock.close()
if __name__ == "__main__":
try:
main()
except Exception as e:
send_log("x", "A catastrophic unexpected error occurred in the program.")
send_log("x", traceback_info())
send_log("x", f"Error: {e}")