【问题标题】:How to get data from pcap in node.js如何从 node.js 中的 pcap 获取数据
【发布时间】:2016-12-17 17:42:23
【问题描述】:

我想在 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);
});

结果

enter image description here

【问题讨论】:

  • 我也看到了这个包。但是我的环境是 Windows 10。当我安装它时,发生了 node-gyp 重建问题。解决这个问题太难了,解决方案不适用……
  • FWIW 还有 cap 支持 Windows。
  • 'cap' 有同样的问题。我认为它是连接的'socketwatcher 模块'。
  • 啊,我的错。然而,cap 也有关于node-gyp rebuild 相关The build tools for Visual Studio 2010 的问题。为了解决这个问题,我安装了构建工具。尽管如此,我还没有解决这个问题。

标签: javascript node.js pcap fs spawn


【解决方案1】:

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

如果您只是想将输出写入文件,则可以通过管道传输它:

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');
});

【讨论】:

  • 我解决了cmd.pipe() -> cmd.stdout.pipe()。谢谢,mscdex!
猜你喜欢
  • 2018-04-14
  • 1970-01-01
  • 1970-01-01
  • 2012-03-07
  • 1970-01-01
  • 1970-01-01
  • 2015-07-30
  • 2012-09-08
  • 2010-10-15
相关资源
最近更新 更多