Introduction

Next Previous Top

1. Introduction

Libnet is a C library providing a high-level interface to packet injection primitives across many platforms. Previous to libnet, programmers had to wrestle with confusing, obscure, and poorly documented interfaces to build and write network packets. Libnet alleviates these problems and provides a well documented, simple API to quickly build portable programs that write network packets (figure 1).

Libnet was written for two main reasons:

- To establish a simple interface by which network programmers could ignore the subtleties and nuances of low-level network programming (and therefore concentrate on writing their programs and solving their problems).
- To mitigate the irritation many network programmers experienced due to the lack of standards.

To be honest, I can't believe someone didn't write something like libnet (also termed "libpwrite") a long time ago. It seemed like such an obvious gap that needed to be filled. I was sure the LBNL guys (Lawrence Berkeley National Laboratory -- they wrote libpcap[1]) would put something together. Libnet, on a high level, is the packet injector analog to libpcap. They are brothers (or sisters).

Libnet is a wonderful utility for writing security-related applications, tools and modules. Many recent exploits have been rapidly developed using libnet as have many security related tools. The Packetfactory has many such examples.

This manual describes libnet in detail, including library internals and design decisions, as well as including step by step coding examples.

The primary author of libnet is Mike D. Schiffman <mike@infonexus.com>. However, libnet just wouldn't be libnet without the teeming masses of other way talented people who have helped out.

Next Previous Top