Python 如何返回用于验证端口扫描的套接字状态
作为安全测试的一部分,我正在开发一个脚本,用于检查主机中连接的端口,如果状态为Python 如何返回用于验证端口扫描的套接字状态,python,Python,作为安全测试的一部分,我正在开发一个脚本,用于检查主机中连接的端口,如果状态为true(如果连接到端口),则返回0,否则返回一些错误代码。。因此,我需要在以下代码中的主机()上的def getPort\u下包含该条件,result==应该返回连接的端口 如果有人能帮我,那就太好了 import socket class A: s= socket.socket(socket.AF_INET,socket.SOCK_STREAM) def getAddress(): h
true
(如果连接到端口),则返回0
,否则返回一些错误代码。。因此,我需要在以下代码中的主机()上的def getPort\u下包含该条件,result==
应该返回连接的端口
如果有人能帮我,那就太好了
import socket
class A:
s= socket.socket(socket.AF_INET,socket.SOCK_STREAM)
def getAddress():
host= raw_input("Enter the Host name :" )
result = s.gethostbyname(host)
return result
def getPort_on_host():
portlist =[20,23,80,912,135,445,20]
for port in portlist:
result = s.connect_ex((getAddress,port))
if result ==""
print result
return port
s.close()
def getService():
status = s.getserverbyport(getPOrt_on_host)
print status
注意你的缩进。所有函数的级别都必须缩进到函数后面,否则它将不起作用。
条件语句也一样:for
、if
、else
等。所有语句都需要在其下方有一个缩进级别。所有这些声明都需要
后面还有一个冒号
接下来,您可能试图将s
作为实例变量传递(即全局传递给类),这意味着您应该
用self.
表示它。如果继续使用类结构,还应该创建一个\uuuuu init\uuuu
方法。
您还需要在所有方法中将其作为参数传递。还请注意,如果您使用
return
在Python函数中,它不会执行低于该值的代码。此处无法访问您的s.close()
传递方法时,如果希望传递方法对象本身,则调用方法名称是可以的。如果你想
传递函数返回的值,您需要在方法名称中添加括号,即result=self.s.connect\u ex((self.getAddress(),port))
我看到,当您需要在套接字接口本身上调用时,您正在套接字对象上调用gethostbyname
。
您应该在另一个变量上转换主机名,然后在之后调用套接字对象上的connect\u ex
请注意,在for
循环中,您每次都在传递函数。所以每次它都会要求主机名
这是一个更新版本,让你更接近你需要的地方。请注意,打开主机并测试每个套接字需要一些时间
要打印的主机的时间:
import socket
class A:
def __init__(self):
self.s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
def getAddress(self):
newSocketobj = socket
host = raw_input("Enter the Host name :" )
result = newSocketobj.gethostbyname(host)
print result
return result
def getPort_on_host(self):
portlist =[20,23,80,912,135,445,20]
hostname = self.getAddress()
for port in portlist:
status = self.s.connect_ex((hostname,port))
print status
self.s.close()
#return port
def getService(self):
status = self.s.getserverbyport(self.getPort_on_host)
print status
newTest = A()
newTest.getPort_on_host()
注意你的缩进。所有函数的级别都必须缩进到函数后面,否则它将不起作用。
条件语句也一样:for
、if
、else
等。所有语句都需要在其下方有一个缩进级别。所有这些声明都需要
后面还有一个冒号
接下来,您可能试图将s
作为实例变量传递(即全局传递给类),这意味着您应该
用self.
表示它。如果继续使用类结构,还应该创建一个\uuuuu init\uuuu
方法。
您还需要在所有方法中将其作为参数传递。还请注意,如果您使用
return
在Python函数中,它不会执行低于该值的代码。此处无法访问您的s.close()
传递方法时,如果希望传递方法对象本身,则调用方法名称是可以的。如果你想
传递函数返回的值,您需要在方法名称中添加括号,即result=self.s.connect\u ex((self.getAddress(),port))
我看到,当您需要在套接字接口本身上调用时,您正在套接字对象上调用gethostbyname
。
您应该在另一个变量上转换主机名,然后在之后调用套接字对象上的connect\u ex
请注意,在for
循环中,您每次都在传递函数。所以每次它都会要求主机名
这是一个更新版本,让你更接近你需要的地方。请注意,打开主机并测试每个套接字需要一些时间
要打印的主机的时间:
import socket
class A:
def __init__(self):
self.s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
def getAddress(self):
newSocketobj = socket
host = raw_input("Enter the Host name :" )
result = newSocketobj.gethostbyname(host)
print result
return result
def getPort_on_host(self):
portlist =[20,23,80,912,135,445,20]
hostname = self.getAddress()
for port in portlist:
status = self.s.connect_ex((hostname,port))
print status
self.s.close()
#return port
def getService(self):
status = self.s.getserverbyport(self.getPort_on_host)
print status
newTest = A()
newTest.getPort_on_host()
你好,佳士93。。我刚刚更新了代码,但在主机上的newTest.getPort_()文件“portscanner.py”的第18行getPort_上的getPort_result=self.connect_ex((主机名,端口))AttributeError:实例没有“connect_ex”属性。我不确定这些问题。。谢谢,您是通过属性而不是套接字调用的connect\u ex
。请记住,我们将套接字定义为self.s
,因此您必须对其调用方法。行应该是:self.s.connect\u ex((主机名,端口))
如果您不确定如何调用对象上的方法或属性是什么,我强烈建议您阅读Hi Jiash93。。我刚刚更新了代码,但在主机上的newTest.getPort_()文件“portscanner.py”的第18行getPort_上的getPort_result=self.connect_ex((主机名,端口))AttributeError:实例没有“connect_ex”属性。我不确定这些问题。。谢谢,您是通过属性而不是套接字调用的connect\u ex
。请记住,我们将套接字定义为self.s
,因此您必须对其调用方法。行应该是:self.s.connect\u ex((主机名,端口))
如果您不确定如何调用对象上的方法或属性是什么,我强烈建议您阅读