ARP ping บน Windows มีวิธีใดบ้าง?


26

บน Linux และระบบอื่น ๆ มียูทิลิตีที่เรียกว่า arping ซึ่งสามารถใช้ส่งคำขอ ARP ("pings") และแสดงคำตอบเหมือนกับยูทิลิตี้ "ping" แต่ใช้ ARP แทน ICMP

มีวิธีใดบ้างที่จะทำสิ่งเดียวกันบน Windows? (ฉันใช้ Windows 7)

คำตอบ:


15

Arping สำหรับ windows มีอยู่จริง

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

การแก้ไข: นี่สำหรับ Linux, MAC OSX, ฯลฯ ... แต่สามารถติดตั้งบน windows ผ่าน cygwin


เพื่อความชัดเจนทุกอย่างที่อยู่ในเครือข่ายทุกวันนี้จำเป็นต้องตอบสนองต่อ ARP ดังนั้นทุกอย่าง "รองรับ" การกระตุก "ARP" ไม่ว่าพวกเขาจะมียูทิลิตี้แบบแพคเกจแพคเกจพร้อมธนูสำหรับการทำเช่นนี้หรือไม่
Qix

14

หากคุณล้างแคช arp ของ Window (arp -d) แล้วลอง ping ที่อยู่ ip มันจะออก arp Broadcast

ตรวจสอบกับ Wireshark


พฤติกรรมนี้รับประกันหรือไม่
Pacerier

2
@Pacerier: ใช่เนื่องจาก ICMP (ping) ถูกสร้างขึ้นที่ด้านบนของเลเยอร์ IP เลเยอร์ IP ต้องการที่อยู่ฮาร์ดแวร์สำหรับที่อยู่ IP ที่กำหนดเพื่อให้ทราบว่าใครจะส่งแพ็คเก็ตไป หากแคช ARP ว่างเปล่าเลเยอร์ IP จะไม่มีทางเลือกนอกจากต้องออกคำขอ ARP ก่อนที่จะสามารถส่งแพ็กเก็ตได้
คาเมรอน

1
พฤติกรรมนี้ไม่รับประกัน มันจะเกิดขึ้นหากที่อยู่ IP สามารถเข้าถึงได้ตามกฎของเครือข่ายย่อยเท่านั้น มิฉะนั้นจะใช้ที่อยู่ IP ของเกตเวย์เริ่มต้นเพื่อออกคำขอ ARP
Peter Crabtree

6

คำสั่ง ARP ของ WinXP ใช้สำหรับแสดงข้อมูลเท่านั้น ลอง Nmap ได้ฟรีและค่อนข้างง่ายสำหรับการสแกนประเภทนี้ Nmap มีให้ที่ insecure.org


4
นั่นอาจใกล้เคียงที่สุดที่ฉันสามารถไปที่ยูทิลิตี้ arping (โดยใช้ nmap -PR -sP <host>) ขอแสดงความยินดีคุณได้รับรางวัล
Etienne Dechamps

1
@ e-t172 ด้วย nmap เวอร์ชันที่ใหม่กว่าคำสั่งnmap -PR -sn <host>นี้เป็นที่ต้องการ -sPเลิกใช้แล้ว นอกจากนี้ยังใช้งานได้เฉพาะกับฉันเมื่อฉันเรียกใช้เป็นราก
Nic

5

วิธีสร้างสิ่งนี้ใน 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! "

ว้าวนี่มันไม่ยอมใครง่ายๆ - ฉันรักฉัน! และเกือบจะทำงานที่นี่ ที่จริงฉันต้องเพิ่มช่องว่างระหว่าง-nและ1มันจึงกลายเป็น:... @ping -n 1 ...
saulius2

วงนี้จะวิ่งไปตลอดกาล ฉันคิดว่าสิ่งที่คุณตั้งใจจะทำคือ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! "สองครั้งดังนั้นจึงเลือกที่อยู่ MAC ที่ซ้ำกัน
parsley72

3

นี่ไม่ใช่ ARP "ping" อย่างแน่นอน แต่การเรียกใช้ "arp inet_addr (ที่อยู่ ip)" จากพรอมต์คำสั่งจะส่งคำขอ ARP เดียวไปยังโฮสต์ที่ระบุใน (ที่อยู่ IP) จากนั้นคุณสามารถเรียกใช้ "arp -a" เพื่อดูผลลัพธ์


ไม่ทำงาน ฉันได้รับการตอบกลับ แต่ไม่มีอะไรเกิดขึ้น ผู้ดมกลิ่นไม่ได้แสดงคำขอ ARP ใด ๆ ออกมา ผลลัพธ์เดียวกันหากที่อยู่ IP ไม่ได้อยู่ในตาราง ARP
Etienne Dechamps

ใช่คุณไม่ได้รับผลตอบแทน คำสั่งส่งการร้องขอ ARP เดียวไปยังที่อยู่ ip ซึ่งคุณสามารถดูผลลัพธ์ได้โดยออกคำสั่ง arp -a ฉันบอกว่ามันไม่ใช่ ping arp แต่มันส่งคำขอ arp เดียว
joeqwerty

ไม่มันไม่ ดังที่ฉันได้กล่าวไปแล้วเครือข่ายดมกลิ่นไม่แสดงคำขอ ARP ใด ๆ ที่กำลังดับและไม่มีรายการใดถูกเพิ่มใน arp -a
Etienne Dechamps

มันแปลกมาก มันทำงานตรงตามที่ฉันอธิบายไว้ใน Windows 7 แต่ไม่ใช่ใน Windows XP ขอโทษ
joeqwerty

1
ไม่ทำงานสำหรับฉันทั้งบน Win7 ขอโทษ
คาเมรอน

3

คุณสามารถตรวจสอบนี้: https://github.com/seladb/PcapPlusPlus/tree/master/Examples/Arping นี่เป็น Arping ข้ามแพลตฟอร์มที่สามารถทำงานได้ทั้งบน Windows, Linux และ Mac OS X


3

ลอง "arp-ping.exe"

คิดว่าฉันจะเพิ่มเครื่องมือนี้ที่ทำงานโดยตรงจากพรอมต์คำสั่ง:

ตัวเลือกบรรทัดคำสั่ง 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

เมื่อเทียบกับตัวเลือกบรรทัดคำสั่ง "arping" ของ 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

วิธีรับตาราง ARP ด้วย IP Helper API http://www.codeguru.com/cpp/in/internet/internetprotocolip/article.php/c6153

GetIpNetTable: ดึงข้อมูลตารางการแก้ปัญหาที่อยู่

SetIpNetEntry: เพิ่มรายการในตาราง ARP

DeleteIpNetEntry: ลบรายการจากตาราง ARP

CreateIpNetEntry: สร้างรายการในตาราง ARP

FlushIpNetTable: ลบรายการ ARP ทั้งหมดสำหรับอินเตอร์เฟสที่ระบุจากตาราง ARP

SendARP: ส่งคำขอ ARP เพื่อรับที่อยู่ทางกายภาพที่สอดคล้องกับที่อยู่ IP ปลายทางที่ระบุ


0

น่าเสียดายที่ไม่มีเครื่องมือในตัวที่จะทำสิ่งนี้ใน Windows มีเครื่องมือของบุคคลที่สามที่จะทำเช่นNetscanแต่ไม่ฟรี



0

การ Hardping เป็นโปรแกรมที่เหมาะสมที่ทำสิ่งนี้

มีเวอร์ชั่นเต็มรูปแบบที่เสียค่าใช้จ่ายซึ่งเป็นมากกว่าโปรแกรม ping sweep แต่ฉันแค่ใช้รุ่นฟรีแวร์ ฟรีเพียงครั้งเดียวใช้ 1 ip ต่อครั้ง แต่นั่นคือทั้งหมดที่ฉันต้องการ

คุณต้องการใช้มันเช่น c:> hardping 192.168.1.1 และมันจะตอบกลับด้วย mac หรือไม่

ฉันคิดว่าพวกเขาเอามันออกจากเว็บไซต์ของพวกเขา แต่คุณยังสามารถหาได้โดย googling "hardping freeware"


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

อดีต: arp -a 192.168.0.1


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