如何解决python中的端口扫描程序
| 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()
我正在尝试为我的IRC机器人编写一个小型的portcanner,但我一直收到此错误。
NameError: name \'gethostbyname\' is not defined
解决方法
>>> import socket
>>> socket.gethostbyname(\'localhost\')
\'127.0.0.1\'
如前所述,请确保已导入套接字模块,然后根据执行的方式调用gethostbyname()
。
,在脚本的顶部,看起来就像您执行的一样:
from socket import *
或“相对”较大的东西,可以直接将socket
名称引入您的全局命名空间。
您不应该这样做,因为这是一种不好的做法,并且会导致诸如socket.socket
(类)和socket
(模块)混淆的问题。从套接字模块导入的所有内容都使您的命名空间陷入混乱,这很多:
>>> import socket
>>> len(socket.__all__)
241
(“ 9”是模块变量,它指定模块的公共名称,并指示当有人在您的模块上执行“ 10”时导出的内容)。
241有很多不同的名称要导入到全局命名空间中(假设是这种情况),它给您带来了很多麻烦,使您可以覆写或意外重用从socket
导入的变量。
,gethostbyname
应该从某个地方进口吗?尝试socket.gethostbyname()
,或您导入socket
的任何东西。
,您可以使用Scapy轻松进行大约2行的端口扫描。您可以将目标的DNS名称直接转储到其中。如果仍然需要目标的IP地址,请记住在调用socket.gethostbyname
之前导入socket
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。