간단한 질문이라 미리 사과드립니다.
그래서 IP로 모든 메일 서버를 식별하기 위해 클래스 C를 검색해 보았습니다. 대부분의 IP는 메일 서버가 아닙니다. 나는 그것들을 필터링하려고 노력하고 있습니다.
다음 방법을 시도했지만 원하는 것을 반환하지 않습니다.
nmap -p 25 192.168.15.1-254 | grep report && grep open
그리고
nmap -p 192.168.15.1-254 (grep report | grep open)
사용해야 하는 또 다른 유틸리티가 있습니까? 아니면 내 문법에 문제가 있는 걸까요?
답변1
명확하지 않습니다. 보고서만 포함해야 합니까, 아니면 열린 문자열만 포함해야 합니까? 그렇다면 다음을 사용하세요
grep
:
nmap | grep -E "report|open"
sed
:
nmap | sed '/report\|open/!d'
신고와 동시에 개설된 경우
grep
:
nmap | grep report | grep open
sed
:
nmap | sed '/report.*open\|open.*report/!d'
답변2
--open
사후 처리를 위해 grep을 사용하는 대신 Nmap에 옵션을 전달해 보세요. 이렇게 하면 닫혀 있거나 필터링된 포트가 숨겨집니다. -oG
또는 -oA
옵션을 사용하여 "grepable" 결과를 출력 할 수도 있습니다 . 다음은 귀하가 찾고 있는 것의 예입니다.
nmap -p 25 --open -oA smtp-servers-%y%m%d 192.168.15.0/24
결과는 smtp-servers-20120607.nmap
, smtp-servers-20120607.gnmap
, 및 에 표시됩니다 smtp-servers-20120607.xml
. 다음과 같이 열려 있는 SMTP 서버의 IP 주소를 얻을 수 있습니다.
awk '/\<25/open/tcp/ {print $2}' smtp-servers-*.gnmap
정말로 이 모든 것을 하나의 파이프라인에서 가져와야 하는 경우 다음을 수행할 수 있습니다.
nmap -p 25 --open -oG - 192.168.15.0/24 | awk '/\<25/open/tcp/ {print $2}'
답변3
다음 두 가지 호출을 수행하려면 파이프가 필요합니다 grep
.
nmap ... | grep report | grep open
또는 markers 를 사용 중이므로 awk
정보만 제공하면 됩니다.
nmap ... | awk '/report/ && /open/'
그리고 sed
:
nmap ... | sed '/report/!d;/open/!d'