0

検出されたすべてのネームサーバーを利用して、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)

入力をお待ちしております。

4

2 に答える 2

1

このsystemメソッドは、呼び出されたコマンドのステータスを true/false として返します。キャプチャされた STDOUT は、必要なように見えます。

基本的なバッククォートを使用して出力をキャプチャし、それを文字列に渡すlineseach_line、配列のように結果を反復処理することをお勧めします。

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

...(-t ns、または -l) のような指定されたスイッチは受け入れません

違う。IRB を開き、次のように入力します。

`ls -al`

コマンドの出力を文字列として返します。

于 2013-10-17T02:02:43.273 に答える
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してレコードごとに実行するか、コマンド ラインで ANY、A、MX、NS などのレコード タイプを指定して dig を実行する必要があります。querysearch

于 2013-10-17T13:20:51.883 に答える