【问题标题】:How can I filter a string from a pcap file using python?如何使用 python 从 pcap 文件中过滤字符串?
【发布时间】:2017-02-27 08:04:13
【问题描述】:

我有一些大型 pcap 文件(每个约 100MB),我想从字典文件 (txt) 中过滤掉那些包含字符串的数据包。字典文件的格式如下:

line 1: word1
line 2: word2
line 3: word3
line 4: word4

所以,如果 word1 出现在 pcap 文件中的任何位置(应该在 TCP 有效负载中?),我想删除该字符串或只是想从 pcap 文件中删除该数据包。 有什么方法可以有效地实现这一点(足够快)?

【问题讨论】:

  • 如果文件包含字符串,您是说要从文件中删除行吗?您可能想澄清您正在尝试做什么,到目前为止您已经尝试过什么,并显示一些输入和预期输出。如果你有内存限制,你能说明你的内存限制吗?
  • 我现在没有任何内存限制。输入文件是一个普通的 pcap 文件,其中包含网络中各种主机的流量。当我跟踪一些主机的 TCP 流时,我在 pcap 文件中发现了许多我不想要的不正确的内容(成人内容)。所以,我想从 pcap 文件中删除那些数据包/帧或行。
  • 由于 stackoverflow 不是代码编写服务,我将您的问题简化为您正在寻找一种使用 Python 修改 pcap 的方法,并且您将自己实现特定的修改。当这样解释时,您的问题与PCAP modification with Python 重复

标签: python filter wireshark pcap


【解决方案1】:

这是我自己想出来的。对于其他用户,Tshark 可用于在 tcp 流中搜索字符串。如果您要搜索字符串并希望输出源和目标的 IP 地址,以下可能会很有用:

tshark -r <capture-file> -T fields -e ip.src -e ip.dst -e data |\
 grep `echo -n "<ascii-string>" | xxd -p` |\
 cut -f 1,2

所以,要实现我在问题中想要的,以下 bash 脚本可能会很有用:

value=`cat bad_words.txt`

for i in ${value[@]}; do tshark -r my_test.pcap -T fields -e ip.src -e ip.dst -e data |\
 grep `echo -n $i | xxd -p` |\
 cut -f 1| uniq > $i; echo $i; done

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-10
    • 2011-01-15
    • 2018-04-26
    • 2012-03-04
    • 2014-06-30
    • 2015-12-24
    • 2022-01-25
    • 1970-01-01
    相关资源
    最近更新 更多