python中的端口扫描程序
我正在尝试为我的IRC bot编写一个小型端口扫描程序,但我一直遇到这个错误python中的端口扫描程序,python,sockets,irc,Python,Sockets,Irc,我正在尝试为我的IRC bot编写一个小型端口扫描程序,但我一直遇到这个错误 if data.find('!scan') != -1: nick = data.split('!')[ 0 ].replace(':','') targetip = gethostbyname(arg) sck.send('PRIVMSG ' + chan + " :" ' scanning host' + targetip + '\r\n') for i in range
if data.find('!scan') != -1:
nick = data.split('!')[ 0 ].replace(':','')
targetip = gethostbyname(arg)
sck.send('PRIVMSG ' + chan + " :" ' scanning host' + targetip + '\r\n')
for i in range(20, 1025):
s = socket(AF_INET, SOCK_STREAM)
result = s.connect_ex((targetip, i))
if (result == 0) :
s.send('PRIVMSG ' + chan + " :" 'port %d: OPEN' % (i,) + '\r\n')
s.close()
gethostbyname
是否应从某个地方导入?请尝试使用socket.gethostbyname()
,或者任何您导入的socket
as.gethostbyname
应该从某个地方导入吗?请尝试使用socket.gethostbyname()
,或您作为导入的任何内容
NameError: name 'gethostbyname' is not defined
如前所述,确保导入了套接字模块,并且根据导入方式,可以调用gethostbyname()
如上所述,请确保导入了套接字模块,并且根据您的导入方式,您可以在脚本顶部调用
gethostbyname()
,它看起来像是执行了以下操作:
>>> import socket
>>> socket.gethostbyname('localhost')
'127.0.0.1'
或者一些“相对”大的东西,它将socket
名称直接带入您的全局名称空间
您不应该这样做,因为这是一种不好的做法,并且会导致类似于您遇到的问题,您将socket.socket
(类)与socket
(模块)混淆。您的命名空间已经被从套接字模块导入的所有内容弄得一团糟,这是一个很大的问题:
from socket import *
(\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
241有很多不同的名称要导入到全局名称空间中(假设是这样的话),并为您提供了很多约束,您可以使用这些约束来覆盖或意外重用从socket
导入的变量。在脚本的顶部,看起来您执行了以下操作:
>>> import socket
>>> socket.gethostbyname('localhost')
'127.0.0.1'
或者一些“相对”大的东西,它将socket
名称直接带入您的全局名称空间
您不应该这样做,因为这是一种不好的做法,并且会导致类似于您遇到的问题,您将socket.socket
(类)与socket
(模块)混淆。您的命名空间已经被从套接字模块导入的所有内容弄得一团糟,这是一个很大的问题:
from socket import *
(\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
241有很多不同的名称要导入到全局名称空间中(假设是这样的话),并为您提供了很多约束条件,可以覆盖或意外重用从socket
导入的变量。您可以使用241在大约2行中轻松地进行端口扫描。您可以将目标的DNS名称直接转储到其中。如果您仍然需要目标的IP地址,请记住在调用之前导入套接字。您可以用大约2行代码轻松地进行端口扫描。您可以将目标的DNS名称直接转储到其中。如果您仍然需要目标的IP地址,请记住在调用之前导入socket
。使用sck.gethostbyname()
我收到此错误AttributeError:“\u socketobject”对象没有属性“gethostbyname”
是的,我发现它是socket模块中的一个函数,请尝试socket.gethostbyname(它至少在我的机器上工作。)使用sck.gethostbyname()
我得到了这个错误AttributeError:“\u socketobject”对象没有属性“gethostbyname”
是的,我发现它是套接字模块中的一个函数,请尝试socket.gethostbyname(至少在我的机器上工作)。使用socket.gethostbyname()
我得到了这个错误TypeError:gethostbyname()参数1必须是字符串,而不是列表
好的,那么你用错误的参数调用了正确的函数,你能告诉我们调用gethostbyname时arg是什么吗?我的朋友,请尝试一些调试打印。你正在将列表传递给gethostbyname()
。是的,如果您只打印该参数,您应该清楚地看到它是一个列表。我有时会成为只返回一个列表项的函数的牺牲品,例如struct.unpack()。withsocket.gethostbyname()
我收到这个错误TypeError:gethostbyname()参数1必须是字符串,而不是列表
OK,那么您调用的是正确的函数,参数是错误的,您能告诉我们调用gethostbyname时arg是什么吗?朋友,请尝试调试打印。您正在将列表传递给gethostbyname()
。是的,如果您只是打印该参数,您应该清楚地看到它是一个列表。我有时会成为只返回一个项目的列表的函数的牺牲品,例如struct.unpack()。我认为,您可以将套接字模块作为import socket
导入,然后尝试使用不带socket
前缀的函数。使用socket.gethostbyname
,socket.socket
,socket.AF_INET
或从socket import*
作为导入(我更喜欢第一种方法)它在gethostbyname
上抱怨,因为它出现在socket(AF\u INET…
@khachik我有sck=socket.socket(socket.AF\u INET,socket.SOCK\u STREAM)之前
当我尝试从套接字导入中导入为*
时,我得到了这个错误AttributeError:type对象“\u socketobject”没有属性“gethostbyname”
我想,您可以将套接字模块导入为导入套接字
,然后尝试使用不带套接字
前缀的函数。使用socket.gethostbyname
,socket.socket
,socket.AF\u INET
或从socket import*
导入为(我更喜欢第一种方法)。它抱怨gethostbyname
,因为它出现在socket(AF\u INET…
@khachik I havesck=socket.socket(socket.AF\u INET,socket.socket\u流)
当我尝试从套接字导入中导入为*
时,我得到了这个错误AttributeError:type对象“\u socketobject”没有at