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/12
192.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를 자동으로 건너뜁니다.
( nmap
7.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 주소만 출력해야 합니다.