Libcrafter is a high level library for C++ designed to make easier the creation and decoding of network packets. It is able to craft or decode packets of most common network protocols, send them on the wire, capture them and match requests and replies. It enables the creation of networking tools in a few lines with an interface very similar to Scapy. A packet is described as layers that you stack one upon the other. Fields of each layer have useful default values that you can overload.
It also contains a very naive implementation of the TCP/IP stack at user level that enables working with TCP streams. This makes easier the creation of tools for data injection on arbitrary connections, IP spoofing and TCP/IP session hijacking.
Protocols supported: Ethernet, SLL (Linux cooked-mode capture), ARP, DHCP, DHCP options, IP, IP options, IPv6, ICMP, ICMP extensions, TCP, TCP options, UDP and DNS.