Peafowl DPI for NodeJS
npm install node-peafowl



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
`$3
`javascript
/ 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$3
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 * |
$3
* Implement int64 response from library
* Add more test cases
$3
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