套接字函数出现错误
我正在尝试从一个包含子域名的列表中,结合一个参数值来使用 socket.gethostbyname
,但是遇到了错误。我不确定是循环没有正确工作,导致第一次尝试的子域名+域名不合法,还是根本就没有成功?
错误信息
Traceback (most recent call last):
File "./attack2.py", line 40, in <module>
print subcheck(returned_list, arguments['--domain'])
File "./attack2.py", line 31, in subcheck
socket.gethostbyname(sub + domain)
socket.gaierror: [Errno -2] Name or service not known
代码
#!/usr/bin/python
"""
Description:
Basic Domain bruteforcer
Usage:
attack2.py (-f <file>) (-d <domain>) [-t 10] [-v]
attack2.py -h | --help
Arguments:
-f --file File to read potential Sub-domains from. (Required)
-d --domain Domain to bruteforce. (Required)
Options:
-h --help Show this screen.
-p --proxy Proxy address and port. [default: http://127.0.0.1:8080] (Optional)
-t --thread Thread count. (Optional)
-v --verbose Turn debug on. (Optional)
"""
import socket
from docopt import docopt
def fread(dwords):
flist = open(dwords).readlines()
return [s.replace('\n', '.') for s in flist]
def subcheck(subdomain, domain):
for sub in subdomain:
socket.gethostbyname(sub + domain)
return output
if __name__ == "__main__":
arguments = docopt(__doc__, version='0.1a')
print arguments
print fread(arguments['--file'])
returned_list = fread(arguments['--file'])
print subcheck(returned_list, arguments['--domain'])
新的子域名检查代码
def subcheck(subdomain, domain):
for sub in subdomain:
try:
#print "%s %d" % (sub+domain,len(sub+domain))
print socket.gethostbyname(sub + domain)
except:
print "Some error"
新的输出结果
173.194.34.150
173.194.34.137
Some error
Some error
None
2 个回答
0
"[Errno -2] Name or service not known" 这个错误听起来像是你的程序无法连接到DNS服务器。你有没有尝试用其他方法来解析这些名字?比如可以用 `dig` 命令。如果 `socket.gethostbyname` 不能解析这个名字,它会返回一个不同的错误;我试过的时候,得到的是:“没有与主机名关联的地址”。
0
domain.google.com
和 stuff.google.com
这些域名是无效的。去掉它们就能解决问题。
你没有在 subcheck
函数里返回任何东西,所以它返回的是 None。当你这样调用它的时候:
print subcheck(returned_list, arguments['--domain'])
它就会被迫返回,并打印出 None。如果你把前面的 print 去掉,就看不到 None 了。