簡體   English   中英

如何從Node.js中的pcap獲取數據

[英]How to get data from pcap in node.js

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

結果

在此處輸入圖片說明

您無法假設傳遞給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');
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM