プライベート/ブロードキャストIPv4アドレスを「grep -v」する方法は?

プライベート/ブロードキャストIPv4アドレスを「grep -v」する方法は?
time nmap -n -iR 0 -sL | cut -d " " -f 5 | egrep -v "^10.*|^172.[16\-32].*|^192.168.*|^[224\-255].*" > RANDOM-IPS.txt

したがって、重要な部分は次のとおりです。

egrep -v "^10.*|^172.[16\-32].*|^192.168.*|^[224\-255].*"

尋ねる:これは良い正規表現ですか? /その後、すべての2^32 IPv4アドレスを作成し、プライベート/ブロードキャスト範囲を「grep -v」します。 /またはインターネットで利用可能なIPv4アドレスを生成するより良い方法はありますか?

答え1

単一のコマンドに正規表現を入力すると、通常は少し面倒です。これより良いのは、grep次の利点を活用できることです。-fオプション:

 -f FILE, --file=FILE
      Obtain  patterns  from  FILE,  one  per  line.   The  empty file
      contains zero patterns, and therefore matches nothing.   (-f  is
      specified by POSIX.)

したがって、各行に特定のIP系列/範囲に一致する正規表現を含むファイルを作成します。その後、-fこのオプションを一緒に使用します-v

答え2

この回答は、任意のIPv4アドレスを生成するのではなく、プライベートネットワークの範囲に属するIPをフィルタリングする方法です10.0.0.0/8172.16.0.0/12192.168.0.0/16

使用grepcidr:

$ nmap -n -iR 0 -sL | cut -d " " -f 5 | grepcidr -v 10.0.0.0/8,172.16.0.0/12,192.168.0.0/16

しかし、参考にしてください。

特定の個人、マルチキャスト、または割り当てられていないアドレス範囲内のIPなど、不要なIPを自動的にスキップします。

nmap7.40マニュアルで約-iR。)

答え3

私も同じ問題があります。 30分間準備した質問に対するPOSIXスタイルの回答は次のとおりです。

grep -Ev '10\.[0-9]+\.[0-9]+\.[0-9]+' | grep -Ev '172\.1[6-9]\.[0-9]+\.[0-9]+|172\.2[0-9]\.[0-9]+\.[0-9]+|172\.3[0-1]\.[0-9]+\.[0-9]+' | grep -Ev '192\.168\.[0-9]+\.[0-9]+'

これは、プライベートRFC1918アドレス空間の有効なIPアドレスのみを出力する必要があります。

関連情報