Tracebox, a middlebox detection tool

Basic use of the Lua API

When run, the scripts have preset global variables and functoin, listed in Globals. The most basic script is made of 3 parts:

  1. Probe packet definition, using successive concatenation of packet layers, see Globals.

    pkt = ip{dst=''} / tcp{dst=80}
  2. Callback function definition, which will be called after each probe packet has been echoed back by intermediate routers on the path, see Globals:tracebox_callback.

    function cb(ttl, r_ip, probe, rcv, mod)
        print('At hop ' .. ttl)
        print('Received: ' .. tostring(rcv))
  3. tracebox() function call, see Globals:tracebox, with the created probe packet and callback function, which will run tracebox and call the callback with the detected packet modifications and return the final received packet received from the target, if any.

    result = tracebox(pkt, {callback='cb'})


Globals Global functions and objects provided by TraceBox


__cpp_obj Abstract type for all custom classes exposed from cpp, exposed to lua with reference couting.
Base_Object Abstract type, providing the basic methods supported by most objects, inherits from __cpp_obj.
DNS The DNS Layer
FWFilter A simple firewall rule on the host machine.
ICMP The ICMP Layer, inherits from Base_Object
IP The IP Layer, inherits from Base_Object
IPOption Options for the IP Layer, inherits from Base_Object
IPv6 The IPv6 Layer, inherits from Base_Object
IPv6SegmentRoutingHeader The IPv6SegmentRoutingHeader Layer, inherits from Base_Object
Packet An object representing a Packet, inherits from Base_Object
PacketModifications A set of modifications between packets
Raw The Raw Layer, inherits from Base_Object
TbxSniffer An object that will intercept packets
TCP The TCP Layer, inherits from Base_Object
TCPOption Options for the TCP Layer, inherits from Base_Object
TCPTFO The TCP Fast Open option
TCPTimestamp The TCP Timestamp option
UDP The UDP Layer, inherits from Base_Object
generated by LDoc 1.4.3 Last updated 2015-05-04 17:26:47