阅读:3012回复:0
迭代暴力破解域名工具
原文:http://www.room362.com/blog/2014/02/19/iterative-dns-brute-forcing/
翻译原则:没有原则,只是还原了文章的大概意思。 对于域名的暴力破解你肯定有一个包含多个主机名的文件。在我之前的文章中提到过一些方法是用 XARGS 或者 PARALLEL(译者注:需要的自己翻作者的 Blog)。但是众所周知的是即使是字典也不太可能 “All in one”(译者注:作者这么说是瞧不起天朝的黑客们了么?),但是近些年我在做 DNS 记录收集的时候注意到一个事情,就是大多数的域名都有大量比较短的主机名,因为很容易被记住,通常是四个字符或者更少。 我肯定你已经知道我即将做什么了,我想破解最多四个字符中所有可能的主机名(译者注:其实有这样的工具,比如 dnsmap、dnsenum 等)。【这段不翻译了,没意思,主要是作者没有写出想要的代码】。最后我偶然在 gist 上发现一个脚本:https://gist.github.com/petehamilton/4755855 完美解决了我的需求。 为了解决我实际的需求我修改了这个脚本(仅仅是使用了 yield 方法)并且最后也是这么做的(记住 DNS 记录没有大小写之分)。 注意:除非你按 CTRL-C,否则脚本不会停止运行,它会查找更长的主机名。 #!ruby #!/usr/bin/env ruby # ## Brute code stolen form: https://gist.github.com/petehamilton/4755855 # @domain = 'microsoft.com' def result?(sub) results = %x(dig +noall #{sub}.#{@domain} +answer) if results != "" puts "============================" puts "FOUND: t#{sub}" puts "============================" puts "#{results}" puts "============================" end 1 == 2 end def crack_yielding(chars) crack_yield(chars){ |p| return p if result?(p) } end def crack_yield(chars) chars.each { |c| yield c } crack_yield(chars) { |c| chars.each do |x| yield c + x end } end chars = ('a'..'z').to_a (0..9).each {|x| chars |
|