จะค้นหาที่อยู่ MAC ของเครื่องในเครือข่ายได้อย่างไร


12

ฉันจะค้นหาที่อยู่ MAC ของเครื่องในเครือข่ายได้อย่างไร

ฉันต้องการค้นหาเครื่องที่มีเฉพาะเมื่อติดตั้ง BIOS เท่านั้น (ไม่มีระบบปฏิบัติการ)

และฉันต้องการค้นหาที่อยู่ MAC ของเครื่องที่อัพ



คำตอบ:


8

คุณจะต้องเข้าถึงข้อมูลที่มีอยู่ในสวิตช์ที่จัดการของคุณ หากคุณมีเครือข่ายที่ไม่มีการจัดการฉันไม่เห็นวิธีการทำเช่นนั้น

นี่เป็นข้อสมมติว่าคอมพิวเตอร์เป้าหมายมีความสามารถในWake-on-LAN (WoL) ในกรณีนี้มีการเชื่อมโยงไปยังเซิร์ฟเวอร์ (มองหา LED ลิงค์กะพริบ) และการ์ดเครือข่ายกำลังฟัง WoL ออกอากาศ AFAIK การ์ดไม่ตอบอะไรในสถานะนี้ หากไม่มี WoL การ์ดส่วนใหญ่อาจปิดอยู่ (ไม่มีลิงก์ LED) และจะไม่ทำงานเลย


7

หากไม่ได้เปิดเครื่องขึ้นมาจะเป็นไปไม่ได้

หากมีการเพิ่มประสิทธิภาพฉันจะเดาว่ามันเป็นไปไม่ได้เช่นกันเพราะคุณต้องการเครือข่ายที่น้อยที่สุดเพื่อตอบคำถามอย่างน้อยเช่น ARP query ฯลฯ ซึ่งไม่สามารถใช้งานได้หากไม่ได้ติดตั้งระบบปฏิบัติการ

สิ่งที่อาจใช้งานได้ (ฉันไม่ทราบและไม่สามารถทดสอบได้ในขณะนี้) คือ NIC และสวิตช์สื่อสารสื่อสารเมื่อเสียบ NIC หรือเปิดเครื่องแล้วสวิตช์จะเรียนรู้ที่อยู่ MAC ด้วยวิธีนี้ หากเป็นกรณีนี้คุณจะต้องใช้สวิตช์ที่สามารถจัดการได้และสอบถามสำหรับที่อยู่ Mac ที่เชื่อมต่อ


2
คุณอาจได้รับมันโดยไม่มีเครือข่ายสแต็คถ้ามันกำลังขอ bootp หรือ pxe boot ขึ้นอยู่กับเครื่องว่าจะใช้งานได้ไหมฉันคิดว่า
Bart Silverstrim

6

คุณสามารถใช้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
Stefan Lasiewski

จาก nmap 5.30BETA1 ChangeLog:
John Homer

2
เปลี่ยนเป็น -Pn และ -sn และเป็นไวยากรณ์ที่ต้องการสำหรับการข้ามการสแกน ping และการข้ามพอร์ตการสแกนตามลำดับ ก่อนหน้านี้แนะนำตัวเลือก -PN และ -sP สิ่งนี้สร้างไวยากรณ์ที่ปกติมากขึ้นสำหรับตัวเลือกบางอย่างที่ปิดการใช้งานเฟสของการสแกน: - ไม่มี DNS ย้อนกลับ - ไม่มีการค้นพบโฮสต์ - ไม่มีการสแกนพอร์ตเรายังรู้สึกว่าตัวเลือกเก่า -sP ("ping scan") เนื่องจากเวอร์ชัน Nmap ปัจจุบันสามารถไปได้ไกลกว่า (รวมถึง -sC และ --traceroute) แม้จะปิดการสแกนพอร์ตก็ตาม เราจะยังคงสนับสนุนชื่อตัวเลือกก่อนหน้านี้สำหรับอนาคตอันใกล้
John Homer

จากนั้นคุณควรจะสามารถใช้ไวยากรณ์ '-sP' แทนพารามิเตอร์ '-sn' ที่ใหม่กว่า น่าเสียดายที่ฉันไม่มีเวอร์ชัน nmap4 สำหรับทดสอบ
John Homer

3
  1. ดูข้อมูลเกี่ยวกับสวิตช์ / เราเตอร์ของคุณหากสวิตช์นั้นทันสมัยพอ
    (ในคำสั่งสวิตช์ของ Cisco คือshow mac-address-table)
  2. หากเครื่องมี PXE ที่เปิดใช้งานการ์ด BIOS / ระบบเครือข่ายให้อ่านข้อมูลจากบันทึก DHCP เนื่องจากจะพยายามรับ DHCP lease หากคุณไม่มี DHCP เพียงแค่ถ่ายโอนทราฟฟิกที่ออกอากาศทั้งหมดด้วย Wireshark และกรองทราฟฟิก DHCP เครื่องขับเคลื่อนใหม่ที่ไม่มีระบบปฏิบัติการจะแสดงในการจราจร

3

จากเครื่อง Unix ฟังคอมพิวเตอร์ no-OS บน LAN เดียวกันและถ้าเป็นไปได้ผ่านทาง Hub (ไม่ใช่ Switch) คุณสามารถลอง

arp
cat /proc/net/arp

นอกจากนี้คุณอาจต้องการลองwireshark(จากเครื่อง OS-ed) อีกครั้งควรใช้ Hub เพื่อรับการสื่อสารจากเครื่อง BIOS รวมถึงการออกอากาศ


1

ปัญหาพื้นฐานคือนี่คือข้อมูลเลเยอร์ 2 ดังนั้นสวิทช์เพียงเห็นมัน สวิตช์บางตัวจะมีส่วนต่อประสานที่ช่วยให้คุณสามารถดูข้อมูลนี้ได้ แต่ถ้าไม่มีวิธีเดียวที่จะทำให้มันถูกดักไว้ในเลเยอร์ทางกายภาพได้เช่นการติดตั้งฮับระหว่างสวิตช์

หากคุณใช้สวิตช์ที่มีการจัดการข้อมูลนี้มีอยู่ในสวิตช์ เราเตอร์ / สวิตช์แบบรวมของผู้ใช้ปลายทาง (เช่นชนิดที่มักแพ็คเกจ ADSL โมเด็มด้วย) บางครั้งจะมีรายการไคลเอนต์ DHCP ซึ่งรวมถึงที่อยู่ MAC

หากคุณใช้สวิตช์ที่ไม่ได้รับการจัดการและคุณต้องการทราบข้อมูลนี้จริงๆฉันขอแนะนำให้คุณซื้อฮับและเปลี่ยนสวิตช์นั้นเป็นการชั่วคราว จากนั้นคุณสามารถเชื่อมต่อคอมพิวเตอร์ที่ใช้ wireshark กับฮับและจับแพ็คเก็ต ARP เพื่อบันทึกที่อยู่ MAC อีกวิธีหนึ่งคุณสามารถใช้ Echolot เพื่อทำสิ่งนี้ให้คุณ - มันเลือกแทร็กเก็ตแพ็คเก็ต ARP และสร้างฐานข้อมูลที่อยู่ MAC


แก้ไข - เพียงแค่อ่านส่วนที่เกี่ยวกับพวกเขาเป็น BIOS เท่านั้น สิ่งนี้นำเสนอความท้าทายเพิ่มเติมนอกเหนือจากปัญหาการดักข้อมูลเลเยอร์ 2 ลูกค้าอาจไม่ส่งข้อมูลใด ๆ ผ่านเครือข่าย หากไคลเอนต์มีไบออสที่ทำ DHCP หรือส่งแพ็คเก็ต ARP ออกไปมันควรจะเห็นได้จากสวิตช์ ฉันไม่แน่ใจว่า BIOS รุ่นใดที่สนับสนุนสิ่งนี้ฉันรู้ว่าบางคนทำได้
imoatama

1

นี่เป็นวิธีแก้ปัญหาที่เหมาะกับฉัน:

  1. เปิดใช้งานการบู๊ตเครือข่ายใน BIOS (เช่นตั้งค่าอะแดปเตอร์เครือข่ายของคุณเป็น "Enabled with PXE")
  2. บูตเครื่อง
  3. เครื่องจะพยายามบู๊ตจากเครือข่ายโดยแสดงที่อยู่ MAC ในกระบวนการ

1

เคล็ดลับเล็ก ๆ น้อย ๆ ที่คุณทำได้ภายใน 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

ไม่สมบูรณ์แบบ แต่ไม่มีเครื่องมือไม่มีการวิจัยไม่เสียเวลาทำงานในระบบปฏิบัติการหลักทุกระบบและรวดเร็ว


ฉันพบว่าง่ายและเชื่อถือได้มากกว่าที่จะทำการส่ง Ping ผ่าน IPv6 มากกว่าผ่าน IPv4 ping6 -c2 -n ff02::1%wlan0คำสั่งตัวอย่างเช่นอาจจะมีลักษณะเช่นนี้ เพียงแค่ต้องอัปเดตชื่อของอินเทอร์เฟซเครือข่ายที่จะใช้ที่อยู่ IP ที่จะใช้เพื่อจุดประสงค์นั้นอยู่เสมอff02::1ไม่ว่าคุณจะอยู่บนเครือข่ายใด
kasperd

1

สแกนเครือข่ายด้วยNmapจากนั้นตรวจสอบตาราง ARP ( arp -aในการแจกแจง Linux)


0

อย่างที่คนอื่นพูดถ้าคุณมีสวิตช์ที่ไม่มีการจัดการหรือ BootP / PXE ไม่มีวิธีง่ายๆในการรับเครื่อง MAC ที่ไม่มีระบบปฏิบัติการ

หากเครื่องที่คุณใช้งานอยู่ใช้วินโดวส์การเขียนสคริปต์ทำได้ง่าย (โดยปกติจะผ่าน WMI)

มีตัวอย่างมากมายที่นี่: http://gallery.technet.microsoft.com/ScriptCenter/en-us/site/search?false0 เหมือนกัน. ประเภท=SearchText&false0 เหมือนกัน. ค่านิยม=MAC+address&x= 0& y= 0


0

ฉันจะขอแนะนำให้เปลี่ยนตารางที่อยู่ MAC แต่มีคนที่ครอบคลุมที่อยู่ข้างต้นแล้ว

หากคอมพิวเตอร์เครื่องใดเครื่องหนึ่งที่ใช้ระบบปฏิบัติการและมีที่อยู่ IP คุณสามารถเชื่อมต่อกับ LAN เดียวกันคุณสามารถใช้ NMAP (หรือรุ่น GUI เช่น Zenmap) จากhttp://nmap.org/ ... หากคุณเรียกใช้ ใน LAN เดียวกันคุณควรได้รับข้อมูลที่อยู่ MAC สำหรับเครื่องที่ตอบสนอง

มันจะมีประโยชน์ในการทำความเข้าใจเพิ่มเติมเกี่ยวกับสาเหตุที่คุณต้องได้รับที่อยู่ MAC ในกรณีที่มีวิธีที่ดีกว่าในการบรรลุผลลัพธ์เดียวกัน


0

คุณสามารถรวบรวมข้อมูล ARP ด้วยตัวอย่างเช่น arpalert ที่ทำงานอย่างต่อเนื่อง ด้วยสิ่งนี้คุณจะได้เห็นชุดของที่อยู่ ARP หลังจากเริ่มต้น

ระบบปิดเครื่องจะไม่ส่งการตอบกลับ ARP ถึงคุณ

เพื่อเพิ่มความเร็วของกระบวนการคุณสามารถใช้ nmap ping scan (nmap -sP) บนเครือข่ายของคุณจากเซิร์ฟเวอร์ที่คุณใช้งาน arpalert เพื่อที่จะทริกเกอร์โฮสต์ (สดและทำงาน) ที่เป็นไปได้ทั้งหมดเพื่อตอบแบบสอบถาม arp ของคุณ ด้วยการเรียกใช้ nmap ping scan อย่างสม่ำเสมอในภายหลังคุณจะมีโอกาสที่ดีกว่าในการจับโฮสต์ที่อาศัยอยู่ในไม่ช้า

ตัวอย่างจาก arpalert:

หาก MAC ไม่อยู่ในรายการ arpalert จะเรียกใช้สคริปต์ผู้ใช้ที่กำหนดไว้ล่วงหน้าพร้อมด้วยที่อยู่ MAC และที่อยู่ IP เป็นพารามิเตอร์

ตัวอย่างจาก nmap:

Nmap ("Network Mapper") เป็นยูทิลิตี้ฟรีและโอเพ่นซอร์ส (ลิขสิทธิ์) สำหรับการสำรวจเครือข่ายหรือการตรวจสอบความปลอดภัย

ดูรอบ ๆ ที่นี่:


0

ฉันใช้: 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 อาจมีอยู่ในส่วนใหญ่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.