Http 从pcap文件中提取TCP有效负载

Http 从pcap文件中提取TCP有效负载,http,tcp,scapy,pcap,tcpdump,Http,Tcp,Scapy,Pcap,Tcpdump,使用tcpdump,我正在捕获网络流量。我感兴趣的是提取实际的TCP有效负载数据,即在我的特定情况下的HTTP流量 我试图使用scapy实现这一点,但我只找到了函数remove\u payload()。有对应的吗?或者,您知道其他提供此类功能的工具吗 不幸的是,我没有找到令人满意的scapy文档 您可以使用Scapy轻松读取pcap,使用rdpcap,然后可以使用数据包的Raw(TCP正上方)层播放HTTP内容: from scapy.all import * pcap = rdpcap("m

使用
tcpdump
,我正在捕获网络流量。我感兴趣的是提取实际的TCP有效负载数据,即在我的特定情况下的HTTP流量

我试图使用
scapy
实现这一点,但我只找到了函数
remove\u payload()
。有对应的吗?或者,您知道其他提供此类功能的工具吗


不幸的是,我没有找到令人满意的scapy文档

您可以使用Scapy轻松读取pcap,使用
rdpcap
,然后可以使用数据包的
Raw
(TCP正上方)层播放HTTP内容:

from scapy.all import *

pcap = rdpcap("my_file.pcap")

for pkt in pcap:
    if Raw in pkt:
        print pkt[Raw]

如果其他用户可能有类似的问题:我最终使用了以下脚本:

infile=infile.pcap
outfile=outfile
ext=txt

rm -f ${outfile}_all.${ext}

for stream in $(tshark -nlr $infile -Y tcp.flags.syn==1 -T fields -e tcp.stream | sort -n | uniq | sed 's/\r//')
do
    echo "Processing stream $stream: ${outfile}_${stream}.${ext}"
    tshark -nlr $infile -qz "follow,tcp,raw,$stream" | tail -n +7 | sed 's/^\s\+//g' | xxd -r -p | tee ${outfile}_${stream}.${ext} >> ${outfile}_all.${ext}
done

对如何将这些字节写入文件而不是控制台有何建议?另外,我不想输出额外的换行符。Python的
open()
write()
处理I/O。Python的
print
函数附加换行符,因此如果您不使用它,而是将字节写入文件,它不应该再存在了。我应该更清楚一点:
write
不允许调用
f.write(pkt[Raw])
(TypeError:必须转换为缓冲区,而不是Raw)。我找不到此问题的解决方案。找到它:
out=open(“out.txt”,“wb”)
out.write(pkt[Raw].load)
。虽然Scapy看起来真的很强大,但遗憾的是根本没有文档。这个答案只有在数据包按顺序传递并且没有丢失的序列号时才有效。使用TCP的目的是处理这些情况的异常(在现实世界中很常见)。