ฉันจะค้นหาที่อยู่ MAC ของเครื่องในเครือข่ายได้อย่างไร
ฉันต้องการค้นหาเครื่องที่มีเฉพาะเมื่อติดตั้ง BIOS เท่านั้น (ไม่มีระบบปฏิบัติการ)
และฉันต้องการค้นหาที่อยู่ MAC ของเครื่องที่อัพ
ฉันจะค้นหาที่อยู่ MAC ของเครื่องในเครือข่ายได้อย่างไร
ฉันต้องการค้นหาเครื่องที่มีเฉพาะเมื่อติดตั้ง BIOS เท่านั้น (ไม่มีระบบปฏิบัติการ)
และฉันต้องการค้นหาที่อยู่ MAC ของเครื่องที่อัพ
คำตอบ:
คุณจะต้องเข้าถึงข้อมูลที่มีอยู่ในสวิตช์ที่จัดการของคุณ หากคุณมีเครือข่ายที่ไม่มีการจัดการฉันไม่เห็นวิธีการทำเช่นนั้น
นี่เป็นข้อสมมติว่าคอมพิวเตอร์เป้าหมายมีความสามารถในWake-on-LAN (WoL) ในกรณีนี้มีการเชื่อมโยงไปยังเซิร์ฟเวอร์ (มองหา LED ลิงค์กะพริบ) และการ์ดเครือข่ายกำลังฟัง WoL ออกอากาศ AFAIK การ์ดไม่ตอบอะไรในสถานะนี้ หากไม่มี WoL การ์ดส่วนใหญ่อาจปิดอยู่ (ไม่มีลิงก์ LED) และจะไม่ทำงานเลย
หากไม่ได้เปิดเครื่องขึ้นมาจะเป็นไปไม่ได้
หากมีการเพิ่มประสิทธิภาพฉันจะเดาว่ามันเป็นไปไม่ได้เช่นกันเพราะคุณต้องการเครือข่ายที่น้อยที่สุดเพื่อตอบคำถามอย่างน้อยเช่น ARP query ฯลฯ ซึ่งไม่สามารถใช้งานได้หากไม่ได้ติดตั้งระบบปฏิบัติการ
สิ่งที่อาจใช้งานได้ (ฉันไม่ทราบและไม่สามารถทดสอบได้ในขณะนี้) คือ NIC และสวิตช์สื่อสารสื่อสารเมื่อเสียบ NIC หรือเปิดเครื่องแล้วสวิตช์จะเรียนรู้ที่อยู่ MAC ด้วยวิธีนี้ หากเป็นกรณีนี้คุณจะต้องใช้สวิตช์ที่สามารถจัดการได้และสอบถามสำหรับที่อยู่ Mac ที่เชื่อมต่อ
คุณสามารถใช้Nmapเพื่อทำการสแกน ARP อย่างรวดเร็วโดยใช้ไวยากรณ์ต่อไปนี้
nmap -sn -PR -oX nmap.xml 192.168.1.0/24
สิ่งนี้ใช้ ARP ping (เฉพาะการร้องขอ ARP, ไม่มี ICMP, UDP หรือ TCP, ไม่มีการสแกนพอร์ต) เพื่อสแกนช่วงที่อยู่ IP ที่ระบุและบันทึกที่อยู่ IP / ที่อยู่ MAC / การตอบสนองชื่อโฮสต์ในไฟล์ XML (nmap.xml)
ฉันเขียนสคริปต์PowerShellที่ดึงไฟล์ XML ออกมาและแยกไฟล์ CSVออก นอกจากนี้ยังกรองโฮสต์ที่ลง ฉันพบว่ามันใช้งานง่ายกว่าใน Excel มากกว่าไฟล์ XML นี่คือสคริปต์หากใครสนใจ
# Define nmap input file
$NmapXMLFile = ".\nmap.xml"
# Initialize object array
$HostItems = @()
# Initialize index
$x = 0
# Load XML
[xml]$NmapXML = Get-Content $NmapXMLFile
# Loop through XML
ForEach ($HostNode in $NmapXML.nmaprun.host) {
# Check host status
If ($HostNode.status.state -eq "up") {
# Create host object
$HostObj = "" | Select-Object ID, Hostname, 'IP Address', 'MAC Address', Vendor
# Store ID and increment index
$HostObj.ID = $x += 1
# Store hostname
$HostObj.Hostname = $HostNode.hostnames.hostname.name
# Loop through addresses
foreach ($HostAddress in $HostNode.address) {
# Check IP address
If ($HostAddress.addrtype -eq "ipv4") {
# Store IP address
$HostObj.'IP Address' = $HostAddress.addr
}
# Check MAC address
If ($HostAddress.addrtype -eq "mac") {
# Store MAC address
$HostObj.'MAC Address' = $HostAddress.addr
# Store vendor
$HostObj.Vendor = $HostAddress.vendor
}
}
# Append host object to array
$HostItems += $HostObj
}
}
# Print host items
$HostItems
# Export host items to CSV
$HostItems | Export-CSV -NoType .\nmap.csv
Scantype n not supported
ฉันพยายามคำสั่งข้างต้นและมีข้อผิดพลาด เห็นได้ชัดว่า-sn
ไม่สนับสนุนการตั้งค่าสถานะบน Nmap 4.x
show mac-address-table
)จากเครื่อง Unix ฟังคอมพิวเตอร์ no-OS บน LAN เดียวกันและถ้าเป็นไปได้ผ่านทาง Hub (ไม่ใช่ Switch) คุณสามารถลอง
arp
cat /proc/net/arp
นอกจากนี้คุณอาจต้องการลองwireshark
(จากเครื่อง OS-ed) อีกครั้งควรใช้ Hub เพื่อรับการสื่อสารจากเครื่อง BIOS รวมถึงการออกอากาศ
ปัญหาพื้นฐานคือนี่คือข้อมูลเลเยอร์ 2 ดังนั้นสวิทช์เพียงเห็นมัน สวิตช์บางตัวจะมีส่วนต่อประสานที่ช่วยให้คุณสามารถดูข้อมูลนี้ได้ แต่ถ้าไม่มีวิธีเดียวที่จะทำให้มันถูกดักไว้ในเลเยอร์ทางกายภาพได้เช่นการติดตั้งฮับระหว่างสวิตช์
หากคุณใช้สวิตช์ที่มีการจัดการข้อมูลนี้มีอยู่ในสวิตช์ เราเตอร์ / สวิตช์แบบรวมของผู้ใช้ปลายทาง (เช่นชนิดที่มักแพ็คเกจ ADSL โมเด็มด้วย) บางครั้งจะมีรายการไคลเอนต์ DHCP ซึ่งรวมถึงที่อยู่ MAC
หากคุณใช้สวิตช์ที่ไม่ได้รับการจัดการและคุณต้องการทราบข้อมูลนี้จริงๆฉันขอแนะนำให้คุณซื้อฮับและเปลี่ยนสวิตช์นั้นเป็นการชั่วคราว จากนั้นคุณสามารถเชื่อมต่อคอมพิวเตอร์ที่ใช้ wireshark กับฮับและจับแพ็คเก็ต ARP เพื่อบันทึกที่อยู่ MAC อีกวิธีหนึ่งคุณสามารถใช้ Echolot เพื่อทำสิ่งนี้ให้คุณ - มันเลือกแทร็กเก็ตแพ็คเก็ต ARP และสร้างฐานข้อมูลที่อยู่ MAC
นี่เป็นวิธีแก้ปัญหาที่เหมาะกับฉัน:
เคล็ดลับเล็ก ๆ น้อย ๆ ที่คุณทำได้ภายใน 2 วินาทีคือการทำงานกับระบบปฏิบัติการใด ๆ ที่เขียนตารางด้วย mac และที่อยู่ IP ของอุปกรณ์ใด ๆ ที่มันทำงานด้วย สิ่งนี้เรียกว่า ARP TABLE ดังนั้นคำถามคือจะบังคับให้มีการโต้ตอบกับอุปกรณ์ทั้งหมดได้อย่างไร คุณสามารถปิงที่อยู่ IP ที่ออกอากาศได้ สิ่งนี้ไม่สมบูรณ์แบบเนื่องจากอุปกรณ์หรือไฟร์วอลล์บางตัวสามารถบล็อกการร้องขอ ping ICMP ได้ แต่สามารถทำงานได้ในหลาย ๆ สถานการณ์
คำสั่งคือ (ในที่อยู่การออกอากาศ ipv4 192.168.0.255):
ping 192.168.0.255
ใน Linux ใช้:
ping -b 192.168.0.255
รอสองสามวินาทีเพื่อให้อุปกรณ์ตอบสนองจากนั้นทำ:
arp -a
สำหรับ IPV6 ping ดูที่ความคิดเห็น Giedrius Rekasius
ไม่สมบูรณ์แบบ แต่ไม่มีเครื่องมือไม่มีการวิจัยไม่เสียเวลาทำงานในระบบปฏิบัติการหลักทุกระบบและรวดเร็ว
ping6 -c2 -n ff02::1%wlan0
คำสั่งตัวอย่างเช่นอาจจะมีลักษณะเช่นนี้ เพียงแค่ต้องอัปเดตชื่อของอินเทอร์เฟซเครือข่ายที่จะใช้ที่อยู่ IP ที่จะใช้เพื่อจุดประสงค์นั้นอยู่เสมอff02::1
ไม่ว่าคุณจะอยู่บนเครือข่ายใด
สแกนเครือข่ายด้วยNmapจากนั้นตรวจสอบตาราง ARP ( arp -a
ในการแจกแจง Linux)
อย่างที่คนอื่นพูดถ้าคุณมีสวิตช์ที่ไม่มีการจัดการหรือ BootP / PXE ไม่มีวิธีง่ายๆในการรับเครื่อง MAC ที่ไม่มีระบบปฏิบัติการ
หากเครื่องที่คุณใช้งานอยู่ใช้วินโดวส์การเขียนสคริปต์ทำได้ง่าย (โดยปกติจะผ่าน WMI)
มีตัวอย่างมากมายที่นี่: http://gallery.technet.microsoft.com/ScriptCenter/en-us/site/search?false0 เหมือนกัน. ประเภท=SearchText&false0 เหมือนกัน. ค่านิยม=MAC+address&x= 0& y= 0
ฉันจะขอแนะนำให้เปลี่ยนตารางที่อยู่ MAC แต่มีคนที่ครอบคลุมที่อยู่ข้างต้นแล้ว
หากคอมพิวเตอร์เครื่องใดเครื่องหนึ่งที่ใช้ระบบปฏิบัติการและมีที่อยู่ IP คุณสามารถเชื่อมต่อกับ LAN เดียวกันคุณสามารถใช้ NMAP (หรือรุ่น GUI เช่น Zenmap) จากhttp://nmap.org/ ... หากคุณเรียกใช้ ใน LAN เดียวกันคุณควรได้รับข้อมูลที่อยู่ MAC สำหรับเครื่องที่ตอบสนอง
มันจะมีประโยชน์ในการทำความเข้าใจเพิ่มเติมเกี่ยวกับสาเหตุที่คุณต้องได้รับที่อยู่ MAC ในกรณีที่มีวิธีที่ดีกว่าในการบรรลุผลลัพธ์เดียวกัน
คุณสามารถรวบรวมข้อมูล ARP ด้วยตัวอย่างเช่น arpalert ที่ทำงานอย่างต่อเนื่อง ด้วยสิ่งนี้คุณจะได้เห็นชุดของที่อยู่ ARP หลังจากเริ่มต้น
ระบบปิดเครื่องจะไม่ส่งการตอบกลับ ARP ถึงคุณ
เพื่อเพิ่มความเร็วของกระบวนการคุณสามารถใช้ nmap ping scan (nmap -sP) บนเครือข่ายของคุณจากเซิร์ฟเวอร์ที่คุณใช้งาน arpalert เพื่อที่จะทริกเกอร์โฮสต์ (สดและทำงาน) ที่เป็นไปได้ทั้งหมดเพื่อตอบแบบสอบถาม arp ของคุณ ด้วยการเรียกใช้ nmap ping scan อย่างสม่ำเสมอในภายหลังคุณจะมีโอกาสที่ดีกว่าในการจับโฮสต์ที่อาศัยอยู่ในไม่ช้า
ตัวอย่างจาก arpalert:
หาก MAC ไม่อยู่ในรายการ arpalert จะเรียกใช้สคริปต์ผู้ใช้ที่กำหนดไว้ล่วงหน้าพร้อมด้วยที่อยู่ MAC และที่อยู่ IP เป็นพารามิเตอร์
ตัวอย่างจาก nmap:
Nmap ("Network Mapper") เป็นยูทิลิตี้ฟรีและโอเพ่นซอร์ส (ลิขสิทธิ์) สำหรับการสำรวจเครือข่ายหรือการตรวจสอบความปลอดภัย
ดูรอบ ๆ ที่นี่:
ฉันใช้: nmap -sP 192.168.1.1/24
(แทนที่ 192.168.1.1/24 ด้วยช่วง IP ของคุณ)
มันจะแสดงเฉพาะเครื่องจักรที่อัพและจะให้สิ่งที่คุณต้องการ:
[root@x ~]# nmap -sP 192.168.1.1/24
Starting Nmap 6.40 ( http://nmap.org ) at 2014-11-22 14:20 EST
Nmap scan report for 192.168.1.1
Host is up (0.0019s latency).
MAC Address: ZZ:ZZ:54:2E:E9:B4 (Unknown)
Nmap scan report for 192.168.1.33
Host is up (0.035s latency).
MAC Address: ZZ:ZZ:FA:2D:D7:D8 (Intel Corporate)
Nmap scan report for 192.168.1.254
Host is up (0.0020s latency).
MAC Address: ZZ:ZZ:31:02:98:19 (Asustek Computer)
Nmap scan report for 192.168.1.34
Host is up.
Nmap done: 256 IP addresses (4 hosts up) scanned in 1.88 seconds
หากคุณไม่ได้ติดตั้งระบบปฏิบัติการคุณสามารถใช้ linux live cd, nmap อาจมีอยู่ในส่วนใหญ่