クライアントで使用するサブドメイン ブルート フォーサーを構築しようとしています - 私はセキュリティ/侵入テストに取り組んでいます。現在、Resolv を使用して 10 秒で約 70 のホストを検索することができます。ギブ オア テイクであり、さらに多くのことを行う方法があるかどうかを知りたいと思っていました。これよりもはるかに高速な速度を実現できる、主に Python ベースの代替スクリプトを見てきました。Resolv が並行して行うリクエストの数を増やす方法や、リストを分割する必要があるかどうかはわかりません。サンプル コードには Google の DNS サーバーを使用していますが、ライブでの使用には内部サーバーを使用することに注意してください。
この問題をデバッグするための大まかなコードは次のとおりです。
require 'resolv'
def subdomains
puts "Subdomain enumeration beginning at #{Time.now.strftime("%H:%M:%S")}"
subs = []
domains = File.open("domains.txt", "r") #list of domain names line by line.
Resolv.new(:nameserver => ['8.8.8.8', '8.8.4.4'])
File.open("tiny.txt", "r").each_line do |subdomain|
subdomain.chomp!
domains.each do |d|
puts "Checking #{subdomain}.#{d}"
ip = Resolv.new.getaddress "#{subdomain}.#{d}" rescue ""
if ip != nil
subs << subdomain+"."+d << ip
end
end
end
test = subs.each_slice(4).to_a
test.each do |z|
if !z[1].nil? and !z[3].nil?
puts z[0] + "\t" + z[1] + "\t\t" + z[2] + "\t" + z[3]
end
end
puts "Finished at #{Time.now.strftime("%H:%M:%S")}"
end
subdomains
domain.txt は、google.com、bbc.co.uk、apple.com などのクライアント ドメイン名のリストです。「tiny.txt」は、ftp、www、dev、files、アップロード。次に、Resolv は files.bbc.co.uk などを検索し、存在するかどうかを知らせます。