Nfstream:一款易于扩展的网络数据分析框架

枫少@KillBoy
枫少@KillBoy
管理员
220
文章
0
粉丝
资源分享398,6161字数 729阅读2分25秒阅读模式
AI智能摘要
你是否还在为网络流量分析的复杂性而头疼?Nfstream来了——一个基于Python的高性能网络数据框架,集快速、灵活、可扩展于一身。它支持实时或离线PCAP分析,内置深度包检测引擎,可精准识别TLS、QUIC、DNS等七层应用协议。更酷的是,通过NFPlugin机制,你能用几行代码轻松扩展功能,甚至集成机器学习模型。无论是做安全研究、流量建模还是网络监控,它都能将繁琐的数据处理简化为几行代码,让分析变得直观高效。想亲手操控海量网络流?这篇文章带你从安装到自定义插件全程实战。
— AI 生成的文章内容摘要

Nfstream:一款易于扩展的网络数据分析框架-图片1

Nfstream本质上来说是一款Python包,它可以提供快速、灵活且有效的数据结构,支持针对在线或离线状态的网络数据进行分析,这种方式既简单又直观。在Nfstream的帮助下,广大研究人员可以直接在自己的Python代码中集成数据分析功能,并对真实场景下的实际网络数据进行分析。除此之外,Nfstream目前仍处于开发阶段,该项目将会为研究人员提供各种实验数据复现功能,并成为一款通用的网络数据处理与分析框架。

功能介绍

1、性能:Nfstream的运行速度非常快(集成pypy3后,速度将会快10倍),而且对CPU和内存的需求并不大;

2、七层可见度:Nfstream深度数据包检测引擎基于nDPI实现,它允许Nfstream执行可靠的加密应用识别与元数据提取(例如TLS, QUIC, TOR, HTTP, SSH, DNS);

3、灵活性:引入NFPlugin插件概念,便于实现功能扩展;

4、机器学习:支持以NFPlugin的形式添加训练模型;

工具依赖

广大研究人员可以运行下列命令来完成NFPlugin依赖组件的配置:

apt-get install libpcap-dev

工具下载

使用pip安装

如果你习惯使用pip的话,你可以直接使用pip3命令安装本项目的最新版本:

pip3 install nfstream

源码构建

广大研究人员也可以使用下列命令将项目源码克隆至本地:

git clone https://github.com/aouinizied/nfstream.git

工具使用

当你在处理一个非常大的pcap文件时,如果你只想将其聚合为网络流,那么你只需要实现下列几行代码,剩下的就可以交给Nfstream来完成了:

from nfstream import NFStreamer
       my_awesome_streamer = NFStreamer(source="facebook.pcap") # or network interface (source="eth0")
       for flow in my_awesome_streamer:
           print(flow)  # print it, append to pandas Dataframe or whatever you want :) !
    NFEntry(
            id=0,
            first_seen=1472393122365,
            last_seen=1472393123665,
            version=4,
            src_port=52066,
            dst_port=443,
            protocol=6,
            vlan_id=0,
            src_ip='192.168.43.18',
            dst_ip='66.220.156.68',
            total_packets=19,
            total_bytes=5745,
            duration=1300,
            src2dst_packets=9,
            src2dst_bytes=1345,
            dst2src_packets=10,
            dst2src_bytes=4400,
            expiration_id=0,
            master_protocol=91,
            app_protocol=119,
            application_name='TLS.Facebook',
            category_name='SocialNetwork',
            client_info='facebook.com',
            server_info='*.facebook.com',
            j3a_client='bfcc1a3891601edb4f137ab7ab25b840',
            j3a_server='2d1e***17ece335c24904f516ad5da12'
    )

将pcap转换为Pandas DataFrame:

import pandas as pd 
    streamer_awesome = NFStreamer(source='devil.pcap')
    data = []
    for flow in streamer_awesome:
       data.append(flow.to_namedtuple())
    my_df = pd.DataFrame(data=data)
    my_df.head(5) # Enjoy!

如果你没找到特定的数据流功能,你可以通过几行代码来向Nfstream增加插件:

from nfstream import NFPlugin
    class my_awesome_plugin(NFPlugin):
        def on_update(self, obs, entry):
            if obs.length >= 666:
                entry.my_awesome_plugin += 1
    streamer_awesome = NFStreamer(source='devil.pcap', plugins=[my_awesome_plugin()])
    for flow in streamer_awesome:
       print(flow.my_awesome_plugin) # see your dynamically created metric in generated flows

更多详细的使用方法,请参考Nfstream的官方文档:【点我获取

项目地址

NFPlugin:【GitHub传送门

https://www.freebuf.com/sectool/226570.html

 
枫少@KillBoy
评论  39  访客  39
    • 铁匠赵铁
      铁匠赵铁 0

      这玩意儿搞网络流量分析挺顺手的,我试了下解析pcap秒出结果😂

        • 温顺绵羊
          温顺绵羊 0

          @ 铁匠赵铁 哇,秒出结果真的省事,等我也装装👍

          • TechTitan
            TechTitan 0

            @ 铁匠赵铁 秒出结果真的爽,省得等半天。下次可以直接接到数据库里,省事。

          • IronBridge
            IronBridge 1

            有人试过在树莓派上跑吗?想移植但怕性能不够

            • 星斗剑仙
              星斗剑仙 0

              pypy3加速10倍是真猛,不过我这边编译出错了,求问有人遇到libpcap依赖问题吗?

              • 雪梨糖糖
                雪梨糖糖 0

                之前搞IDS的时候折腾好久,要是早知道这工具能直接提TLS指纹就好了

                • 凸碧堂
                  凸碧堂 0

                  插件机制设计得有点意思,但我加了个自定义字段怎么老是None啊

                    • 慢生活家
                      慢生活家 0

                      @ 凸碧堂 自定义字段记得在__init__里初始化,不然默认None

                      • 海未
                        海未 1

                        @ 凸碧堂 自定义字段默认是None,得在on_init里先给它初始化值,才会在更新时生效。

                      • 星河有梦
                        星河有梦 0

                        社交平台识别这块准不准?我抓了一堆流量发现Facebook标记成Unknown了

                          • 暗夜收割者
                            暗夜收割者 1

                            @ 星河有梦 可能是库版本老了,升级后会不会更准?

                          • 茶禅悦心
                            茶禅悦心 0

                            感觉还行

                              • 量子触手
                                量子触手 0

                                @ 茶禅悦心 还行是还行,就是文档太简略了,新手有点懵

                              • 漏气的河豚
                                漏气的河豚 0

                                写代码最烦造轮子,这个直接塞进pandas太方便了

                                • 花落砚
                                  花落砚 0

                                  七层都看得到?那岂不是连QUIC加密包都能拆?有点东西

                                    • 人群回音
                                      人群回音 0

                                      @ 花落砚 我之前想拆QUIC,卡在TLS层,真想再深入玩玩

                                      • 砰砰
                                        砰砰 0

                                        @ 花落砚 QUIC都敢拆?那nDPI底层是不是得魔改啊🤔

                                      • 死神眷属
                                        死神眷属 0

                                        看不懂

                                        • 丝路行者
                                          丝路行者 0

                                          这框架跑大流量pcap居然不卡,比我手写的快多了

                                          • 幻影逐风
                                            幻影逐风 0

                                            TLS指纹提取真香,之前用tshark脚本跑一天,现在十分钟搞定

                                            • 梦之灯
                                              梦之灯 1

                                              libpcap-dev装了还是报错,Ubuntu 22.04有人成功过吗?

                                              • 火锅狂热粉丝
                                                火锅狂热粉丝 0

                                                树莓派4B试了,小pcap能跑,大文件直接内存爆了😅

                                                • 云淡风轻
                                                  云淡风轻 0

                                                  Facebook标成Unknown?我这边连微信都识别成HTTP了,有点迷

                                                  • the_social_paradox
                                                    the_social_paradox 1

                                                    插件机制挺有意思,可以自己加功能

                                                    • SynthWave
                                                      SynthWave 0

                                                      插件写完发现不能动态加字段,得重启流解析,坑

                                                      • 幽夜咒术师
                                                        幽夜咒术师 0

                                                        pypy3加速确实猛,但Windows下根本跑不起来啊!

                                                          • DripQueen
                                                            DripQueen 0

                                                            @ 幽夜咒术师 装了VC++运行时后就能跑了。

                                                          • 孤独的灯塔
                                                            孤独的灯塔 0

                                                            看起来可以简化不少数据分析的活儿。

                                                            • 情感工程师
                                                              情感工程师 1

                                                              Windows下编译麻烦不?

                                                              • 梦游者之泪
                                                                梦游者之泪 0

                                                                插件机制自由度挺高,可以自己写点小功能。

                                                                • 碎影迷踪
                                                                  碎影迷踪 0

                                                                  之前手动分析pcap文件眼睛都快看花了。

                                                                  • 玫瑰红霞
                                                                    玫瑰红霞 0

                                                                    识别不准的问题会不会是插件没装全?

                                                                    • 墨家弟子
                                                                      墨家弟子 0

                                                                      树莓派上跑大流量有点难吧,性能瓶颈在那摆着。

                                                                      • 调皮的小恶魔
                                                                        调皮的小恶魔 0

                                                                        要是能支持实时流量分析就更好了。

                                                                        • 玛雅遗迹
                                                                          玛雅遗迹 0

                                                                          用这个框架写毕业论文的数据分析部分应该能省不少时间。

                                                                          • SerenadeOfDreams
                                                                            SerenadeOfDreams 1

                                                                            识别TLS和QUIC还挺实用的。

                                                                              • RavenousDemon
                                                                                RavenousDemon 1

                                                                                @ SerenadeOfDreams 加密流量识别现在越来越重要了

                                                                              • 黎明之刃
                                                                                黎明之刃 1

                                                                                依赖问题折腾半天,最后还是用docker跑起来的。

                                                                              匿名

                                                                              发表评论

                                                                              匿名网友

                                                                              拖动滑块以完成验证