1 unstable release

0.1.0 Jul 20, 2020

#5 in #traceroute

Apache-2.0

27KB
390 lines


STATUS


OVERVIEW

Libtraceroute is a cross-platform traceroute library for Rust, that allows displaying possible routes (paths) and measuring transit delays of packets across an Internet Protocol (IP) network. Libtraceroute uses pnet, a low-level networking library, to send and capture packets at the data link layer, which allows it to operate without the need for root privileges on MacOS and Windows, but still requires sudo on Linux.


FEATURES

Libtraceroute works at the data link layer with custom-built packets, which provides the user with a lot of options for customizations. The library allows to configure the following parameters:

  • [REQUIRED] - Destination address
  • [OPTIONAL] - Maximum number of hops   Port   Number of queries per hop   Network interface   Protocol   Timeout per query



USAGE

To use libtraceroute in your project, add the following to your Cargo.toml:

[dependencies]
libtraceroute = "0.1.0"

NOTE! If you are using Windows, follow these instructions to make pnet work:

Windows

  • You must use a version of Rust which uses the MSVC toolchain
  • You must have WinPcap or npcap installed (tested with version WinPcap 4.1.3) (If using npcap, make sure to install with the "Install Npcap in WinPcap API-compatible Mode")
  • You must place Packet.lib from the WinPcap Developers pack in a directory named lib, in the root of this repository. Alternatively, you can use any of the locations listed in the %LIB%/$Env:LIB environment variables. For the 64 bit toolchain it is in WpdPack/Lib/x64/Packet.lib, for the 32 bit toolchain, it is in WpdPack/Lib/Packet.lib.

Source: https://github.com/libpnet/libpnet/blob/master/README.md

Dependencies

~6–19MB
~225K SLoC