Falha de segmentação

1. Falha de segmentação

Lucas jose Pereia de Araujo
LucasJPA

(usa Debian)

Enviado em 01/01/2020 - 16:25h

Não consigo entender porque o código está dando falha de segmentação, está igual ao exemplo que peguei. O que causa esses erros ? Segue o código.
Desde já agradeço qualquer ajuda.

#include <stdio.h>
#include <pcap.h>
#include <time.h>
#include <netinet/in.h>
#include <netinet/if_ether.h>

void print_packet_info(const u_char *packet, struct pcap_pkthdr packet_header);

int main(int argc, char const *argv[])
{
char *device;
char error_buffer[PCAP_ERRBUF_SIZE];
pcap_t *handle;
const u_char *packet;
struct pcap_pkthdr packet_header;
int packet_count_limit = 1;
int timeout_limit = 10000; //tempo em milisegundos

device = pcap_lookupdev(error_buffer);
if (device == NULL)
{
printf("Erro ao encontrar dispositivo: %s\n", error_buffer);
return 1;
}

//abrindo o dispositivo para captura
handle = pcap_open_live(device, BUFSIZ, packet_count_limit, timeout_limit, error_buffer);

//O código captura um pacote. Se não houver tráfico na rede e o tempo for atingido, será retornado NULL
packet = pcap_next(handle, &packet_header);
if (packet == NULL)
{
printf("Nenhum pacote encontrado. \n");
return 2;
}

print_packet_info(packet, packet_header);

return 0;
}

void print_packet_info(const u_char *packet, struct pcap_pkthdr packet_header)
{
printf("Tamanho capturado do pacote: %d\n", packet_header.caplen);
printf("Tamanho total do pacote: %d\n", packet_header.len);
}



  


2. Re: Falha de segmentação

Adriano Siqueira
adrisiq

(usa Linux Mint)

Enviado em 01/01/2020 - 19:54h

Pode ser um loop recursivo infinito. Tenta depurar o código para ver onde isso acontece.


3. Re: Falha de segmentação

Paulo
paulo1205

(usa Ubuntu)

Enviado em 02/01/2020 - 03:17h

Você não testou o valor de handle depois da chamada a pcap_open_live(). O problema parece estar ali.

O acesso a instrumentos de captura de pacotes requer permissões especiais. Você rodou o programa como root?


... “Principium sapientiae timor Domini, et scientia sanctorum prudentia.” (Proverbia 9:10)






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts