Python - 导入DNSTWIST以使用其功能

时间:2016-10-26 13:32:47

标签: python python-2.7 python-import

我有一个我编写的程序使用这个名为dnstwist的python代码,可以在这里找到:Dnstwist documentation

dnstwist本身的python代码可以在这里找到:dnstwist.py

我的代码使用dnstwist的方式是通过os.open()函数。它看起来像这样:s.popen(os.getcwd() + "/dnstwist.py --json --registered " + url).read()

虽然这确实有效,但我希望能够导入dnstwist并将其用作库。

我在StackOverflow上查了一些关于如何做这件事的问题。特别是:How does Python importing exactly work?

我遇到的问题是我不确定如何来调用dnstwist中的各种函数。

我问过这个人怎么做这样的事情。他们说要做以下事情:

import dnstwist
fuzz = dnstwist.DomainFuzz("google.com")
fuzz.generate()
fuzz.domains

我尝试了这个确切的代码,我收到了以下错误:

AttributeError: 'function' object has no attribute 'DomainFuzz'

每当我尝试使用dnstwist.py所具有的功能之一时,我都会遇到类似的错误。我真的不确定应该怎么做。

感谢您的时间。

1 个答案:

答案 0 :(得分:0)

您询问有关模块导入的人,指导您正确。 我还在解释器中运行了以上几行来验证 - 所有这些都运行良好:

>>> import dnstwist
>>> fuzz = dnstwist.DomainFuzz("google.com")
>>> fuzz
<dnstwist.DomainFuzz instance at 0xc300e0>
>>> fuzz.generate()
>>> fuzz.domains
[{'domain-name': 'google.com', 'fuzzer': 'Original*'}, {'domain-name': 'googlea.com', 'fuzzer': 'Addition'}, {'domain-name': 'googleb.com', 'fuzzer': 'Addition'}, {'domain-name': 'googlec.com', 'fuzzer': 'Addition'}, {'domain-name': 'googled.com', 'fuzzer': 'Addition'}, {'domain-name': 'googlee.com', 'fuzzer': 'Addition'}, {'domain-name': 'googlef.com', 'fuzzer': 'Addition'}, {'domain-name': 'googleg.com', 'fuzzer': 'Addition'}, 
..................
..................
 'fuzzer': 'Transposition'}, {'domain-name': 'googel.com', 'fuzzer': 'Transposition'}, {'domain-name': 'gaogle.com', 'fuzzer': 'Vowel swap'}, {'domain-name': 'geogle.com', 'fuzzer': 'Vowel swap'}, {'domain-name': 'googlo.com', 'fuzzer': 'Vowel swap'}, {'domain-name': 'googli.com', 'fuzzer': 'Vowel swap'}, {'domain-name': 'guogle.com', 'fuzzer': 'Vowel swap'}, {'domain-name': 'gougle.com', 'fuzzer': 'Vowel swap'}, {'domain-name': 'goegle.com', 'fuzzer': 'Vowel swap'}, {'domain-name': 'goagle.com', 'fuzzer': 'Vowel swap'}, {'domain-name': 'wwgoogle.com', 'fuzzer': 'Various'}, {'domain-name': 'wwwgoogle.com', 'fuzzer': 'Various'}, {'domain-name': 'www-google.com', 'fuzzer': 'Various'}, {'domain-name': 'googlecom.com', 'fuzzer': 'Various'}]
>>> 

可能的原因

  • 检查您的目录,您可能有多个dnstwist.py
  • 如果dnstwist代码为DomainFuzz(),请检查private MemberInfo GetMethodName<T>(Expression<T> expression) { Expression body = expression.Body; // You might want to complete this // depending on which expression you want to use return ((MethodCallExpression)body).Method.Name; } // Works for both Action and Func private object TimedMethodInvoke<T>(Expression<T> funcExpression) { var sw = Stopwatch.StartNew(); var result = ((Delegate)(object)funcExpression.Compile()).DynamicInvoke(); trackDuration(GetMethodName(funcExpression), sw.ElapsedMilliseconds); return result; } 的副本。