BPF 程序无效 - pcap 嗅探
BPF program is not valid - pcap sniffing
大家好,我正在尝试使用 pcap 库嗅探数据包。我只有一个问题无法弄清楚:ERROR: BPF program is not valid
.
我正在尝试开始嗅探,但这个错误阻止了我,我在网上搜索但一无所获。
我的代码基于这个程序:https://github.com/levans248/packetSniffingAndSpoofing/blob/master/sniff.c
这是由于 SEED 实验室的缘故,我知道人们在做家庭作业时不会帮忙,但我只需要弄清楚为什么会这样,我不知道。
#include <pcap.h>
#include <stdio.h>
#include <stdlib.h>
#include <arpa/inet.h>
void got_packet(u_char *args, const struct pcap_pkthdr *header, const u_char *packet)
{
printf("Got a packet \n");
}
int main()
{
pcap_t *handle;
char errbuf[PCAP_ERRBUF_SIZE];
struct bpf_program fp;
char filter_exp[] = "ip proto icmp";
bpf_u_int32 net;
// Open live pcap session
handle = pcap_open_live("enp0s3", BUFSIZ, 1, 1000, errbuf);
// Compile Filter into the Berkeley Packet Filter (BPF)
pcap_compile(handle, &fp, filter_exp, 0, net);
if (pcap_setfilter(handle, &fp) == -1)
{
pcap_perror(handle, "ERROR");
exit(EXIT_FAILURE);
}
// Sniffing..
pcap_loop(handle, -1, got_packet, NULL);
pcap_close(handle);
return 0;
}
filter_exp 中存在语法错误,
我正在研究 C-Shell 所以需要更改为 ip proto \icmp
非常感谢大家!
大家好,我正在尝试使用 pcap 库嗅探数据包。我只有一个问题无法弄清楚:ERROR: BPF program is not valid
.
我正在尝试开始嗅探,但这个错误阻止了我,我在网上搜索但一无所获。
我的代码基于这个程序:https://github.com/levans248/packetSniffingAndSpoofing/blob/master/sniff.c
这是由于 SEED 实验室的缘故,我知道人们在做家庭作业时不会帮忙,但我只需要弄清楚为什么会这样,我不知道。
#include <pcap.h>
#include <stdio.h>
#include <stdlib.h>
#include <arpa/inet.h>
void got_packet(u_char *args, const struct pcap_pkthdr *header, const u_char *packet)
{
printf("Got a packet \n");
}
int main()
{
pcap_t *handle;
char errbuf[PCAP_ERRBUF_SIZE];
struct bpf_program fp;
char filter_exp[] = "ip proto icmp";
bpf_u_int32 net;
// Open live pcap session
handle = pcap_open_live("enp0s3", BUFSIZ, 1, 1000, errbuf);
// Compile Filter into the Berkeley Packet Filter (BPF)
pcap_compile(handle, &fp, filter_exp, 0, net);
if (pcap_setfilter(handle, &fp) == -1)
{
pcap_perror(handle, "ERROR");
exit(EXIT_FAILURE);
}
// Sniffing..
pcap_loop(handle, -1, got_packet, NULL);
pcap_close(handle);
return 0;
}
filter_exp 中存在语法错误, 我正在研究 C-Shell 所以需要更改为 ip proto \icmp
非常感谢大家!