The SDK

Introduction

The jNetPcap SDK provides native calls to the libpcap library installed on the system. The SDK consists of a libpcap wrapper java module which forwards native pcap calls to its native counter part and a jNetPacket module which provides packet and protocol level API, just as jNetPcap v1 did. However the jNetPacket module is optional and the base jNetPcap module provides all the necessary functionality basic packet capture and transmission using generic OS drivers.

Module: com.slytechs.jnet.pcap

jNetPcap module provides the following general functionality:

  • Query runtime native libpcap and jNetPcap API versions (to ensure compatibility)

  • Query network devices/ports available on the system

  • Open and activate methods for setting up a packet capture

  • Capture raw packets using either Pcap.loop or Pcap.dispatch methods

  • Send packets using Pcap.send

  • Use the jNetPacket API to work with dissected packets, reassembled IP datagrams and TCP/QUIC streams, etc...

Module: com.slytechs.jnet.packet

jNetPacket module is a higher layer module that adds a packet and protocol level API. Instead of working with raw data in a buffer or array, this module encapsulates much more information about the captured packets:

  • Frame level information

    • preamble

    • L2 code errors

    • timestamp

    • CRC checks

  • Packet level dissection

    • A Packet class is provided for working with packets and headers

      • Limited scope and by reference to data - a no copy packet object

      • Global scope where data is copied from the capture buffers

    • A Header class is provided for working with individual header or header options

      • Each known protocol header is identified and offset is calculated, accessed using Packet.tryHeader method

    • Reassembly for IP fragments or data streams can be enabled

    • Decryption of TLS or IPSec traffic

    • ProtocolStacks, PacketTemplates and PacketBuilders can be created for transmission and receipt of new packets

    • and a lot more!

Installation

Download the main jNetPcap module

Prerequisites

  • Native libpcap, winpcap, npcap libraries and packages

  • com.slytechs.jnet.packet java module

  • com.slytechs.jnet.buffer module

  • Java 18 or higher (for foreign function incubator module, project Panama)