首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在多个pcaps上使用pynids

在多个pcaps上使用pynids
EN

Stack Overflow用户
提问于 2013-11-21 16:53:50
回答 1查看 1.1K关注 0票数 7

我试图使用pynids库解析多个pcap,但是只能解析第一个文件。我看到libnids中有一个函数nids_unregister_tcp,这有帮助吗?不过,我在侏儒身上找不到这种功能。

代码语言:javascript
复制
import nids


def handle_tcp_stream(tcp):
    print "In handle_tcp_stream"


def extract(pcap_file):
    nids.param("tcp_workarounds", 1)
    nids.param("pcap_filter", "tcp")         # bpf restrict to TCP only, note
    nids.param("scan_num_hosts", 0)          # disable portscan detection
    nids.chksum_ctl([('0.0.0.0/0', False)])  # disable checksumming

    nids.param("filename", pcap_file)
    nids.init()
    nids.register_tcp(handle_tcp_stream)

    try:
        nids.run()
    except Exception, e:
        print "Exception ", pcap_file + " ", e


def main():
    extract("a.pcap")
    print "Done"
    extract("a.pcap")


if __name__ == "__main__":
    main()

这是输出:

代码语言:javascript
复制
In handle_tcp_stream
In handle_tcp_stream
In handle_tcp_stream
In handle_tcp_stream
Done
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-30 14:34:29

装订似乎写得不对。

Perl的对应方过去也有过这样的问题:https://rt.cpan.org/Public/Bug/Display.html?id=51107

它基本上可以概括为:

一旦运行()完成,...libnids就清理并删除它的回调。

在这里,https://github.com/MITRECND/pynids/blob/master/nidsmodule.c#L533的错误似乎是相似的

我可能弄错了,但是在前面定义了一个else时,那里的FP使它忽略了实际的注册。else主体应该始终被执行。因此,一个快速的解决办法是:

https://github.com/soulseekah/pynids/commit/8d420e88dbdc340f309db9db7c3b9c2508b1cb80

我对Python有点生疏,但我认为PyObject_Del应该是Py_DECREF。虽然它也适用于删除。

关注https://github.com/MITRECND/pynids/pull/2的更多发展,我相信他们会想出一个更正确的方法来解决这个问题。同时,我所做的一切暂时应该会很好。

糟糕的是,没有任何单元测试来检查是否一切正常。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20127131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档