在Scapy / Kamene python中,如何找到pcap文件的全局头?

问题描述 投票:1回答:1

因此,在C中,从Pcap文件中读取数据时,您可以使用C libpcap库获取与全局头相关的所有信息:

typedef struct pcap_hdr_s {
        guint32 magic_number;   /* magic number */
        guint16 version_major;  /* major version number */
        guint16 version_minor;  /* minor version number */
        gint32  thiszone;       /* GMT to local correction */
        guint32 sigfigs;        /* accuracy of timestamps */
        guint32 snaplen;        /* max length of captured packets, in octets */
        guint32 network;        /* data link type */
} pcap_hdr_t;

因此,我已经搜索了很长时间,但没有找到如何在python库Scapy / Kamene中找到这些变量的方法。

有人可以告诉我Scapy / Kamene的示例代码,它将帮助我找到所有这些变量,或者至少是找到所有这些变量的方式?

python-3.x file scapy pcap libpcap
1个回答
0
投票

截至撰写本文时,这在Scapy中是不可能的。您仍然可以使用python来做到这一点,尽管可以将其读取为字节结构:

import struct

with open("temp.pcap", "rb") as f:
    filebytes = f.read()
pcap_headers = struct.unpack("<IHHIIII", filebytes[:24])
print(pcap_headers)
---
(2712847316, 2, 4, 0, 0, 524288, 1)

[这里,对于macOS系统上的Little-endian,我们使用<解压缩(对于big-endian,我们使用>解压缩)。 H读取4个字节,而I读取2个字节。您可以在Python3 struct documentation中阅读有关格式字符的更多信息。我们可以轻松地检查幻数:

>>> int(str("A1B2C3D4"), 16)
2712847316

看来这确实是带有正确魔术数字的pcap。对于幻数字节顺序的恶作剧,请查看此SO answer(可以有多个正确的pcap“幻数”)。

© www.soinside.com 2019 - 2024. All rights reserved.