Có cách nào để ARP ping trên Windows không?


26

Trên Linux và các hệ thống khác, có một tiện ích gọi là arping có thể được sử dụng để gửi yêu cầu ARP ("ping") và hiển thị các câu trả lời, giống như tiện ích "ping" nhưng sử dụng ARP thay vì ICMP.

Có cách nào để làm điều tương tự trên Windows không? (Tôi sử dụng Windows 7)

Câu trả lời:


15

Arping cho windows thực sự tồn tại.

http://freshmeat.net/projects/arping/

Sửa lỗi: đây là cho Linux, MAC OSX, v.v ... nhưng có thể được cài đặt trên windows thông qua cygwin.


Để rõ ràng, bất cứ điều gì trên mạng hiện nay cần phải đáp ứng với ARP, do đó, bất cứ điều gì "hỗ trợ" ARP ping. Liệu họ có một tiện ích đóng gói đẹp mắt để làm như vậy hay không là câu hỏi.
Qix

14

Nếu bạn xóa bộ đệm arp của Window (arp -d) và sau đó thử ping địa chỉ IP, nó sẽ phát ra một phát arp.

Kiểm tra nó với Wireshark.


Hành vi này có được đảm bảo không?
Pacerier

2
@Pacerier: Có, vì ICMP (ping) được xây dựng trên đỉnh của lớp IP. Lớp IP cần địa chỉ phần cứng cho một địa chỉ IP nhất định để biết ai sẽ gửi gói của nó tới. Nếu bộ đệm ARP trống, lớp IP sẽ không có lựa chọn nào khác ngoài việc đưa ra yêu cầu ARP trước khi nó có thể gửi gói.
Cameron

1
Hành vi này KHÔNG được đảm bảo. Nó sẽ chỉ xảy ra nếu địa chỉ IP có thể truy cập theo quy tắc mạng con; nếu không, nó sẽ sử dụng địa chỉ IP của cổng mặc định để đưa ra yêu cầu ARP.
Peter Crabtree

6

Lệnh ARP của WinXP chỉ để hiển thị dữ liệu. Hãy thử Nmap, nó miễn phí và khá dễ dàng cho kiểu quét này. Nmap có sẵn tại insecure.org.


4
Đó có lẽ là tiện ích gần nhất mà tôi có thể có với tiện ích arping (sử dụng nmap -PR -sP <host>). Chúc mừng bạn đã chiến thắng.
Etienne Dechamp

1
@ e-t172 Với các phiên bản mới hơn của nmap, lệnh nmap -PR -sn <host>được ưu tiên. -sPbị phản đối Ngoài ra, điều này chỉ làm việc cho tôi khi tôi chạy nó như root.
Nic

5

Một cách xây dựng để làm điều này trong windows:

cmd /V /C "set "IP=10.0.2.2" & FOR /L %i in (1,0,2) do @ping -n1 -w 1000 "!IP!" >NUL & arp -a | findstr /c:"!IP! "

Wow, đây là Hardcore - Tôi yêu tôi! Và nó gần như làm việc ở đây. Thật ra tôi đã phải thêm một khoảng -n1... @ping -n 1 ...
trắng

Vòng lặp này chạy mãi mãi. Tôi nghĩ những gì bạn dự định là cmd /V /C "set "IP=10.0.2.2" & FOR /L %i in (1,1,2) do @ping -n 1 -w 1000 "!IP!" >NUL & arp -a | findstr /c:"!IP! "chạy hai lần và do đó chọn địa chỉ MAC trùng lặp.
Parsley72

3

Đây không chính xác là một "ping" ARP nhưng chạy "arp inet_addr (địa chỉ ip)" từ một dấu nhắc lệnh sẽ gửi một yêu cầu ARP duy nhất đến máy chủ được chỉ định trong (địa chỉ ip). Sau đó, bạn có thể chạy "arp -a" để xem kết quả.


Chỉ không làm việc. Tôi nhận được lời nhắc lại nhưng không có gì xảy ra. Một sniffer đã không hiển thị bất kỳ yêu cầu ARP sắp ra. Kết quả tương tự nếu địa chỉ IP chưa có trong bảng ARP.
Etienne Dechamp

Phải, bạn không nhận được kết quả. Lệnh sẽ gửi một yêu cầu ARP duy nhất đến địa chỉ IP, sau đó bạn có thể thấy kết quả bằng cách ban hành lệnh arp -a. Tôi đã nói nó không chính xác là một arp ping, nhưng nó sẽ gửi một yêu cầu arp duy nhất.
joeqwerty

Không, nó không có. Như tôi đã nói, một trình thám thính mạng không hiển thị bất kỳ yêu cầu ARP nào đi ra ngoài và không có mục nào được thêm vào arp -a.
Etienne Dechamp

Điều đó thật lạ. Nó hoạt động chính xác như tôi đã mô tả trên Windows 7 nhưng không phải trên Windows XP. Lấy làm tiếc.
joeqwerty

1
Không làm việc cho tôi trên Win7, xin lỗi.
Cameron


3

Hãy thử "arp-ping.exe"

Tôi nghĩ rằng tôi sẽ thêm công cụ này chạy trực tiếp từ dấu nhắc lệnh:

tùy chọn dòng lệnh arp-ping.exe

Usage: arp-ping.exe [options] target
        -s ip : specify source ip
        -n X  : ping X times
        -t    : ping until stopped with CTRL-C
        -x    : exit immediately after successful ping
        -i X  : ping every X seconds
        -d    : do an 'arp -d *' between pings (requires Administrator)
                (-d prevents cached ARP responses on Windows XP.)
        -c    : include date and time on each line
        -m X  : ignore failures that take less than X milliseconds
        -.      : print a dot (.) for every ignored failure
        -l    : print debug log
        -v    : print version and exit

So với các tùy chọn dòng lệnh "arping" của Linux

Usage: arping [-fqbDUAV] [-c count] [-w timeout] [-I device] [-s source] destination
-f : quit on first reply
-q : be quiet
-b : keep broadcasting, don't go unicast
-D : duplicate address detection mode
-U : Unsolicited ARP mode, update your neighbours
-A : ARP answer mode, update your neighbours
-V : print version and exit
-c count : how many packets to send
-w timeout : how long to wait for a reply
-I device : which ethernet device to use (eth0)
-s source : source ip address
destination : ask for what ip address

1

Cách nhận Bảng ARP với API Trình trợ giúp IP http://www.codeguru.com/cpp/in/iNET/iNETprotatioip/article.php/c6153

GetIpNetTable: Lấy thông tin bảng phân giải địa chỉ.

SetIpNetEntry: Thêm mục vào bảng ARP.

DeleteIpNetEntry: Xóa mục nhập từ bảng ARP.

CreateIpNetEntry: Tạo một mục trong bảng ARP.

FlushIpNetTable: Xóa tất cả các mục ARP cho giao diện đã chỉ định khỏi bảng ARP

Sendkv: Gửi yêu cầu ARP để lấy địa chỉ vật lý tương ứng với địa chỉ IP đích được chỉ định.


0

Thật không may, không có một công cụ tích hợp để làm điều này trong Windows, có một số công cụ của bên thứ ba sẽ làm điều này như Netscan , nhưng nó không miễn phí



0

Hardping là một chương trình tốt thực hiện điều này.

Có phiên bản đầy đủ có giá nhiều hơn một chương trình quét ping, nhưng tôi chỉ sử dụng phiên bản phần mềm miễn phí. Một cái miễn phí chỉ làm 1 ip mỗi lần, nhưng đó là tất cả những gì tôi cần.

Bạn sẽ sử dụng nó như c:> hardping 192.168.1.1 và nó sẽ trả lời với mac hay không.

Tôi nghĩ rằng họ đã gỡ bỏ trang web của họ, nhưng bạn vẫn có thể tìm thấy nó bằng cách googling "phần cứng miễn phí"


-1
arp -a your.ip.here.jo

ví dụ: arp -a 192.168.0.1


Lệnh này sẽ chỉ tra cứu bộ đệm arp hiện tại, không phát hành arp mới "Ai có 192.168.0.1?" yêu cầu
Chriz
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.