วิธีที่ดีที่สุดในการค้นหาเครื่องพิมพ์ในเครือข่ายของฉันด้วย nmap คืออะไร เป็นไปได้หรือไม่ที่จะบันทึกเครื่องพิมพ์ ip เป็นไฟล์?
วิธีที่ดีที่สุดในการค้นหาเครื่องพิมพ์ในเครือข่ายของฉันด้วย nmap คืออะไร เป็นไปได้หรือไม่ที่จะบันทึกเครื่องพิมพ์ ip เป็นไฟล์?
คำตอบ:
หากคุณไม่คุ้นเคยกับการทำลายนิ้วมือ OS ด้วยเหตุผลบางประการคุณสามารถสแกนพอร์ตเป้าหมายได้มากขึ้น:
nmap -p 9100,515,631 192.168.1.1/24 -oX printers.xml
นั่นจะสแกนหาพอร์ตทั่วไปสำหรับเครื่องพิมพ์และระบบการพิมพ์
เอาต์พุตอยู่ใน XML
คำตอบนี้ตอบคำถามแรกของคุณโดยตรง สำหรับคำถามที่สองการเข้าใจคำสั่งจะช่วยให้คุณใส่ที่อยู่ 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//'
nmap - การสแกนเครือข่าย ( Nmap.org )
-p 515,631,9100
สแกนหาพอร์ต TCP 515, 631 และ 9100-oG -
ใช้รูปแบบผลลัพธ์ที่สามารถ grep ได้-sU -p 161
สแกนหาพอร์ต UDP 161gawkหรือawk - ประมวลผลข้อมูลข้อความเชิงคอลัมน์ โดยค่าเริ่มต้น whitespaces จะแยกบรรทัดออกเป็นคอลัมน์ ( Wikipedia )
gawk '/regexp/'
ใช้นิพจน์ควบคุมด้วย gawk เพื่อกรองบรรทัดที่ตรงกับนิพจน์ควบคุมนี้gawk '{<code>}'
ใช้ภาษาอินพุตแบบ awk C เพื่อจัดการเอาต์พุตgawk '{/open/print $2}'
ค้นหาบรรทัดที่ตรงกับ "เปิด" และพิมพ์คอลัมน์ที่สองxarg - สร้างและดำเนินการคำสั่งจากอินพุตที่กำหนด ตามค่าดีฟอลต์ whitespaces จะแยกบรรทัดออกเป็นอาร์กิวเมนต์ ( Wikipedia )
--delimiter='\n'
แยกอาร์กิวเมนต์ต่อบรรทัดใหม่ (\ n) แทนช่องว่าง--replace=$ipaddress
สำหรับแต่ละสายเก็บอาร์กิวเมนต์ลง$ IPADDRESSsnmpgetหรือsnmpwalk - ใช้การร้องขอ SNMP GET เพื่อสอบถามข้อมูลเกี่ยวกับเอนทิตีเครือข่าย ( net-snmp.orgเพิ่มเติมเกี่ยวกับ SNMP บนWikipedia )
-c public
ตั้งค่าสตริงชุมชนเป็นสาธารณะ-v 1
ตั้งค่ารุ่น SNMP เป็น 1-O v
อย่าพิมพ์ OIDsystem.sysDescr.0
ตัวแปรในการสืบค้น คำอธิบายของตัวแปรเฉพาะนี้: "คำอธิบายที่เป็นข้อความของกิจการค่านี้ควรรวมชื่อเต็มและการระบุรุ่นของประเภทฮาร์ดแวร์ของระบบระบบปฏิบัติการซอฟต์แวร์และซอฟต์แวร์ระบบเครือข่ายจำเป็นต้องมีอักขระ ASCII ที่พิมพ์ได้เท่านั้น "sed - แยกวิเคราะห์และแปลงข้อความ ( Wikipedia )
's/day/night/'
ค้นหาการเกิดขึ้นครั้งแรกของวันที่ของสตริงในบรรทัดและแทนที่ด้วย night's/STRING:\s//'
ค้นหาSTRING: \ sและแทนที่ด้วยไม่มีอะไร สิ่งนี้จะลบSTRING: \ sออกจากอินพุต \ sหมายถึงช่องว่างมีคำสั่งที่รองรับ UNIX บางส่วนที่เกี่ยวข้อง ส่วนตัวแล้วฉันทำให้สายโซ่นี้ทำงานบนเครื่อง Windows โดยใช้ Cygwin เพื่อรับคำสั่งเหล่านั้น
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//'
วิธีที่ง่ายที่สุดคือการสแกนด้วยnmap -O
: nmap จะตรวจสอบได้อย่างถูกต้องว่าเครื่องเป็นเครื่องพิมพ์หรือไม่ใช้ระบบปฏิบัติการ
nmap -O 192.168.1.1/24 -oG - | grep printer >> outfile
ควรทำให้เป็นหนึ่งรายการต่อบรรทัดและถ่ายโอนไปยังไฟล์ที่เรียกว่า "outfile" เห็นได้ชัดว่าเปลี่ยนช่วง IP เป็นช่วงที่คุณกำลังสแกน