我有一个我编写的程序使用这个名为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所具有的功能之一时,我都会遇到类似的错误。我真的不确定应该怎么做。
感谢您的时间。
答案 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;
}
的副本。