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的目的是处理这些情况的异常(在现实世界中很常见)。