Làm cách nào để khám phá địa chỉ MAC của các máy trong mạng?
Tôi cần khám phá các máy có sẵn chỉ với BIOS được cài đặt (không có hệ điều hành).
Và tôi cần tìm địa chỉ MAC của các máy đang hoạt động.
Làm cách nào để khám phá địa chỉ MAC của các máy trong mạng?
Tôi cần khám phá các máy có sẵn chỉ với BIOS được cài đặt (không có hệ điều hành).
Và tôi cần tìm địa chỉ MAC của các máy đang hoạt động.
Câu trả lời:
Bạn sẽ phải truy cập thông tin có sẵn trên các thiết bị chuyển mạch được quản lý của bạn. Nếu bạn có một mạng không được quản lý, tôi không thấy cách nào để làm điều đó.
Điều này giả định rằng các máy tính mục tiêu có khả năng Wake-on-LAN (WoL). Trong trường hợp này, một liên kết đến máy chủ được thiết lập (tìm đèn LED liên kết hào nhoáng) và card mạng đang nghe chương trình phát sóng WoL. AFAIK, thẻ không trả lời bất cứ điều gì trong trạng thái này. Nếu không có WoL, thẻ có thể bị tắt (không có đèn LED liên kết) và nó hoàn toàn không hoạt động.
Nếu các máy không được cấp nguồn, điều này là không thể.
Nếu chúng được cấp nguồn, tôi cũng đoán điều này là không thể, vì bạn cần một ngăn xếp mạng tối thiểu để trả lời ít nhất là những câu hỏi như truy vấn ARP, v.v., không hoạt động nếu không cài đặt HĐH.
Điều có thể hoạt động (tôi không biết và không thể kiểm tra ngay bây giờ) là NIC và công tắc giao tiếp khi NIC được cắm hoặc bật nguồn và công tắc học địa chỉ MAC theo cách này. Nếu đây là trường hợp bạn sẽ cần một công tắc có thể quản lý và truy vấn nó cho các địa chỉ mac được kết nối.
Bạn có thể sử dụng Nmap để thực hiện quét ARP rất nhanh bằng cú pháp sau.
nmap -sn -PR -oX nmap.xml 192.168.1.0/24
Điều này sử dụng ping ARP (chỉ yêu cầu ARP, không ICMP, UDP hoặc TCP, không quét cổng) để quét phạm vi địa chỉ IP được chỉ định và ghi lại địa chỉ IP / địa chỉ MAC / phản hồi tên máy chủ trong tệp XML (nmap.xml).
Tôi đã viết một tập lệnh PowerShell để trộn tệp XML và tạo ra một tệp CSV . Điều này cũng lọc ra các máy chủ xuống. Tôi thấy điều này dễ sử dụng trong Excel hơn tệp XML. Đây là kịch bản nếu có ai quan tâm.
# 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
. Rõ ràng cờ -sn
không được hỗ trợ trên Nmap 4.x.
show mac-address-table
).Từ máy Unix, nghe các máy tính không có hệ điều hành trên cùng một mạng LAN và nếu có thể thông qua Hub (không phải Switch), bạn có thể thử
arp
cat /proc/net/arp
Ngoài ra, bạn có thể muốn thử wireshark
(từ máy OS-ed). Một lần nữa, tốt hơn là sử dụng Hub để bắt bất kỳ thông tin liên lạc nào từ các máy BIOS, bao gồm cả chương trình phát sóng.
Vấn đề cơ bản ở đây là đây là thông tin của Lớp 2, vì vậy chỉ có các công tắc mới nhìn thấy nó. Một số thiết bị chuyển mạch sẽ cung cấp giao diện cho phép bạn xem thông tin này, nhưng nếu chúng không phải là cách duy nhất để có được nó là chặn trong lớp vật lý, ví dụ như cài đặt một trung tâm giữa công tắc.
Nếu bạn đang sử dụng các công tắc được quản lý, thông tin này có khả năng có sẵn từ công tắc. Một số bộ định tuyến / bộ chuyển mạch tích hợp của người dùng cuối (chẳng hạn như loại thường gói modem ADSL) đôi khi sẽ có một danh sách máy khách DHCP bao gồm các địa chỉ MAC.
Nếu bạn đang sử dụng các công tắc không được quản lý và bạn thực sự muốn biết thông tin này, tôi khuyên bạn nên mua một trung tâm và tạm thời thay thế công tắc bằng nó. Sau đó, bạn có thể kết nối một máy tính chạy wireshark với hub và chụp các gói ARP để ghi lại địa chỉ MAC. Thay phiên, bạn có thể sử dụng Echolot để làm điều này cho bạn - nó theo dõi có chọn lọc các gói ARP và xây dựng cơ sở dữ liệu địa chỉ MAC.
Đây là một giải pháp hiệu quả với tôi:
Một mẹo nhỏ rất dễ dàng bạn có thể làm trong vòng 2 giây là làm việc với thực tế là bất kỳ hệ điều hành nào cũng ghi một bảng có địa chỉ mac và IP của bất kỳ thiết bị nào mà nó tương tác. Điều này được gọi là BẢNG ARP. Vì vậy, câu hỏi là làm thế nào để buộc một tương tác với tất cả các thiết bị? Bạn chỉ có thể ping địa chỉ IP quảng bá. Điều này không hoàn hảo, vì một số thiết bị hoặc tường lửa có thể chặn yêu cầu ping ICMP, nhưng nó hoạt động trong nhiều tình huống.
Các lệnh là (trong một địa chỉ quảng bá ipv4 192.168.0.255):
ping 192.168.0.255
Trong Linux sử dụng:
ping -b 192.168.0.255
Đợi vài giây để các thiết bị phản hồi, sau đó làm:
arp -a
Đối với ping IPV6, xem bình luận của Giedrius Rekasius
Không hoàn hảo, nhưng không có công cụ, không nghiên cứu, không lãng phí thời gian, hoạt động trong mọi hệ điều hành chính và nhanh chóng.
ping6 -c2 -n ff02::1%wlan0
. Bạn chỉ cần cập nhật tên của giao diện mạng sẽ sử dụng, địa chỉ IP được sử dụng cho mục đích đó luôn luôn ff02::1
bất kể bạn đang sử dụng mạng nào.
Như những người khác đã nói, nếu bạn có các công tắc không được quản lý, hoặc BootP / PXE, không có cách nào dễ dàng để có được MAC của các máy không có HĐH.
Nếu các máy đang chạy của bạn đang chạy windows, thì kịch bản rất dễ (thường thông qua WMI)
Có một loạt các ví dụ ở đây: http://gallery.technet.microsoft.com/ScriptCenter/en-us/site/search?f[0[.Type=SearchText&f[0[.Value=MAC+address&x=0&y= 0
Tôi sẽ đề nghị chuyển đổi bảng địa chỉ MAC, nhưng ai đó đã trình bày ở trên.
Nếu bất kỳ máy tính nào đang chạy HĐH và có địa chỉ IP, bạn có thể kết nối vào cùng một mạng LAN, bạn có thể sử dụng NMAP (hoặc phiên bản GUI như Zenmap) từ http://nmap.org/ ... nếu bạn chạy Điều này trên cùng một mạng LAN, bạn sẽ nhận được thông tin địa chỉ MAC cho bất kỳ máy nào phản hồi.
Sẽ hữu ích để hiểu thêm về lý do tại sao bạn cần lấy địa chỉ MAC, trong trường hợp có cách tốt hơn để đạt được kết quả tương tự.
Bạn có thể thu thập thông tin ARP với ví dụ arpalert chạy liên tục. Cùng với đó, bạn sẽ có tập hợp các địa chỉ ARP được nhìn thấy sau khi bắt đầu.
Tắt nguồn máy sẽ không gửi cho bạn trả lời ARP.
Để tăng tốc quá trình, bạn có thể sử dụng quét ping nmap (nmap -sP) trên mạng từ máy chủ bạn đang chạy arpalert, để kích hoạt tất cả các máy chủ có thể (trực tiếp và đang chạy) để trả lời truy vấn arp của bạn. Với việc chạy ping quét nmap thường xuyên sau đó, bạn có cơ hội tốt hơn để bắt được một máy chủ sống ngắn.
đoạn trích từ arpalert:
Nếu MAC không có trong danh sách, arpalert sẽ khởi chạy một tập lệnh người dùng được xác định trước với địa chỉ MAC và địa chỉ IP làm tham số.
đoạn trích từ nmap:
Nmap ("Network Mapper") là một tiện ích (giấy phép) miễn phí và nguồn mở để khám phá mạng hoặc kiểm toán bảo mật
Nhìn xung quanh đây:
Tôi sử dụng: nmap -sP 192.168.1.1/24
(thay thế 192.168.1.1/24 bằng dải IP của bạn)
Nó sẽ chỉ cho bạn thấy các máy đang hoạt động và sẽ cung cấp cho bạn một cái gì đó như:
[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
Nếu bạn chưa cài đặt HĐH, bạn có thể sử dụng đĩa cd trực tiếp linux, nmap có thể có sẵn trong hầu hết chúng