0

我编写了这个兄弟脚本来从 Pcap 文件中提取所有文件。问题是它没有提取所有文件。我有一个使用 Wireshark 分析的 http.cap,然后我将 Http 对象导出为 2 个 .html 文件。我的兄弟脚本仅提取其中一个文件。

@load base/files/extract

global hash_number = 100;

event bro_init()
{
    #Log::disable_stream(Conn::LOG);
    mkdir("extract_files");     
}

event file_sniff(f: fa_file, meta: fa_metadata)
{
    local ext = "";

    if ( meta?$mime_type )
        ext = split_string(meta$mime_type, /\//)[1];

    local hash = f$seen_bytes % hash_number;
    mkdir(fmt("./extract_files/%d", hash));

    local file_path = fmt("%d/%s-%s.%s", hash, f$source, f$id, ext);
    Files::add_analyzer(f, Files::ANALYZER_EXTRACT, [$extract_filename=file_path]);
}

我这样称呼我的兄弟脚本:bro -r http.cap myscript.bro. 我使用打印功能调试了 file_sniff 事件,并且只跟踪了 2 个 .html 文件中的 1 个。Bro平台有问题还是我错过了什么? 是我的 pcap 文件。

我也尝试使用这个其他 pcap 文件并得到相同的结果。在 Wireshark 中,我得到了一些图像、js 和 http 文件,而 bro 只提取了 2 个图像。

4

1 回答 1

0

我在 freenode 聊天(频道#Bro)中询问了人们,他们告诉我这些 pcap 无需握手即可连接。因此,与 Wireshark 相反,兄弟不会在没有握手的情况下跟踪连接中的包。这个问题在 bro 的 2.5 版本的更改日志中描述为已解决,但我下载了这个 beta 版本,编译它并得到相同的结果。我不知道是不是因为是测试版。我希望这在未来的版本中得到修复。

于 2016-11-23T18:44:14.573 回答