개인/브로드캐스트 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/8.172.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 주소만 출력해야 합니다.

관련 정보