概览
@cto.af/pcap-ng-parser是一个基于流的模块来解码,打印和分析 网络交通包。 通过这个模块,您可以读取已有的 .pcap或.pcapng文件或将其连接到活动流.
执行:
安装
本模块可通过 npm 登记。 。 。 .
$ npm install @cto.af/pcap-ng-parser
使用量
请注意,在任何现代联署材料中,一揽子方案应单独运作 运行时间(包括浏览器). 然而,从文件读取需要一些 运行时间依赖代码 .
Via.pcapng 节点文件
以下是一个简单的例子,说明如何从一个有效的.pcapng文件登录出包到控制台 myfile.pcapng。 。 。 .
import {PCAPNGParser} from '@cto.af/pcap-ng-parser';
import fs from 'node:fs/promises';
const parser = new PCAPNGParser();
const file = await fs.open('examples/res/myfile.pcapng');
parser
.on('data', parsedPacket => {
console.log(parsedPacket);
})
.on('interface', interfaceInfo => {
console.log(interfaceInfo);
});
file.readableWebStream().pipeTo(parser);
在上述例子中,我们从文件和管子创建出一个新的可读结构
实例 parser 它将引发各种事件.
.pcapng 文件在德诺
import {PCAPNGParser} from '@cto.af/pcap-ng-parser';
const pcapNgParser = new PCAPNGParser();
pcapNgParser
.on('data', parsedPacket => {
console.log(parsedPacket);
});
const f = await Deno.open('examples/res/myfile.pcapng');
f.readable.pipeTo(pcapNgParser);
Bun 中的 . pcapng 文件
import {PCAPNGParser} from './src/index.ts';
const pcapNgParser = new PCAPNGParser();
pcapNgParser
.on('data', parsedPacket => {
console.log(parsedPacket);
})
.on('interface', interfaceInfo => {
console.log(interfaceInfo);
});
const f = Bun.file('examples/res/myfile.pcapng');
f.stream().pipeTo(pcapNgParser);
节点的 TCPDump 视频
您也可以使用 TCPDump 管道 process.stdin 用于命令行交互.
import {PCAPNGParser} from '@cto.af/pcap-ng-parser';
import {Readable} from 'node:stream';
const pcapNgParser = new PCAPNGParser();
pcapNgParser
.on('data', parsedPacket => {
console.log(parsedPacket);
})
.on('interface', interfaceInfo => {
console.log(interfaceInfo);
});
Readable.toWeb(process.stdin).pipeTo(pcapNgParser);
$ sudo tcpdump -w - | node exampleAbove.js
请注意,为了使用tcpdump,你必须是一个超级用户。 参见 tcpdump 文档 详细情况.
进一步注意:如果指定一个接口来与"-i"收听,一些系统中的tcpdump会使用旧的PCAP格式,PAPPNGParser会读取该格式的精细.
其他实例
其他例子可见于 示例目录。 。 。 .
它允许您从样本抓取文件( 默认) 读取文件( 如果您 在命令行上指定一个文件名,或 stdin(如果指定“-”为 输入文件).
类 PAPPNGParser
PAPPNGParser 是一个扩展 流线。 变形 类编辑 PAPPNGParser级起火事件如下:
data: 解析了增强包或简单块.section: 解析了一节标题块.interface: 一个界面块已被解析 .names: 解析了名称分辨率块.secrets:解密密块被解析出.stats: 解析了界面统计块.custom: 自定义块已被解析 .blockType: 已收到未知块类型 .
见全 API 文档 页:1 事件参数的类型.
捐款
参见 贡献指南 详细介绍如何捐款.
许可证
本模块由BSD-3开放软件许可证覆盖. 评议 许可证文档 更多信息.
证明
这个代码是从 https://github.com/ CollinearGroup/pcap-ng-parser 页面存档备份,存于互联网档案馆 应付款 无法维持 为简化事项,版权仍属于 原始作者,包括在此寄存器中所做的所有更改. 如果 原作者联系我(最容易的是在这里提出问题),所有 这可以改变 任何适合他们的方式.
增加了以下内容:
- 固定临界范围错误
- 通过去除已破损的 完成代码, 使“ 结束” 和“ 完成” 事件正确起火 。 注意您需要为“ 数据” 添加一个事件, 才能获取这些事件或“ 关闭 ” 就像所有节点变流一样.
- 已转换为 ES6(震动)
- 已添加类型脚本
- 最新的依赖关系
- 在 @cto.af 风格中添加了林丁( 以方便维护)
- 添加测试覆盖范围
- 将“ 主” 分支重新命名为“ 主要 ”
- 添加用于测试和出版的 Github 动作
- 在读取和代码中固定断开的链接
- 固定问题,可选择
- 现在读取所支持的块类型的所有选项, 当已知时给出它们的名称
- 在输入流中读取出意料大小的固定问题
- 添加中止符号支持
- 添加对流中多个区头块的支持, 包括 异能的改变.
- 添加对简单包块的支持 .
- 添加对名称分辨率块的支持 .
- 添加对界面统计块的支持 .
- 添加了解密密块的初始支持 .
- 添加自定义块支持 .
- 添加增强包子旗解码.
- 在JS Dates中增加了转换时间戳. 尚未处理时区 。 (尖叫声)
- 添加生成 API 文档 .
- 添加了旧.pcap格式的执行,带有自动检测功能.
- 添加了链接Type名称的解码 .
- 已切换到网络流和Uint8Array,用于可移植性. (尖叫声)