Tôi muốn tìm kiếm địa chỉ MAC đã cho trên mạng của mình, tất cả từ bên trong một tập lệnh Python. Tôi đã có một bản đồ của tất cả các địa chỉ IP hoạt động trong mạng nhưng tôi không thể tìm ra cách để thu thập địa chỉ MAC. Ý tưởng nào?Tìm kiếm máy chủ có địa chỉ MAC bằng cách sử dụng Python
Trả lời
Tôi không nghĩ rằng có một cách tích hợp để lấy nó từ chính Python.
Câu hỏi của tôi là, làm cách nào để bạn nhận được thông tin IP từ mạng của mình?
Để lấy từ máy cục bộ, bạn có thể phân tích cú pháp ifconfig (unix) hoặc ipconfig (windows) với ít khó khăn.
Tùy thuộc vào nền tảng của bạn Nếu bạn đang sử dụng * nix, bạn có thể sử dụng lệnh 'arp' để tra cứu địa chỉ mac cho địa chỉ IP (giả định IPv4). Nếu điều đó không hiệu quả, bạn có thể ping địa chỉ và sau đó xem, hoặc nếu bạn có quyền truy cập vào mạng thô (sử dụng BPF hoặc một số cơ chế khác), bạn có thể gửi các gói ARP của riêng bạn (nhưng đó có thể là quá mức cần thiết)
Nếu bạn muốn một giải pháp Python thuần túy, bạn có thể xem Scapy để gói các gói (bạn cần phải gửi yêu cầu ARP và kiểm tra trả lời). nếu bạn không nhớ gọi chương trình bên ngoài, bạn có thể sử dụng arping
(trên các hệ thống Un * x, tôi không biết về Windows tương đương).
Dường như không có cách nào để làm điều này bằng Python. Đặt cược tốt nhất của bạn là phân tích đầu ra của "ipconfig/all" trên Windows hoặc "ifconfig" trên Linux. Xem xét sử dụng os.popen() với một số regexps.
Bạn muốn phân tích đầu ra của 'arp', nhưng bộ đệm ARP hạt nhân sẽ chỉ chứa các địa chỉ IP đó nếu các máy chủ đó đã liên lạc với máy chủ nơi tập lệnh Python đang chạy.
ifconfig có thể được sử dụng để hiển thị địa chỉ MAC của giao diện cục bộ, nhưng không thể sử dụng địa chỉ MAC trên mạng LAN.
Đánh dấu Pilgrim mô tả cách thực hiện điều này trên Windows cho máy hiện tại bằng mô-đun Netbios here. Bạn có thể lấy mô-đun Netbios như là một phần của gói Win32 có sẵn tại python.org. Thật không may tại thời điểm này tôi không thể tìm thấy tài liệu trên mô-đun.
như trăn không có nghĩa là để đối phó với các vấn đề hệ điều hành cụ thể (đó là nghĩa vụ phải được giải thích và đa nền tảng), tôi sẽ thực hiện một lệnh bên ngoài để làm như vậy:
trong unix lệnh là ifconfig
nếu bạn thực hiện nó như là một ống bạn sẽ có được kết quả mong muốn:
import os
myPipe = os.popen2("/sbin/ifconfig","a")
print(myPipe[1].read())
This article, "Gửi tay crafted Ethernet Khung bằng Python (ARP ví dụ)", có vẻ là chính xác những gì bạn đang tìm kiếm.
- 1. Java - tìm máy chủ theo địa chỉ MAC
- 2. Nhận địa chỉ MAC từ xa bằng cách sử dụng Python và Linux
- 3. Lấy địa chỉ MAC từ các thiết bị bằng cách sử dụng Python
- 4. Tìm kiếm IMAP bằng Python từ hoặc đến địa chỉ email được chỉ định
- 5. Cách sử dụng máy chủ IIS trong máy ảo trên máy chủ Mac?
- 6. Sử dụng Lucene để tìm kiếm địa chỉ email
- 7. Tìm địa chỉ MAC của thiết bị bluetooth bằng adb
- 8. tìm kiếm toàn văn bằng cách sử dụng máy chủ sql 2008
- 9. Tìm địa chỉ thư mục của một tập tin trên máy Mac
- 10. Cách lấy địa chỉ IP của máy chủ ứng dụng
- 11. Làm cách nào để tìm địa chỉ IP của máy chủ của tôi bằng PHP (CLI)
- 12. Nhận địa chỉ MAC trong linux bằng cách sử dụng mono
- 13. Thực hiện tra cứu DNS để phân giải tên máy chủ thành địa chỉ IP bằng cách sử dụng JavaScript
- 14. Tìm kiếm IMAP bằng Python cho chủ đề một phần
- 15. Địa chỉ IPv6 theo tên máy chủ
- 16. Định vị địa lý các điểm truy cập 802.11 theo địa chỉ MAC bằng cách sử dụng API Google Geolocation
- 17. Nhận địa chỉ IP từ yêu cầu HTTP POST bằng cách sử dụng Python
- 18. Cách sử dụng điện trên máy Mac
- 19. Format một địa chỉ MAC sử dụng string.Format trong C#
- 20. Cách tìm khoảng cách giữa hai địa chỉ? (Phía máy chủ Java)
- 21. python địa chỉ TCPServer đã được sử dụng nhưng tôi đóng máy chủ và tôi sử dụng `allow_reuse_address`
- 22. Đơn giản chỉ cần tìm ra địa chỉ IP của máy chủ
- 23. Địa chỉ IP máy chủ hiển thị PHP
- 24. Làm cách nào để lấy địa chỉ vật lý (MAC) của địa chỉ IP bằng C#?
- 25. Địa chỉ MAC với getifaddrs
- 26. Cách lấy tên máy chủ dựa trên địa chỉ IP?
- 27. Tìm địa chỉ MAC gốc từ bản thân phần cứng
- 28. BSSID vs địa chỉ MAC?
- 29. Khó cài đặt mô-đun PyEnchant trên máy Mac bằng cách sử dụng Python 2.7
- 30. socket.error: [Errno 48] Địa chỉ đã được sử dụng
Python có các mô-đun dành riêng cho hệ điều hành, vì vậy tôi nghĩ rằng bạn trả lời là gây hiểu lầm. Cách pythonic để xử lý này sẽ là một mô-đun để có một giao diện độc lập hệ điều hành có thể được phụ phân loại bởi các plugin cụ thể của hệ điều hành. – Walter