Nmap으로 프린터 찾기


답변:


37

어떤 이유로 OS 핑거 프린팅을하려는 경우,보다 대상 포트 스캔을 수행 할 수 있습니다.

nmap -p 9100,515,631 192.168.1.1/24 -oX printers.xml

프린터와 인쇄 시스템에 공통적 인 포트를 검색합니다.

  • 9100 = 대부분의 프린터에 대한 RAW 포트 (직접 IP 포트라고도 함)
  • 515 = LPR / LPD 포트, 대부분의 프린터 및 구형 프린트 서버
  • 631 = 대부분의 최신 프린터 및 CUPS 기반 프린트 서버의 IPP 포트

출력은 XML입니다.


당신의 대답은 매우 도움이되었습니다!
Ryan Tenney

이것은 나를 위해 작동하지 않았습니다.
마틴 토마

9

이 답장은 첫 번째 질문에 직접 답변합니다. 두 번째 질문의 경우 명령을 이해하면 프린터 IP 주소를 파일에 넣을 수도 있습니다. 그래서 우리는 간다 :

nmap -p 515,631,9100 -oG - 10.81.129.0/24 | gawk '/open/{print $2}' | xargs --delimiter='\n' nmap -sU -p 161 -oG - | gawk '/open/{print $2}' | xargs --replace=$ipaddress snmpget -v 1 -O v -c public $ipaddress system.sysDescr.0 | sed 's/STRING:\s//'

공정 설명

  1. 기본 프린터 포트에서 수신 대기중인 네트워크 엔티티를 검색하는 네트워크를 스캔합니다.
  2. 이전 단계의 결과를 사용하여 이러한 장치에서 SNMP 지원을 확인합니다.
  3. SNMP를 지원하는 각 장치에 대해 장치 설명을 위해 네트워크 엔터티를 쿼리합니다.

명령 분석

nmap은 - 네트워크 스캔. ( Nmap.org )

  • -p 515,631,9100 TCP 포트 515, 631 및 9100을 스캔하십시오.
  • -oG - grep 가능 출력 형식을 사용하십시오.
  • -sU -p 161 UDP 포트 161을 스캔하십시오.

둔한 또는 AWK - 공정 열 중심의 텍스트 데이터. 기본적으로 공백은 선을 열로 구분합니다. ( 위키 백과 )

  • gawk '/regexp/' gagul과 함께 regulair expression을 사용하여이 regulair expression과 일치하는 행을 필터링하십시오.
  • gawk '{<code>}' awk C와 유사한 입력 언어를 사용하여 출력을 조작하십시오.
  • gawk '{/open/print $2}' "열기"와 일치하는 줄을 검색하고 두 번째 열을 인쇄하십시오.

xarg - 빌드 주어진 입력으로부터 명령을 실행합니다. 기본적으로 공백은 행을 인수로 구분합니다. ( 위키 백과 )

  • --delimiter='\n' 공백 대신 줄 바꿈 (\ n)마다 인수를 구분하십시오.
  • --replace=$ipaddress각 행마다 인수를 $ ipaddress에 저장하십시오 .

snmpget 또는 snmpwalk - SNMP GET 요청을 사용하여 네트워크 엔티티에 대한 정보를 조회하십시오. ( net-snmp.org , Wikipedia의 SNMP에 대한 추가 정보 )

  • -c public 커뮤니티 문자열을 공개로 설정하십시오.
  • -v 1 SNMP 버전을 1로 설정하십시오.
  • -O v OID를 인쇄하지 마십시오.
  • system.sysDescr.0쿼리 할 변수입니다. 이 특정 변수에 대한 설명 : "엔티티에 대한 텍스트 설명.이 값에는 시스템 하드웨어 유형, 소프트웨어 운영 체제 및 네트워킹 소프트웨어의 전체 이름 및 버전 식별 정보가 포함되어야합니다. 인쇄 가능한 ASCII 문자 만 포함해야합니다. "

나오지도 - 구문 분석하고 변환 텍스트입니다. ( 위키 백과 )

  • 's/day/night/' 줄에서 첫 번째 문자열 일을 찾아 밤으로 바꿉니다.
  • 's/STRING:\s//'STRING : \ s를 찾아 아무 것도 바꾸지 마십시오. 입력에서 STRING : \ s 을 (를) 제거합니다 . \ s 는 공백을 나타냅니다.

관련된 UNIX 지원 명령이 있습니다. 개인적으로 Cygwin을 사용하여 Windows 컴퓨터 에서이 체인을 사용하여 해당 명령을 얻었습니다.


2
Linux에서는 다음 변형을 사용하여 IP 및 SNMP 시스템 문자열을 표시했습니다. '--replace = $ ipaddress'가 내 환경에서 작동하지 않았습니다.nmap -p 515,631,9100 -oG - 192.168.100.0/24 | gawk '/open/{print $2}' | xargs --delimiter='\n' nmap -sU -p 161 -oG - | gawk '/open/{print $2}' | xargs -I{} sh -c 'echo {} ; snmpget -v 1 -O v -c public {} system.sysDescr.0' | sed 's/STRING:\s//'
NoelProf

@NoelProf의 버전은 CentOS 6에서 훌륭하게 작동합니다. 개선 될 수있는 한 가지는 UDP 스캐닝 부분입니다. 나는 전체 체인을 시도했지만 발견되지 않은 일부 프린터를 시도했다. 특히 VPN 뒤에있는 경우. UDP 포트 161에서 응답하면 정확히 한 번만 테스트하기 때문입니다. 그러나 UDP는 도중에 길을 잃을 수 있습니다. 여러 번 확인하는 것이 좋습니다.
masgo

5

스캔하는 가장 쉬운 방법은 다음과 nmap -O같이 스캔하는 것입니다 . nmap은 일반적으로 머신이 프린터인지 OS를 기반으로하지 않는지를 정확하게 판별합니다.

nmap -O 192.168.1.1/24 -oG - | grep printer >> outfile

한 줄에 한 항목 씩 만들고 "outfile"이라는 파일로 덤프해야합니다. IP 범위를 스캔하는 범위로 변경하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.