gpt4 book ai didi

c++ - 分析pcap文件的代码

转载 作者:太空狗 更新时间:2023-10-29 21:27:00 37 4
gpt4 key购买 nike

我正在尝试分析一个包含使用 tcpdump 捕获的数据包的文件。我首先想使用 5 元组将数据包分类为流。然后我需要获取每个流中每个数据包的大小和到达间隔时间。我在 wireshark 中尝试了对话列表,但它只给出了流中的数据包数量,而不是关于流中每个数据包的信息。对可以完成这项工作的任何代码(c++ 或 shell 脚本)的建议?谢谢

最佳答案

嗯Nyobe,

如果您还没有听说过 Scapy,我相信您正在尝试做的事情将近乎完美。例如,我写了这个小片段来解析 pcap 字段,并给我一些类似于你正在谈论的使用 Scapy 的东西。

#!/usr/bin/python -tt

from scapy import *
import sys
from datetime import datetime

'''Parse PCAP files into easy to read NETFLOW like output\n
Usage:\n
python cap2netflow.py <[ pcap filename or -l ]>\n
-l is live capture switch\n
ICMP packets print as source ip, type --> dest ip, code'''


def parse_netflow(pkt):
# grabs 'netflow-esqe' fields from packets in a PCAP file
try:
type = pkt.getlayer(IP).proto
except:
pass

snifftime = datetime.fromtimestamp(pkt.time).strftime('%Y-%m-%d %H:%M:%S').split(' ')[1]

if type == 6:
type = 'TCP'
if type == 17:
type = 'UDP'
if type == 1:
type = 'ICMP'

if type == 'TCP' or type == 'UDP':
print( ' '.join([snifftime, type.rjust(4, ' '), str(pkt.getlayer(IP).src).rjust(15, ' ') , str(pkt.getlayer(type).sport).rjust(5, ' ') , '-->' , str(pkt.getlayer(IP).dst).rjust(15, ' ') , str(pkt.getlayer(type).dport).rjust(5, ' ')]))

elif type == 'ICMP':
print(' '.join([snifftime, 'ICMP'.rjust(4, ' '), str(pkt.getlayer(IP).src).rjust(15, ' ') , ('t: '+ str(pkt.getlayer(ICMP).type)).rjust(5, ' '), '-->' , str(pkt.getlayer(IP).dst).rjust(15, ' '), ('c: ' + str(pkt.getlayer(ICMP).code)).rjust(5, ' ')]))

else:
pass
if '-l' in sys.argv:
sniff(prn=parse_netflow)
else:
pkts = rdpcap(sys.argv[1])
print(' '.join(['Date: ',datetime.fromtimestamp(pkts[0].time).strftime('%Y-%m-%d %H:%M:%S').split(' ')[0]]))
for pkt in pkts:
parse_netflow(pkt)

安装 Python 和 Scapy,然后使用它开始。如果您需要任何帮助来解决所有问题,请告诉我,如果您知道 C++,那么这对您来说可能已经很有意义了。

在这里获取 Scapy

http://www.secdev.org/projects/scapy/

此页面上有大量指向有用教程的链接,请记住 Scapy 做的更多,但会专注于讨论 pcap 解析的领域..

希望对您有所帮助!

直流

关于c++ - 分析pcap文件的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10207423/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com