ALPHACON BBSGość · pl
← Protipy

Protipy / Bash / Unix

for i in {1..254}; do host x.x.x.$i|grep -v NXDOMAIN; done - szybki revdns recon danej sieci /24

for i in {1..254}; do host x.x.x.$i|grep -v NXDOMAIN; done

Wstęp

Powyższy oneliner sprawdzi odwrotną translację adresów DNS z zakresu x.x.x.1 - x.x.x.254, odsiewając adresy, dla których revDNS nie istnieje. Rozbijając go na mniejsze części:

Gdybyśmy chcieli sprawdzić sieć z maską /16, a więc zakres x.x.0.1 - x.x.255.254, potrzebowalibyśmy dwóch pętli:

for i in $(seq 0 255); do
    for j in `seq 1 254`; do
    host x.x.$i.$j | grep -v NXDOMAIN
    done
done

W tym przykładzie, zamiast wygenerować szereg liczb z wykorzystaniem {<start>..<end>} użyliśmy dwóch równoważnych konstrukcji $(<polecenie>) oraz `<polecenie>`, będącymi tzw. command substitution, które powodują wstawienie wyniku polecenia w miejscu gdzie się znajdują. Samo narzędzie seq służy do generowania sekwencji liczb, np.:

  • seq 10 1 - liczby od 10 do 1
  • seq -w 0 0.5 3 - liczby od 0 do 3 ze skokiem co 0.5, dodatkowo uzupełniane zerami, żeby wizualnie miały taką samą szerokość

Przykład

<asciinema-player src="/media/protips/0005/dnsrev.cast" autoplay="true" cols="100" rows="18" theme="asciinema" loop="true"></asciinema-player>

Breakdown

for i in {1..254}; do

pętla, w której do zmiennej $i zostaną przypisane liczby od 1 do 254

host x.x.x.x.$i

sprawdź odwrotny DNS dla kolejnego adresu IP

| grep -v NXDOMAIN

odrzućmy wszystkie linijki zawierające frazę NXDOMAIN co oznacza, że dany IP nie posiada revdnsa

; done

koniec pętli.

Linki