6 releases

0.3.2 Jul 30, 2023
0.3.1 Mar 19, 2023
0.3.0 Aug 29, 2022
0.2.0 Jun 10, 2021
0.1.1 May 28, 2021

#1718 in Network programming

Download history 127/week @ 2024-07-20 174/week @ 2024-07-27 111/week @ 2024-08-03 81/week @ 2024-08-10 94/week @ 2024-08-17 93/week @ 2024-08-24 116/week @ 2024-08-31 68/week @ 2024-09-07 88/week @ 2024-09-14 149/week @ 2024-09-21 124/week @ 2024-09-28 105/week @ 2024-10-05 190/week @ 2024-10-12 337/week @ 2024-10-19 75/week @ 2024-10-26 138/week @ 2024-11-02

743 downloads per month
Used in rns

MIT license

22KB
450 lines

arp-toolkit Build crates.io

Toolkit for (R)ARP , the (Reverse) Address Resolution Protocol.

Supports simplified sending and receiving of (R)ARP requests/responses using an abstracted Client. Also allows easy manipulation and building of (R)ARP packets.

Features:

  • Sending and receiving ARP/RARP messages
  • Abstracted ARP client with simple access to most common ARP/RARP use cases
  • Advanced API, allowing for arbitrary construction and manipulation of ARP/RARP packets
  • Sync (blocking) and async IO

Build

To build it, use

cargo build

Note: only the async-example is built per default. To build the sync-example, change to the directory and run cargo build. This is because sync and async can not be used in the same crate simultaneously.

Usage

examples/sync-example shows high-level usage of the class ArpClient using blocking IO. For example, it illustrates how to get the MAC address for the corresponding IP and vice versa with a single function call. async-example shows the same, but with async IO.

It is also possible to directly send, receive and manipulate (R)ARP packages. To see how this works, take a look at the both of the examples and their containing method resolve_advanced.

To use blocking IO instead of async IO, activate the feature sync in your Cargo.toml like this:

[dependencies]
arp-toolkit = {version = x.x.x, features = ["sync"]}

Important note: As this library uses Raw sockets, either set the CAP_NET_RAW capability or run your program with sudo. (not recommended)

Dependencies

~3–4.5MB
~83K SLoC