Tìm máy in với Nmap


Câu trả lời:


37

Nếu bạn không thích thực hiện Lấy dấu vân tay hệ điều hành vì một số lý do, bạn có thể thực hiện quét cổng được nhắm mục tiêu hơn:

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

Điều đó sẽ quét các cổng phổ biến cho máy in và hệ thống in.

  • 9100 = cổng RAW cho hầu hết các máy in, còn được gọi là cổng IP trực tiếp
  • 515 = cổng LPR / LPD, đối với hầu hết các máy in, cũng như các máy chủ in cũ
  • 631 = cổng IPP, đối với hầu hết các máy in hiện đại và máy chủ in dựa trên CUPS

Đầu ra là XML.


Câu trả lời của bạn rất hữu ích!
Ryan Tenney

Điều này đã không làm việc cho tôi.
Martin Thoma

9

Câu trả lời này trả lời câu hỏi đầu tiên của bạn trực tiếp. Đối với câu hỏi thứ hai, hiểu lệnh sẽ cho phép bạn cũng đặt địa chỉ IP của máy in vào một tệp. Vì vậy, ở đây chúng tôi đi:

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//'

Miêu tả quá trình

  1. Nó quét một mạng tìm kiếm các thực thể mạng đang lắng nghe trên các cổng máy in mặc định.
  2. Sử dụng kết quả của bước trước, nó sẽ kiểm tra hỗ trợ SNMP trên các thiết bị này.
  3. Đối với mỗi thiết bị có hỗ trợ SNMP, nó truy vấn thực thể mạng để mô tả thiết bị.

Sự cố lệnh

nmap - Quét mạng. ( Nmap.org )

  • -p 515,631,9100 Quét cổng TCP 515, 631 và 9100.
  • -oG - Sử dụng định dạng đầu ra có thể grep.
  • -sU -p 161 Quét cổng UDP 161.

gawk hoặc awk - Xử lý dữ liệu văn bản theo định hướng cột. Theo mặc định, khoảng trắng phân tách dòng thành các cột. ( Wikipedia )

  • gawk '/regexp/' Sử dụng biểu thức điều chỉnh với gawk để lọc ra các dòng khớp với biểu thức điều tiết này.
  • gawk '{<code>}' Sử dụng ngôn ngữ đầu vào giống như awk C để thao tác đầu ra.
  • gawk '{/open/print $2}' Tìm kiếm các dòng phù hợp với mở open và in cột thứ hai.

xarg - Xây dựng và thực hiện các lệnh từ đầu vào đã cho. Theo mặc định, khoảng trắng phân tách dòng thành đối số. ( Wikipedia )

  • --delimiter='\n' Các đối số riêng biệt trên mỗi dòng mới (\ n) thay vì khoảng trắng.
  • --replace=$ipaddressĐối với mỗi dòng, lưu trữ đối số vào $ ipaddress .

snmpget hoặc snmpwalk - Sử dụng yêu cầu SNMP GET để truy vấn thông tin về thực thể mạng. ( net-snmp.org , thông tin thêm về SNMP trên Wikipedia )

  • -c public Đặt chuỗi cộng đồng thành công khai.
  • -v 1 Đặt phiên bản SNMP thành 1.
  • -O v Đừng in OID.
  • system.sysDescr.0Biến để truy vấn. Mô tả về biến đặc biệt này: "Mô tả văn bản của thực thể. Giá trị này phải bao gồm tên đầy đủ và phiên bản nhận dạng của loại phần cứng, hệ điều hành phần mềm và phần mềm mạng. Điều này bắt buộc chỉ có chứa các ký tự ASCII có thể in được. "

sed - Phân tích và biến đổi văn bản. ( Wikipedia )

  • 's/day/night/' Tìm sự xuất hiện đầu tiên của ngày chuỗi trong một dòng và thay thế nó bằng đêm.
  • 's/STRING:\s//'Tìm CHUINGI: \ s và thay thế nó bằng không có gì. Điều này sẽ loại bỏ CHUINGI: \ s khỏi đầu vào. \ s là viết tắt của một khoảng trắng.

Có một số lệnh được hỗ trợ UNIX liên quan. Cá nhân tôi đã làm cho chuỗi này hoạt động trên máy Windows sử dụng Cygwin để có được các lệnh đó.


2
Trong Linux, tôi đã sử dụng biến thể sau để hiển thị IP và chuỗi hệ thống SNMP. '--Replace = $ ipaddress' không hoạt động trong môi trường của tôi: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

Phiên bản @NoelProf hoạt động rất tốt trong CentOS 6. Một điều có thể được cải thiện là phần quét UDP. Tôi đã thử toàn bộ chuỗi, nhưng một số máy in không khám phá được; đặc biệt là khi họ đứng sau VPN. Tôi đoán là vì chúng tôi chỉ kiểm tra chính xác một lần nếu họ trả lời trên cổng UDP 161. Nhưng UDP có thể bị lạc trên đường. Nó sẽ tốt hơn để kiểm tra nó nhiều lần.
masgo

5

Cách dễ nhất là quét bằng nmap -O: nmap thường sẽ xác định chính xác xem máy có phải là máy in hay không dựa trên HĐH.

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

Nên làm cho nó một mục nhập trên mỗi dòng và kết xuất nó vào một tệp có tên là "outfile". Rõ ràng thay đổi phạm vi ip thành bất kỳ phạm vi nào bạn đang quét

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.