Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中的端口扫描程序_Python_Sockets_Irc - Fatal编程技术网

python中的端口扫描程序

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

我正在尝试为我的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(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()。with
socket.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 have
sck=socket.socket(socket.AF\u INET,socket.socket\u流)
当我尝试从套接字导入中导入为
*
时,我得到了这个错误
AttributeError:type对象“\u socketobject”没有at