尝试使用Ruby进行区域传输?

时间:2013-10-17 01:53:28

标签: ruby dns

我想知道如何使用Ruby执行区域传输,利用所有已发现的名称服务器。

我的代码无效。如果有更好的方法,请告诉我们。我熟悉像Net :: DNS这样的宝石,但如果可能的话,我希望将其作为系统命令。

用户输入:

# Query domain dns info:
print "[*] Search DNS information for: (ex. rotten.com) "

domain = gets.chomp


# Zone xsfr:

28: puts "\nAttempting zone transfer on #{domain}:"

29: for server in system 'host -t ns' << " #{domain}" do

30: system 'host -l '   << " #{domain} #{server}"

31: end

错误:

./z0ne_XSFR.rb:29:in `<main>': undefined method `each' for true:TrueClass (NoMethodError)

欣赏输入。

2 个答案:

答案 0 :(得分:1)

system方法将被调用命令的状态返回为true / false,而不是像您想要的那样将其捕获的STDOUT返回。

我建议使用基本的反引号来捕获输出,然后将其传递给String的lineseach_line以迭代结果,如数组:

`cmd`.each_line do |l|
  ... Do something ...
end

  

...它不接受给定的开关,如(-t ns或-l)

错误。打开IRB并输入:

`ls -al`

以字符串形式返回命令的输出。

答案 1 :(得分:0)

通过DNS上的AXFR操作提供区域传输。

如果您想使用命令行使用DIG:

dig -t axfr @ns.of_the_domaine.tld domaine.tld

并执行system或反引用以捕获输出。

更干净,但你似乎不想要这个问题,你可以用:

 Net::DNS::Resolver

使用axfr方法。

安装Net::DNS gem:

 gem install net-dns

警告:您的DNS配置必须允许axfr从您的解决点开始,否则您需要使用querysearch方法记录, 或者在dig命令行中指定ANY,A,MX,NS等记录类型。