如何从node.js中的pcap获取数据

我想在node.js中获取pcap的数据,如帧号,帧时间,ip等。 但是,我找不到任何我想要的模块。 所以,我试图使用tshark。 但结果值被削减。 那么,我如何得到完美的结果呢?

以下是我试过的一些细节。


var spawn = require('child_process').spawn; var fs = require('fs'); var args = [ '-Tfields', '-e', 'frame.number', '-e', 'frame.time', '-e', 'ip.src', '-e', 'ip.dst', '-e', 'ip.proto', '-e', 'tcp.srcport', '-e', 'tcp.dstport', '-e', 'udp.srcport', '-e', 'udp.srcport', '-e', 'udp.dstport', '-e', 'ip.len', '-E', 'header=y', '-r', 'smallFlows.pcap' ]; var cmd = spawn('tshark', args, { cwd: 'C:\\Program Files\\Wireshark\\' }); cmd.stdout.on('data', function(data) { console.log('done!'); fs.writeFile('result.txt', data, function(err) { if(err) throw err; console.log('It\'s saved!'); }); }); cmd.stderr.on('data', function(data) { }); cmd.on('exit', function(code) { console.log('child process exited with code ' + code); }); 

结果

在这里input图像说明

你不能假定传递给data事件处理程序的数据块的大小。 它可能是一个字节,也可能是subprocess的整个输出。

如果您只想将输出写入文件,则可以将其输出:

 var cmd = spawn('tshark', args, { cwd: 'C:\\Program Files\\Wireshark\\' }); cmd.stdout.pipe(fs.createWriteStream('result.txt')).on('finish', function() { console.log('File completely written'); });