标签: pcap

如何编写PCAP捕获文件头?

不使用libpcap我试图写一个符合pcap文件格式(格式)的日志文件.WireShark需要读取此文件.到目前为止,我用C++编写了这个:

struct pcapFileHeader {
    uint32_t magic_number;   /* magic number */
    uint16_t version_major;  /* major version number */
    uint16_t version_minor;  /* minor version number */
    int16_t  thiszone;       /* GMT to local correction */
    uint32_t sigfigs;        /* accuracy of timestamps */
    uint32_t snaplen;        /* max length of captured packets, in octets */
    uint32_t network;        /* data link type */
};

ofstream fileout;
fileout.open("file.pcap", ios::trunc);

pcapFileHeader fileHeader;
fileHeader.magic_number = 0xa1b2c3d4;
fileHeader.version_major = 2;
fileHeader.version_minor = 4;
fileHeader.thiszone = 0;
fileHeader.sigfigs = …
Run Code Online (Sandbox Code Playgroud)

c++ logging pcap wireshark libpcap

6
推荐指数
1
解决办法
5400
查看次数

pcap文件和字节顺序

对pcap文件运行file命令将打印出以下内容:

$ file pcap.pcap
pcap.pcap: tcpdump capture file (little-endian) - version 2.4 ....
Run Code Online (Sandbox Code Playgroud)

我一直在寻找一种方法来创建一个big-endian捕获文件,或者在线下载一个样本,但无济于事.

我也很困惑pcap中究竟是小端还是大端.据我所知,libpcap捕获了它在线上看到的内容.

endianness tcpdump pcap libpcap

6
推荐指数
1
解决办法
5975
查看次数

wireshark中两个数据包之间的时间差

我想计算从发送数据包到恢复ACK之间的时间差.我没有在数据包中看到任何与时间戳相关的信息,任何人都可以给我任何关于如何计算差异的指示.

pcap wireshark libpcap

6
推荐指数
3
解决办法
1万
查看次数

如何从pcap文件中提取有效负载信息和数据包的入站/出站比例?

我有一个非常大的pcap文件,我期待创建一个脚本给我(除了wireshark给我的属性),有效负载和数据包的入站/出站比例.

我想在下面使用这样的东西,但我不确定是否有更有效的方法来做到这一点?:

from scapy.all import *
data = "Eavesdrop_Data.pcap"
a = rdpcap(data)
os.system("tshark  -T fields -e _ws.col.Info -e http -e frame.time -e"
      "data.data -w Eavesdrop_Data.pcap > Eavesdrop_Data.txt -c 1000")
os.system("tshark -r Eavesdrop_Data.pcap -Y Eavesdrop_Data_http.pcap")
sessions = a.sessions()
i = 1
for session in sessions:
  http_payload = ""
  for packet in sessions[session]:
    print packet
Run Code Online (Sandbox Code Playgroud)

packet-capture scapy pcap

6
推荐指数
0
解决办法
872
查看次数

如何使用 pcap 从多个接口捕获流量

为了使用 pcap 从多个接口嗅探,我将执行以下操作(在伪代码中):

foreach interface:
    open a file descriptor using pcap_open_live()
    set the file descriptor to non-blocking

while true:
    check for a ready file descriptor using select() or an equivalent I/O multiplexer
    read data from every ready file descriptor using pcap_dispatch()
    handle EndOfStream or Errors and break out of loop if needed
Run Code Online (Sandbox Code Playgroud)

这是否足够或者是否有一些特别的注意事项需要考虑?

c linux interface pcap

5
推荐指数
1
解决办法
7574
查看次数

如何从DARPA pcap文件中获取KDD99功能?

我最近使用DARPA网络流量包及其在KDD99中用于入侵检测评估的派生版本.

请原谅我在计算机网络领域的有限领域知识,我只能从DARPA数据包头中获得9个功能.而不是KDD99中使用的41个功能.

我打算继续我在UNB ISCX入侵检测评估数据集上的工作.但是,我想从pcap文件中获取KDD99中使用的41个功能并将其保存为CSV格式.有没有快速/简单的方法来实现这一目标?

因为之前已经为KDD99做过,有没有可以为我做这个的库或转换器?如果没有,是否有如何从pcap文件派生这些功能的指南?

machine-learning pcap intrusion-detection

5
推荐指数
1
解决办法
5325
查看次数

Pcap Dropping Packets

// Open the ethernet adapter
handle = pcap_open_live("eth0", 65356, 1, 0, errbuf);

// Make sure it opens correctly
if(handle == NULL)
{
    printf("Couldn't open device : %s\n", errbuf);
    exit(1);
}

// Compile filter
if(pcap_compile(handle, &bpf, "udp", 0, PCAP_NETMASK_UNKNOWN))
{
    printf("pcap_compile(): %s\n", pcap_geterr(handle));
    exit(1);
}

// Set Filter
if(pcap_setfilter(handle, &bpf) < 0)
{
    printf("pcap_setfilter(): %s\n", pcap_geterr(handle));
    exit(1);
}

// Set signals
signal(SIGINT, bailout);
signal(SIGTERM, bailout);
signal(SIGQUIT, bailout);

// Setup callback to process the packet
pcap_loop(handle, -1, process_packet, NULL);
Run Code Online (Sandbox Code Playgroud)

process_packet函数摆脱了标题并对数据进行了一些处理.然而,当它花了太长时间,我认为它正在丢弃数据包.

我如何使用pcap监听udp数据包,并能够在不丢失数据包的情况下对数据进行一些处理?

networking udp packet pcap libpcap

5
推荐指数
1
解决办法
4266
查看次数

在Windows 10 python 2.7(64位)上安装pypcap

我正在尝试安装pypcap:https://github.com/dugsong/pypcap/blob/master/INSTALL#L75

我正在尝试在Windows 10 - 64位和python 2.7.11 64位上安装它.我下载了源代码并将其移至c:\pypcap.下载pyrex并安装它.它把wpdpack文件放在c:\wpdpack安装页面中说.创建配置文件并更改了makefile.

我还在mingw他们的网站上安装了基本软件包和g++软件包.

我尝试做:

C:\pypcap> set PATH=%PATH%;c:\MinGW\bin;c:\Python27
C:\pypcap> mingw32-make
Run Code Online (Sandbox Code Playgroud)

它失败了,它得到以下错误:

In file included from C:\Python27\include/Python.h:8:0,
                 from pcap.c:4:
C:\Python27\include/pyconfig.h:68:16: fatal error: io.h: No such file or directory
 #include <io.h>
Run Code Online (Sandbox Code Playgroud)

所以我没有这个io.h文件.我该怎么做才能编译和使用pypcap

在尝试之前我尝试过

C:\pypcap>pip install pypcap
Collecting pypcap
  Using cached pypcap-1.1.4.tar.gz
    Complete output from command python setup.py egg_info:
    pcap.h not found

    ----------------------------------------
Command "python setup.py egg_info" failed with error …
Run Code Online (Sandbox Code Playgroud)

python pcap

5
推荐指数
2
解决办法
8221
查看次数

使用python/scapy迭代pcap文件包

我想使用python/scapy迭代一个pcap文件包.该文件有多个协议.当前迭代是特定于协议的,因此如果下一个数据包来自另一个协议,则迭代会"跳转".我不知道为什么现在这样.无论协议是什么,我都想要数据包.

小例子:

data = 'new.pcap'
zz = rdpcap(data)
sessions = zz.sessions()

for session in sessions:
  for packet in sessions[session]:
    eth_src = packet[Ether].src 
    eth_type = packet[Ether].type

if eth_src == "00:22:97:04:06:b9" and eth_type == 0x8100:       
  # do anything
elif eth_src == "00:22:97:04:06:b9" and eth_type == 0x22f0: 
  # do anything
else:
  # do anything 
Run Code Online (Sandbox Code Playgroud)

有谁知道原因?

scapy pcap python-2.7

5
推荐指数
1
解决办法
3193
查看次数

在环回上重放 pcap

我有一组pcap包含来自两台主机的 UDP 流量的文件,并且必须定期对此流量执行一些分析。

理想情况下,我希望避免频繁设置具有特定 IP 的本地接口等来重播这些文件。我希望能够简单地在我的环回接口上重播它们,使用tcprewrite更改pcap.

这是它目前的样子:

# Remove mac addresses for loopback interface
# Remove VLAN tags
tcprewrite \
  --enet-smac=00:00:00:00:00:00 \
  --enet-dmac=00:00:00:00:00:00 \
  --enet-vlan=del \
  --infile="${INFILE}" \
  --outfile="${OUTFILE}.tmp"

# Change source and destination IP to loopback
# Regenerate IP checksums
tcprewrite \
  --srcipmap=0.0.0.0/0:127.0.0.1 \
  --dstipmap=0.0.0.0/0:127.0.0.1 \
  --fixcsum \
  --infile="${OUTFILE}.tmp" \
  --outfile="${OUTFILE}"
Run Code Online (Sandbox Code Playgroud)

看起来差不多可以工作了。然后我可以简单地使用我的环回重播这些文件,tcpreplay并且我看到数据包使用tcpdumpon lo。尽管如此,似乎任何常规用户空间套接字都看不到环回上的此流量。

据我了解,这似乎与Linux上环回接口处理第2层的方式有关。看来我需要将第 2 层标头 (DLT) 从普通协议重写ethernetnullBSD 环回使用的协议。

任何有将以太网上捕获的 UDP 流量重放到环回接口的经验的人将不胜感激。pcap我不知道如何使用/来实现这一点,或者是否可行 …

loopback tcpdump pcap tcpreplay

5
推荐指数
0
解决办法
1017
查看次数