Socket
Socket
Sign inDemoInstall

pcap

Package Overview
Dependencies
Maintainers
2
Versions
36
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

pcap - npm Package Compare versions

Comparing version 0.3.3 to 0.4.0

5

package.json
{
"name" : "pcap",
"version" : "0.3.3",
"version" : "0.4.0",
"description" : "raw packet capture, decoding, and analysis",

@@ -13,3 +13,6 @@ "author": "Matt Ranney <mjr@ranney.com>",

"url": "git://github.com/mranney/node_pcap.git"
},
"dependencies": {
"socketwatcher": "~0.1.0"
}
}

151

pcap.js
/*global process require exports console */
var util, IOWatcher,
dns = require('dns'),
Buffer = require('buffer').Buffer,
events = require('events'),
binding = require('./build/Release/pcap_binding'),
HTTPParser = process.binding('http_parser').HTTPParser,
url = require('url');
var util = require('util'),
dns = require('dns'),
events = require('events'),
binding = require('./build/Release/pcap_binding'),
HTTPParser = process.binding('http_parser').HTTPParser,
url = require('url'),
SocketWatcher = require("socketwatcher");
if (process.versions && process.versions.node && process.versions.node.split('.')[1] >= 3) {
util = require("util");
IOWatcher = process.binding('io_watcher').IOWatcher;
} else {
util = require('util');
IOWatcher = process.IOWatcher;
}
function Pcap() {

@@ -54,3 +46,3 @@ this.opened = false;

this.opened = true;
this.readWatcher = new IOWatcher();
this.readWatcher = new SocketWatcher();
this.empty_reads = 0;

@@ -73,3 +65,3 @@ this.buf = new Buffer(65535);

// from a savefile there will be no more packets left. this check ensures
// we stop reading. Under certain circumstances IOWatcher will get caught
// we stop reading. Under certain circumstances SocketWatcher will get caught
// in a loop and continue to signal us causing the program to be flooded

@@ -142,6 +134,6 @@ // with events.

sll_addr: function (raw_packet, offset, len) {
var res = []
for (i=0; i<len; i++){
res.push(lpad(raw_packet[offset+i].toString(16), 2));
}
var res = [], i;
for (i=0; i<len; i++){
res.push(lpad(raw_packet[offset+i].toString(16), 2));
}

@@ -184,35 +176,36 @@ return res.join(":");

},
ipv6_addr: function (raw_packet, offset) {
var ret = '';
var octets = [];
for (var i=offset; i<offset+16; i+=2) {
octets.push(unpack.uint16(raw_packet,i).toString(16));
}
var curr_start, curr_len = undefined;
var max_start, max_len = undefined;
for(var i = 0; i < 8; i++){
if(octets[i] == "0"){
if(curr_start === undefined){
curr_len = 1;
curr_start = i;
}else{
curr_len++;
if(!max_start || curr_len > max_len){
max_start = curr_start;
max_len = curr_len;
}
}
}else{
curr_start = undefined;
}
}
ipv6_addr: function (raw_packet, offset) {
var i;
var ret = '';
var octets = [];
for (i=offset; i<offset+16; i+=2) {
octets.push(unpack.uint16(raw_packet,i).toString(16));
}
var curr_start, curr_len;
var max_start, max_len;
for(i = 0; i < 8; i++){
if(octets[i] == "0"){
if(curr_start === undefined){
curr_len = 1;
curr_start = i;
}else{
curr_len++;
if(!max_start || curr_len > max_len){
max_start = curr_start;
max_len = curr_len;
}
}
}else{
curr_start = undefined;
}
}
if(max_start !== undefined){
var tosplice = max_start == 0 || (max_start + max_len > 7) ? ":" : "";
octets.splice(max_start, max_len,tosplice);
if(max_len == 8){octets.push("");}
}
ret = octets.join(":");
return ret;
}
if(max_start !== undefined){
var tosplice = max_start === 0 || (max_start + max_len > 7) ? ":" : "";
octets.splice(max_start, max_len,tosplice);
if(max_len == 8){octets.push("");}
}
ret = octets.join(":");
return ret;
}
};

@@ -383,3 +376,3 @@ exports.unpack = unpack;

ret.dhost = ret.ieee802_11Frame.dhost;
delete ret.ieee802_11Frame.dhost
delete ret.ieee802_11Frame.dhost;
}

@@ -434,4 +427,4 @@

ret.ssap = raw_packet[offset++];
if(((ret.dsap == 0xaa) && (ret.ssap == 0xaa))
|| ((ret.dsap == 0x00) && (ret.ssap == 0x00))) {
if(((ret.dsap == 0xaa) && (ret.ssap == 0xaa)) ||
((ret.dsap === 0x00) && (ret.ssap === 0x00))) {
ret.controlField = raw_packet[offset++];

@@ -455,3 +448,3 @@ ret.orgCode = [

return ret;
}
};

@@ -563,3 +556,3 @@ decode.vlan = function (raw_packet, offset) {

// TODO: capture the extensions
//decode.ip6_header(raw_packet, raw_packet[offset], offset + raw_packet[offset+1]);
//decode.ip6_header(raw_packet, raw_packet[offset], offset + raw_packet[offset+1]);
}

@@ -573,16 +566,16 @@ };

ret.version = (raw_packet[offset] & 240) >> 4; // first 4 bits
ret.traffic_class = ((raw_packet[offset] & 15) << 4) + ((raw_packet[offset+1] & 240) >> 4);
ret.flow_label = ((raw_packet[offset + 1] & 15) << 16) +
ret.traffic_class = ((raw_packet[offset] & 15) << 4) + ((raw_packet[offset+1] & 240) >> 4);
ret.flow_label = ((raw_packet[offset + 1] & 15) << 16) +
(raw_packet[offset + 2] << 8) +
raw_packet[offset + 3];
ret.payload_length = unpack.uint16(raw_packet, offset+4);
ret.total_length = ret.payload_length + 40;
ret.next_header = raw_packet[offset+6];
ret.hop_limit = raw_packet[offset+7];
ret.saddr = unpack.ipv6_addr(raw_packet, offset+8);
ret.daddr = unpack.ipv6_addr(raw_packet, offset+24);
ret.header_bytes = 40;
ret.payload_length = unpack.uint16(raw_packet, offset+4);
ret.total_length = ret.payload_length + 40;
ret.next_header = raw_packet[offset+6];
ret.hop_limit = raw_packet[offset+7];
ret.saddr = unpack.ipv6_addr(raw_packet, offset+8);
ret.daddr = unpack.ipv6_addr(raw_packet, offset+24);
ret.header_bytes = 40;
decode.ip6_header(raw_packet, ret.next_header, ret, offset+40);
return ret;
decode.ip6_header(raw_packet, ret.next_header, ret, offset+40);
return ret;
};

@@ -726,19 +719,19 @@

ret.version = ret.max_response_time > 0 ? 2 : 1;
ret.type_desc = "Membership Query"
ret.type_desc = "Membership Query";
break;
case 0x12:
ret.version = 1;
ret.type_desc = "Membership Report"
ret.type_desc = "Membership Report";
break;
case 0x16:
ret.version = 2;
ret.type_desc = "Membership Report"
ret.type_desc = "Membership Report";
break;
case 0x17:
ret.version = 2;
ret.type_desc = "Leave Group"
ret.type_desc = "Leave Group";
break;
case 0x22:
ret.version = 3;
ret.type_desc = "Membership Report"
ret.type_desc = "Membership Report";
// TODO: Decode v3 message

@@ -752,3 +745,3 @@ break;

return ret;
}
};

@@ -975,3 +968,3 @@ decode.udp = function (raw_packet, offset) {

internal_offset++;
if(lenOrPtr == 0x00) {
if(lenOrPtr === 0x00) {
return result;

@@ -1007,3 +1000,3 @@ }

var ch;
while((ch = raw_packet[internal_offset++]) != 0x00) {
while((ch = raw_packet[internal_offset++]) !== 0x00) {
result.name += String.fromCharCode(ch);

@@ -1032,3 +1025,3 @@ }

decodeRRs: function(raw_packet, offset, internal_offset, count, results) {
for (i = 0; i < count; i++) {
for (var i = 0; i < count; i++) {
results[i] = {};

@@ -1218,3 +1211,3 @@ internal_offset = dns_util.decodeRR(raw_packet, offset, internal_offset, results[i]);

print.slltype = function (packet) {
var ret = ""
var ret = "";

@@ -1221,0 +1214,0 @@ switch (packet.link.ethertype) {

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc