Giter Club home page Giter Club logo

node-peafowl's Introduction

node-Peafowl

Native Node Bindings for the Peafowl DPI Library

Build Status dependencies Status contributions welcome

About

Peafowl is a flexible and extensible DPI framework which can be used to identify the application protocols carried by IP (IPv4 and IPv6) packets and to extract and process data and metadata carried by those protocols. This module allows NodeJS projects to leverage the power of Peafowl for Deep-Packet Inspection of live and recorded network traffic.

Installation

var peaFowl = require('node-peafowl')
Custom Build

The install script will automatically attempt compiling peafowl and building node gyp bindings

npm install

In case of issues building the library, run using --unsafe-perm:

npm install --unsafe-perm

Usage

/* INITIALIZE LIBRARY */
peaFowl.init();

/* DISSECT PACKETS AND RESOLVE PROTOCOL NAME */
peaFowl.get_L7_from_L2( PCAP_packet, PCAP_header, PCAP_LinkType ) );

/* EXTRACTION SETUP */
var buf = Buffer.from('DNS_NAME_SRV');
peaFowl.field_add_L7(buf)

/* EXTRACT PROTOCOL FIELDS */
var field = Buffer.from('DNS_NAME_SRV')
if (peaFowl.field_present(field)) {
         console.log( peaFowl.field_string_get(field) );
}

See a fully working Example using PCAP files

Test

You can test our example by running npm test


Main Functions

function parameters description
init (void) Initialize the library for statefull env
terminate (void) Teardown the library
get_L7_protocol_name (packet, header, link type) Dissect and return Protocol name as char * (l7)

Extraction Functions

function parameters description
field_add_L7 (string Buffer) Initialize extraction for the selected protocol field
field_present (string Buffer) Check if an extraction is present in a processed packet
field_number_get (string Buffer) Return the extracted value as int *
field_string_get (string Buffer) Return the extracted value as char *

Todo

  • Implement int64 response from library
  • Add more test cases


Credits & Acknowledgements

Peafowl has been mainly developed by Dr. Daniele De Sensi

Node-Peafowl is developed by L. Mangani, M. Campus using the awesome NAPI-macros by Mathias Buus


If you use Peafowl or Node-Peafowl for scientific purposes, please cite the following paper:

"Deep Packet Inspection on Commodity Hardware using FastFlow", M. Danelutto, L. Deri, D. De Sensi, M. Torquati

This Project is sponsored by QXIP BV

node-peafowl's People

Contributors

danieledesensi avatar dependabot[bot] avatar kyrol01 avatar lmangani avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

node-peafowl's Issues

pfwl_get_L7_field_id wrong signature

The call:
pfwl_field_id_t pfwl_get_L7_field_id(const char* field_name);
should actually be:
pfwl_field_id_t pfwl_get_L7_field_id(pfwl_protocol_l7_t protocol, const char* field_name);

After replacing the call, you can checkout the last peafowl commit again.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.